Professional Documents
Culture Documents
PROGRAMI U IZVOĐENJU
SVEN GOTOVAC
Izvođenje programa na najnižoj razini
PC 1000 Program
IR ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5
R4 35
R5 55 Podaci
11 ALU
R6
11 2000
22 2004
0 0 2008
R30
R31 0
PROCESOR MEMORIJA
Dohvat i izvođenje naredbe
PC 1000
IR ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5
R4 35
R5 55
11 ALU
R6
11 2000
22 2004
0 0 2008
R30
R31 0
Dohvat naredbe (1. takt)
PC 1004
1000
IR ADD R1, R2, R3 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5
R4 35
R5 55
11 ALU
R6
11 2000
22 2004
0 0 2008
R30
R31 0
Dekodiranje i dohvat 1. operanda (takt 2)
PC 1004
IR ADD R1, R2, R3 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5 10
R4 35
R5 55
11 ALU
R6
11 2000
22 2004
0 0 2008
R30
R31 0
Dohvat 2. operanda (takt 3)
PC 1004
IR ADD R1, R2, R3 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5 10 5
R4 35
R5 55
11 ALU
R6
11 2000
22 2004
0 0 2008
R30
R31 0
Izvođenje operacije (takt 4)
PC 1004
IR ADD R1, R2, R3 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5 10 5
R4 35
R5 55
11 ALU
R6 ADD
11 2000
15 22 2004
0 0 2008
R30
R31 0
Pohrana rezultata (writeback) (takt 5)
PC 1004
IR ADD R1, R2, R3 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R1 20
15 LD R2, R0, 4 1012
R3 5 10 5
R4 35
R5 55
11 ALU
R6
11 2000
15 22 2004
0 0 2008
R30
R31 0
Dohvat i izvođenje sljedeće naredbe
PC 1004
IR ADD R1, R2, R3 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5
R4 35
R5 55
11 ALU
R6
11 2000
22 2004
0 0 2008
R30
R31 0
Dohvat naredbe (1. takt)
PC 1008
1004
IR ADD R1,
R4, R2,
R5, R3
R6 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5
R4 35
R5 55
11 ALU
R6
11 2000
22 2004
0 0 2008
R30
R31 0
Dekodiranje i dohvat 1. operanda (takt 2)
PC 1008
IR ADD R4, R5, R6 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5 55
R4 35
R5 55
11 ALU
R6
11 2000
22 2004
0 0 2008
R30
R31 0
Dohvat 2. operanda (takt 3)
PC 1008
IR ADD R4, R5, R6 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5 55 11
R4 35
R5 55
11 ALU
R6
11 2000
22 2004
0 0 2008
R30
R31 0
Izvođenje operacije (takt 4)
PC 1008
IR ADD R4, R5, R6 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5 55 11
R4 35
R5 55
11 ALU
R6
ADD
11 2000
66 22 2004
0 0 2008
R30
R31 0
Pohrana rezultata (writeback) (takt 5)
PC 1008
IR ADD R4, R5, R6 ADD R1, R2, R3 1000
ADD R4, R5, R6 1004
R3 5 55 11
R4 66
35
R5 55
11 ALU
R6
11 2000
66 22 2004
0 0 2008
R30
R31 0
MEMORIJA
PROCESOR
PROGRAM 1
UPRAVLJAČKA
JEDINICA
PROGRAM 2
IR
PC
PROGRAM 3
ALU PROGRAM 4
Koncept procesa
• Operacijski sustav izvodi različite procese:
– Batch system – jobs
– Time-shared systems – Korisnički (user programs or tasks)
• Koristi se naziv zadatak, posao ili proces task, job process
• Proces – program u izvođenju
• Proces izvodi sekvencijalno naredbe
• Proces – aktivan entitet koji mijenja sadržaje spremnika i memorijskih
lokacija
• Program – pasivan entitet (kod na disku)
• Proces sadrži:
– program counter
– registers
– program section
– stack
– data section
Memorija dodijeljena procesu
Max
Stog
(Stack)
Heap
Podaci
(Data)
Program
(Code)
Min
MEMORIJA
T0
LA R0,120 100
104
Proces 1
LD R1,R0,0
PROCESOR LD R2,R0,4 108
112
ADD R3,R1,R2
ST R3,R0,8 116
PC 100
15 120
IR 6 124
0 128
R0 0
R1 0
R2 0
0 LA R0,320 300
R3
ALU 304
Proces 2
LD R1,R0,0
LD R2,R0,4 308
R31 0 ADD R3,R1,R2 312
ST R3,R0,8 316
14 320
8 324
0 328
MEMORIJA
T1
LA R0,120 100
104
Proces 1
LD R1,R0,0
PROCESOR LD R2,R0,4 108
112
ADD R3,R1,R2
ST R3,R0,8 116
PC 104
15 120
IR LA R0,120 6 124
0 128
R0 120
R1 0
R2 0
0 LA R0,320 300
R3
ALU 304
Proces 2
LD R1,R0,0
LD R2,R0,4 308
R31 0 ADD R3,R1,R2 312
ST R3,R0,8 316
14 320
8 324
0 328
MEMORIJA
T2
LA R0,120 100
104
Proces 1
LD R1,R0,0
PROCESOR LD R2,R0,4 108
112
ADD R3,R1,R2
ST R3,R0,8 116
PC 108
15 120
IR LD R1,R0,0 6 124
0 128
R0 120
R1 15
R2 0
0 LA R0,320 300
R3
ALU 304
Proces 2
LD R1,R0,0
LD R2,R0,4 308
R31 0 ADD R3,R1,R2 312
ST R3,R0,8 316
14 320
8 324
0 328
MEMORIJA
T3
LA R0,120 100
104
Proces 1
LD R1,R0,0
PROCESOR LD R2,R0,4 108
112
ADD R3,R1,R2
ST R3,R0,8 116
PC 112
15 120
IR LD R2,R0,4 6 124
0 128
R0 120
R1 15
R2 6
0 LA R0,320 300
R3
ALU 304
Proces 2
LD R1,R0,0
LD R2,R0,4 308
R31 0 ADD R3,R1,R2 312
ST R3,R0,8 316
14 320
8 324
0 328
Prekid i prijelaz na Proces 2
Stanje Procesa 1:
PC=112, R0=120, R1=15, R2=6,
R3-R31=0
MEMORIJA
T4
LA R0,120 100
104
Proces 1
LD R1,R0,0
PROCESOR LD R2,R0,4 108
112
ADD R3,R1,R2
ST R3,R0,8 116
PC 300
15 120
IR 6 124
0 128
R0 0
R1 0
R2 0
0 LA R0,320 300
R3
ALU 304
Proces 2
LD R1,R0,0
LD R2,R0,4 308
R31 0 ADD R3,R1,R2 312
ST R3,R0,8 316
14 320
8 324
0 328
Nakon prijelaza na Proces 2
Inicijalno stanje Procesa 2:
PC=300, R0-R31=0
MEMORIJA
T5
LA R0,120 100
104
Proces 1
LD R1,R0,0
PROCESOR LD R2,R0,4 108
112
ADD R3,R1,R2
ST R3,R0,8 116
PC 304
15 120
IR LA R0,320 6 124
0 128
R0 320
R1 0
R2 0
0 LA R0,320 300
R3
ALU 304
Proces 2
LD R1,R0,0
LD R2,R0,4 308
R31 0 ADD R3,R1,R2 312
ST R3,R0,8 316
14 320
8 324
0 328
MEMORIJA
T6
LA R0,120 100
104
Proces 1
LD R1,R0,0
PROCESOR LD R2,R0,4 108
112
ADD R3,R1,R2
ST R3,R0,8 116
PC 308
15 120
IR LD R1,R0,0 6 124
0 128
R0 320
R1 14
R2 0
0 LA R0,320 300
R3
ALU 304
Proces 2
LD R1,R0,0
LD R2,R0,4 308
R31 0 ADD R3,R1,R2 312
ST R3,R0,8 316
14 320
8 324
0 328
MEMORIJA
T7
LA R0,120 100
104
Proces 1
LD R1,R0,0
PROCESOR LD R2,R0,4 108
112
ADD R3,R1,R2
ST R3,R0,8 116
PC 312
15 120
IR LD R2R0,4 6 124
0 128
R0 320
R1 14
R2 8
0 LA R0,320 300
R3
ALU 304
Proces 2
LD R1,R0,0
LD R2,R0,4 308
R31 0 ADD R3,R1,R2 312
ST R3,R0,8 316
14 320
8 324
0 328
Prekid i prijelaz na Proces 1
Stanje Procesa 2:
PC=312, R0=320, R0=14, R2=8,
R3-R31=0
MEMORIJA
T8
LA R0,120 100
104
Proces 1
LD R1,R0,0
PROCESOR LD R2,R0,4 108
112
ADD R3,R1,R2
ST R3,R0,8 116
PC 112
15 120
IR xxx 6 124
0 128
R0 120
R1 15
R2 6
0 LA R0,320 300
R3
ALU 304
Proces 2
LD R1,R0,0
LD R2,R0,4 308
R31 0 ADD R3,R1,R2 312
ST R3,R0,8 316
14 320
8 324
0 328
Povratak na Proces 1
Obnovljeno stanje Procesa 1:
PC=112, R0=120, R1=15, R2=6,
R3-R31=0
Promjena stanja sustava
Za riješiti
• Kada prekinuti izvođenje procesa?
• Kako zapamtiti njegovo stanje (PC I
sadržaje registara)?
• Kako odabrati sljedeći process koji će se
izvoditi?
Kako programski opisati proces
• Podaci koji opisuju process:
– Stanje procesa:
PC, registry
– Informacije o procesu:
id procesa: 231
ime procesa: word
izvršna datoteka : c:\ProgramFiles\Microsoft\word.exe
korisnik: gotovac
time stamp: …..
• Struktura koja opisuje process:
Proces Control Block (PCB)
Programska struktura
struct PCB{
int id;
char name[20]; P[0]
char image[255]; P[1]
…..
int PC, R[32];
P[99]
}
podaci za obračun
programsko brojilo
spremnici
Primjer stanja u sustavu
OS
Word
Čeka znak s tipkovnice
pripravan aktivan
dodijeljen
procesor
sprem i stanje u
deskriptor procesa P 0
sprem i stanje u
deskriptor procesa P 1
priprava n
čeka ili
suspendiran
obnovi stanje iz
deskriptora procesa P 0
izvodi se
Redovi procesa
(Process Scheduling Queues)
• Red aktivnih poslova – skup svih procesa koji koriste
processor računaju
Za jednoprocesorski sustav jedan
• Red pripravnih (Ready queue) – skup procesa koji
čekaju da im se dodjeli procesor
• Redovi čekanja na uređaje ili neke druge događaje –
skup procesa koji čekaju na U/I operaciju
• Procesi se prebacuju iz rada u red tijekom izvođenja
Redovi procesa
pripravan aktivan
čeka
disk
tipkovnica
Redovi procesa
zaglavlje reda
PCB
pripravan
PCB
tipkovnicu
Proces Control Block
struct PCB{
struct PCB *pokazivac
int id;
char name[20];
char image[255];
…..
int PC, R[32];
}
Izmjena PCB2
pripravan pocetak
Primjer je stanje s
pet procesa od PCB4 PCB0 PCB1
1000
xxx
struct PCB{
PCB0
struct PCB *pok; xxxx
xxx
int id;
PCB1
char name[20]; xxxx
xxx
char image[70]; PCB2
char korisnik[70]; xxx
xxxx
xxx
1000 kraj
PCB0
početak
1200
xxx čeka disk
PCB1
1400
xxx
PCB2
1600 kraj
xxx
PCB3 početak
1800 čeka tipkovnicu
xxx PCB1
PCB4
kraj
početak
čeka miš
-> P C = PC;
aktivan
aktivan
PCB2
re mn i k a; i++)
s p
r ( i = 0 ; i < broj nici[i] = reg[i];
fo >sprem
aktivan-
kraj
početak
pripravan
PCB4 PCB0 PCB1
kraj
početak
čeka_disk PCB3 1
Spremi stanje procesora u PCB na
kraj
kojeg pokazuje pokazivač aktivan
početak
čeka_tipkovnicu
aktivan->PC = PC;
for (i = 0; i < broj spremnika; i++)
kraj
aktivan->spremnici[i] = reg[i];
početak
čeka_miš
2
aktivan
PCB2 Prebaci proces iz reda aktivan na
kraj reda čeka_disk
kraj
početak
pripravan
PCB4 PCB0 PCB1
kraj
a
početak
čeka_disk
Kopiraj pokazivač aktivan u PCB na kojeg
PCB3
pokazuje čeka_disk_kraj na mjesto pokazivač
kraj
početak
čeka_miš
2
aktivan
PCB2 Prebaci proces iz reda aktivan na
kraj reda čeka_disk
kraj
početak
pripravan
PCB4 PCB0 PCB1
kraj
b
početak
čeka_disk
Kopiraj pokazivač aktivan u pokazivač
PCB3
čeka_disk_kraj
kraj
čeka_disk_kraj = aktivan;
početak
čeka_tipkovnicu
kraj
početak
čeka_miš
2
aktivan
PCB2 Prebaci proces iz reda aktivan na
kraj reda čeka_disk
kraj
početak
pripravan
PCB4 PCB0 PCB1
kraj
početak
čeka_disk PCB3
kraj
početak
čeka_tipkovnicu
kraj
početak
čeka_miš
2
aktivan
Prebaci prvi proces iz reda
aktivan na kraj reda čeka_disk
kraj
početak
pripravan
PCB4 PCB0 PCB1
kraj
početak
čeka_disk
PCB2
PCB3
kraj
početak
čeka_tipkovnicu
kraj
početak
čeka_miš
3
aktivan
Prebaci proces iz reda pripravan
u reda aktivan
kraj
početak
pripravan
PCB4 PCB0 PCB1
kraj
početak
PCB2
a
čeka_disk PCB3
Kopiraj pokazivač pripravan_početak
u pokazivač aktivan
kraj aktivan = pripravan_početak;
početak
čeka_tipkovnicu
kraj
početak
čeka_miš
3
aktivan
Prebaci proces iz reda pripravan
u reda aktivan
kraj
početak
pripravan
PCB4 PCB0 PCB1
kraj
početak
PCB2
b
čeka_disk PCB3
Kopiraj pokazivač pripravan_početak
u pokazivač aktivan
kraj aktivan = pripravan_početak;
početak
čeka_tipkovnicu
kraj
početak
čeka_miš
3
aktivan
PCB4 Prebaci proces iz reda pripravan
u reda aktivan
kraj
početak
pripravan
PCB0 PCB1
kraj
početak
čeka_disk
PCB2
PCB3
kraj
početak
čeka_tipkovnicu
kraj
početak
čeka_miš
3
aktivan
PCB4 Prebaci proces iz reda pripravan
u reda aktivan
kraj
početak
pripravan
PCB0 PCB1
kraj
početak
PCB2
c
čeka_disk PCB3
Aktivan pokazivač staviti u NULL
kraj
početak
čeka_miš
tivan- >PC;
PC=ak
aktivan
PCB4 n i k a; i++)
s p re m
r ( i = 0; i < broj spremnici[i] ;
fo tivan->
reg[i]=ak
kraj
početak
pripravan
PCB0 PCB1
kraj
početak
čeka_disk
PCB2
PCB3
4
kraj
početak
Obnovi stanje procesora
čeka_tipkovnicu
PC=aktivan->PC ;
kraj
for (i = 0; i < broj spremnika; i++)
reg[i] = aktivan->spremnici[i];
početak
čeka_miš
aktivan
Izmjena
konteksta
PCB2 Upisati sadrzaje
registara procesora
1
u PCB na koji
pokazuje aktivan
pripravan kraj
• Aktivan proces P2 pripravan pocetak
zahtjeva od
operacijskog sustava da PCB4 PCB0 PCB1
aktivan->PC = PC;
ceka tipkovnicu kraj
Izmjena PCB2
pripravan pocetak
• Aktivni proces se
2a
prebacuje u red PCB4 PCB0 PCB1
odnosno stavlja se X
ceka disk pocetak 2b
X
na kraj reda
PCB3
ceka_disk_kraj->pokazivac = aktivan;
ceka mis kraj
ceka_disk_kraj = aktivan;
ceka mis pocetak
Izmjena PCB2
konteksta
3a
pripravan kraj
aktivan = pripravan;
pripravan = pripravan->pokazivač; PCB3
aktivan->pokazivač = NULL;
ceka mis kraj
konteksta
procesora sadrzaj iz
PCB na koji
pokazuje aktivan
pripravan kraj
pripravan pocetak
• Obnova stanja
4
procesora PCB4 PCB0 PCB1
sadržaja spremnika u
PCB3
spremnike procesora
ceka mis kraj
razina 0
razina 1
razina 2
razina 3