You are on page 1of 59

PROCESI

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

R0 2000 LD R1, R0, 0 1008

R1 20 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 20 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 20 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 20 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 20 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 20 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 20
15 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 15 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 15 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 15 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 15 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 15 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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

R0 2000 LD R1, R0, 0 1008

R1 15 LD R2, R0, 4 1012

R2 10 LD R5, R0, 8 1016

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]
}

struct PCB procesi[100];


Deskriptor pokazivači stanje procesa

procesa naziv procesa

podaci za obračun

programsko brojilo

spremnici

podaci o memoriji koju proces


koristi
popis otvorenih datoteka

popis resursa koje proces koristi



Primjer stanja u sustavu

OS

Word
Čeka znak s tipkovnice

WinAmp Izvodi muziku


Procesor
Simulacija Čeka na račun
Chrome Čeka na paket s mreže
Simulacija Čeka na račun
Stanja procesa

• Program u izvođenju mijenja svoja stanja


– novi (new): Kreira se proces
– aktivan (running): Naredbe se izvode
– čeka (waiting): Čeka se na neki događaj
– spreman (ready): Proces čeka da mu se
dodjeli procesor (da nastavi s izvođenjem)
– završio (terminated): Proces je završio s
izvođenjem
Stanja procesa

novi prihvaćen na završio


obradu
prekinut završetak
programa

pripravan aktivan
dodijeljen
procesor

U/I završio U/I ili neki


ili događaj čeka na neki
se desio događaj
čeka
proces P0 op eracijski sustav proces P1

prekid ili sistem ski p oziv


izvodi se

sprem i stanje u
deskriptor procesa P 0

čeka ili pripra van


suspendiran
obnovi stanje iz
deskriptora procesa P 1

prekid ili sistem ski poziv izvodi se

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

red prvi pokazivač pokazivač


pripravnih
posljednji proces P 6 proces P 3

sprem nici sprem nici


Redovi procesa
aktivan

PCB
pripravan

PCB PCB PCB


čeka
disk

PCB
tipkovnicu
Proces Control Block
struct PCB{
struct PCB *pokazivac
int id;
char name[20];
char image[255];
…..
int PC, R[32];
}

struct PCB procesi[100];


aktivan

Izmjena PCB2

konteksta pripravan kraj

pripravan pocetak

Primjer je stanje s
pet procesa od PCB4 PCB0 PCB1

kojih je jedan ceka disk kraj

aktivan, tri su ceka disk pocetak

pripravna dok jedan


čeka na odziv
PCB3

diska. ceka mis kraj

ceka mis pocetak

ceka tipkovnicu kraj

ceka tipkovnicu pocetak


Fizička
organizacija
Fizička organizacija
prethodnog primjera
prikazana je na slici
500
aktivan xxx 508
pripravan početak xxx 516
pripravan kraj xxx 524
čeka disk početak xxx 532
čeka disk kraj xxx 540
čeka miš početak xxx 548
čeka miš kraj xxx 556
čeka tipkovnicu početak xxx 564
čeka tipkovnicu kraj xxx 572

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

int PC, R[32]; PCB3


} xxx
xxxx

struct PCB procesi[5]; PCB4


aktivan
PCB4
500
aktivan xxx 508
pripravan početak xxx 516
pripravan kraj xxx 524
čeka disk početak xxx 532
čeka disk kraj xxx 540 kraj
čeka miš početak xxx 548
čeka miš kraj xxx 556
čeka tipkovnicu početak xxx 564
početak
čeka tipkovnicu kraj xxx 572 pripravan
PCB2 PCB0 PCB3

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 čeka_disk_kraj->pokazivac = 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
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 aktivan->pokazivač = NULL;


početak
čeka_tipkovnicu

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

mu dobavi neki podatak


s diska
ceka disk kraj

ceka disk pocetak


• Stanje procesora se
upisuje u PCB na koji
PCB3
pokazuje aktivan
ceka mis kraj
for (i = 0; i < broj spremnika; i++)
aktivan->spremnici[i] = reg[i]; ceka mis pocetak

aktivan->PC = PC;
ceka tipkovnicu kraj

ceka tipkovnicu pocetak


aktivan

Izmjena PCB2

konteksta pripravan kraj

pripravan pocetak
• Aktivni proces se

2a
prebacuje u red PCB4 PCB0 PCB1

čekanja na disk, ceka disk kraj

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

ceka tipkovnicu kraj

ceka tipkovnicu pocetak


aktivan

Izmjena PCB2

konteksta

3a
pripravan kraj

• Prvi proces iz reda


pripravan pocetak 3b
X X

pripravan prebacuje PCB4


3c
PCB0 PCB1

se u red aktivan ceka disk kraj

ceka disk pocetak

aktivan = pripravan;
pripravan = pripravan->pokazivač; PCB3
aktivan->pokazivač = NULL;
ceka mis kraj

ceka mis pocetak

ceka tipkovnicu kraj

ceka tipkovnicu pocetak


aktivan

Izmjena PCB2 Upisati u registare

konteksta
procesora sadrzaj iz
PCB na koji
pokazuje aktivan
pripravan kraj

pripravan pocetak

• Obnova stanja

4
procesora PCB4 PCB0 PCB1

• Kopiranje iz PCBa na ceka disk kraj

koji pokazuje aktivan ceka disk pocetak

sadržaja spremnika u
PCB3
spremnike procesora
ceka mis kraj

ceka mis pocetak


for (i = 0; i < broj spremnika; i++)
reg[i] = aktivan->spremnici[i];
PC = aktivan->PC; ceka tipkovnicu kraj

ceka tipkovnicu pocetak


Različiti prioriteti procesa
• Kako podržati različite prioritete?
PRIPRAVNI

razina 0

razina 1

razina 2

razina 3

You might also like