Professional Documents
Culture Documents
Vezbe 01 2022
Vezbe 01 2022
Vezbe 01 2022
Вeжбе 1
Увод и архитектура RISC-V
Листа предмета:
ir2os1@lists.etf.rs
Оперативни системи 1, ЕТФ 2022.
Увод – системски позиви
• Системски позиви – рутине које обављају операције
са хардверским уређајима рачунара, оне се налазе у
меморији рачунара и могу се користити као услуге.
Други (кориснички) програми могу да их позивају као
системске позиве.
• Примери системских (услуга) позива које се могу
позивати из корисничких програма на језику C/C++:
– exit
– U/I токови (getc, putc, printf…)
– рад са фајловима
Све ове услуге су кориснику (програмеру) доступне кроз
стандардне библиотеке језика C/C++ (stdio.h, stdlib.h, ...) у виду
функција које само позива, а саме функције врше интеракцију
са хардверским уређајима користећи системске позиве.
Оперативни системи 1, ЕТФ 2021. 2
Увод – командна линија (CLI, console)
7
Оперативни системи 1, ЕТФ 2022.
Системски регистри
• Приступа им се помоћу инструкција csr (Control and Status
Registers) типа
• Доступни само у системском режиму (изузетак се генерише у
корисничком)
• sstatus – статусни регистар
• sip и sie – регистри за прекиде (sip-пристигли захтеве и sie
забрана прекида)
• scratch – привремени регистар
• sepc – сачувана вредност регистра pc из корисничког режима
када се деси изузетак
• scause – опис разлога за прелазак у системски режим
• stvec – адреса прекидне рутине поравната на 4 бајта
12
Позив функције (1/2)
• Преводилац примењује следеће:
• s0..s11 регистре функција чува
• sp функција чува
• остале општенаменске регистре чува позивалац функције
• параметри се преносе преко регистара а0..а7, или кроз
меморију (на стеку или на неком другом месту на које указује
неки од регистара а0..а7)
• повратна вредност се преноси преко а0..а1, или кроз меморију
• Како се преводи позив и тело следеће функције:
int f(int a, int b) {
int c;
c = a + b;
return g(c);
}
Позив:
ld a1, ... // b parametar
ld a0, ... // a parametar
auipc ra, 0x0
jalr -68(ra) call f
mv ..., a0 // povratna vrednost
13
Оперативни системи 1, ЕТФ 2022.
Позив функције (2/2)
više adrese
f:
addi sp, sp, -16 s0
sd ra, 8(sp) Povratna adresa
sd s0, 0(sp)
addi s0, sp, 16 Stari s0
Okvir izvršavanja
addw a0, a0, a1 tekuće procedure
auipc ra, 0x0 Sačuvani registri i (stack frame)
call g
jalr -48(ra) lokalne promenljive
niže adrese