chapter03 processes
DESCRIPTION
Các tiến trìnhTRANSCRIPT
-
Chng 3: Tin Trnh
PROCESS
ThS: H L Hoi Trung
-
2Khoa KTMT
n tp chng 2
H iu hnh c my thnh phn
Phn bit gia sytem call & library
Cu trc h thng.
My o nhim v ca my o
Tin trnh l g? Nhim v chnh ca thnh phn qun l tin
trnh? Cc Tin trnh cng chy 1 chng trnh?
-
3Khoa KTMT
Mc tiu
Hiu c qu trnh l g?
Cc trng thi ca qu trnh
Cu trc d liu ca Qu trnh
Cch to ra 1 qu trnh. Mi quan h cha con gia cc qu trnh
Cch giao tip gia cc tin trnh
Tiu trnh (Thread)
-
4Khoa KTMT
Ni Dung
Khai niem c ban
Trang thai qua trnh
Khoi ieu khien qua trnh (Process control block)
nh thi qua trnh (Process Scheduling)
Cac tac vu oi vi qua trnh
S cong tac gia cac qua trnh
Giao tiep gia cac qua trnh
-
5Khoa KTMT
3.1. Khai niem c ban
Hoat ong cua CPU gi l g?
He thong bo (Batch system): jobs
Time-shared systems: user programs, tasks
Cac hoat ong la tng t => goi la process
Qua trnh (process)
mot chng trnh ang thc thi
Mot qua trnh bao gom
Text section (program code), data section (cha global variables)
program counter (PC), process status word (PSW), stack pointer (SP), memory management registers,
max
0
-
6Khoa KTMT
3.1. Khai niem c ban
Cac bc nap chng trnh vao bo nh
-
7Khoa KTMT
3.1. Khai niem c ban
program
code
data
Executable binary file
(load module)
program
code
data
stack
Process image in
main memory
Dung load module e bieu dien chng trnh thc thi c
Layout luan ly cua process image
start address
chng trnh => qua trnh
-
8Khoa KTMT
3.1. Khai niem c ban
Cac bc he ieu hanh khi tao qua trnh
Cap phat mot nh danh duy nhat (process number hay process identifier, pid) cho qua trnh
Cap phat khong gian nh e nap qua trnh
Khi tao khoi d lieu Process Control Block (PCB) cho qua trnh
PCB la ni he ieu hanh lu cac thong tin ve qua trnh
Thiet lap cac moi lien he can thiet (vd: sap PCB vao hang i nh thi,)
Khi tao qua trnh
-
9Khoa KTMT
3.2.Trang thai qua trnh
Cac trang thai cua qua trnh (process states):
new: qua trnh va c tao
ready: qua trnh a co u tai nguyen, ch con can CPU
running: cac lenh cua qua trnh ang c thc thi
waiting: hay la blocked, qua trnh i I/O hoan tat, tn hieu.
terminated: qua trnh a ket thuc.
-
10Khoa KTMT
3.2.Trang thai qua trnh
ready running
dispatch
interrupt
I/O or event
completion
I/O or
event wait
newterminated
waiting
admit exit
Chuyen oi gia cac trang thai cua qua trnh
-
11Khoa KTMT
3.2.Trang thai qua trnh
/* test.c */
int main(int argc, char** argv)
{
printf(Hello world\n");exit(0);
}
Bien dch chng trnh trong Linux
gcc test.c o test
Thc thi chng trnh test
./test
Trong he thong se co mot qua trnh
test c tao ra, thc thi va ket
thuc.
Chuoi trang thai cua qua
trnh test nh sau (trng
hp tot nhat):
new
ready
running
waiting (do ch I/O khi goi printf)
ready
running
terminated
V du
-
12Khoa KTMT
V d
Cho on chng trnh nh
sau:
/* test.c */
int main(int argc, char** argv)
{
int a = 2 + 3;
exit(0);
}
Bin dch chng trnh trong
Linux
gcc test.c o test
Thc thi chng trnh
/test
Chui trng thi ca
qu trnh test
-
13Khoa KTMT
V d Cho on chng trnh nh sau:
/* test.c */
int main(int argc, char** argv)
{
int a = 2 + 3;
printf(Hello);
printf(Hi);
exit(0);
}
Bin dch chng trnh trong
Linux
gcc test.c o test
Thc thi chng trnh
/test
Chui trng thi
ca qu trnh test
l?
-
14Khoa KTMT
3.3.Process control block
a thay la moi qua trnh trong he thong eu c cap phat mot
Process Control Block (PCB)
PCB la mot trong cac cau truc d lieu quan
trong nhat cua he ieu hanh va gom:
- Trang thai qua trnh: new, ready, running,- Bo em chng trnh
- Cac thanh ghi
- Thong tin lap thi bieu CPU: o u tien, - Thong tin quan ly bo nh
- Thong tin tai khoan: lng CPU, thi gian s
dung,
- Thong tin trang thai I/O
-
15Khoa KTMT
Process Representation in Linux
Represented by the C structure task_struct
pid t pid; /* process identifier */
long state; /* state of the process */
unsigned int time slice /* scheduling information */ struct
task struct *parent; /* this processs parent */ struct
list head children; /* this processs children */ struct
files struct *files; /* list of open files */ struct mm
struct *mm; /* address space of this pro */
-
16Khoa KTMT
3.3.Process control block
Lu o
chuyen CPU
t qua trnh
nay en qua
trnh khac
-
17Khoa KTMT
Yeu cau oi vi he ieu hanh ve quan ly qua trnh
Ho tr s thc thi luan phien gia nhieu qua trnh
Hieu suat s dung CPU
Thi gian ap ng
Phan phoi tai nguyen he thong hp ly
tranh deadlock, tr hoan vo han nh,
Cung cap c che giao tiep va ong bo hoat ong cac
qua trnh
Cung cap c che ho tr user tao/ket thuc qua trnh
-
18Khoa KTMT
running
ready
waiting
Quan ly cac qua trnh: cac hang i
7
11 4 2 17
19 11
process number
cac PCB
Co g sai trong v du?
V du
-
19Khoa KTMT
3.4. nh thi qua trnh (Process Scheduling)
Tai sao phai nh thi?
a chng (Multiprogramming)
Co vai qua trnh chay tai cac thi iem
Muc tieu: tan dung toi a CPU
Chia thi(Time-sharing)
Users tng tac vi moi chng trnh ang thc thi
Muc tieu: toi thieu thi gian ap ng
Mot so khai niem c ban
Cac bo nh thi (scheduler)
Cac hang i nh thi (scheduling queue)
-
20Khoa KTMT
Cac hang i nh thi (Scheduling queues)
Hang i cong
viec-Job queue
Hang i san
sang-Ready
queue
Hang i thiet
b-Device
queues
-
21Khoa KTMT
Cac hang i nh thi (Scheduling queues)
Lu o hang i cua nh thi qua trnh
-
22Khoa KTMT
3.5. Bo nh thi (Scheduler)
Bo nh thi cong viec (Job scheduler) hay bo nh thi
dai (long-term scheduler)
Bo nh thi CPU hay bo nh thi ngan
Cac qua trnh co the mo ta nh:
Qua trnh hng I/O (I/O bound process)
Qua trnh hng CPU (CPU bound process)
Thi gian thc hien khac nhau => ket hp hai hoa gia chung
-
23Khoa KTMT
Bo nh thi trung gian(medium-term scheduling)
oi khi he ieu hanh (nh time-sharing system) co them
medium-term scheduling e ieu chnh mc o a
chng cua he thong
Medium-term scheduler
chuyen qua trnh t bo nh sang a (swap out)
chuyen qua trnh t a vao bo nh (swap in)
-
24Khoa KTMT
3.6. Cac tac vu oi vi qua trnh
Tao qua trnh mi (process creation)
Mot qua trnh co the tao nhieu qua trnh mi thong qua mot li goi he thong create-process (vd: ham fork
trong Unix)
V du: (Unix) Khi user ang nhap he thong, mot command interpreter (shell) se c tao ra cho
user
Qua trnh c tao la qua trnh con cua qua trnh tao (qua trnh cha). Quan he cha-con nh ngha mot cay
qua trnh.
Ti nguyn chia s
Thc thi
Khng gian a ch
-
25Khoa KTMT
Cay qua trnh trong Linux/Unix
V du
-
26Khoa KTMT
A Tree of Processes on Solaris
-
27Khoa KTMT
3.6.Cac tac vu oi vi qua trnh
Tao qua trnh mi
Qua trnh con nhan tai nguyen: t HH hoac t P cha
Chia se tai nguyen cua qua trnh cha
Qua trnh cha va con chia se moi tai nguyen
Qua trnh con chia se mot phan tai nguyen cua cha
Trnh t thc thi
Qua trnh cha va con thc thi ong thi (concurrently)
Qua trnh cha i en khi cac qua trnh con ket thuc.
-
28Khoa KTMT
Ve quan he cha/con
Khong gian a ch (address space)
Khong gian a ch cua qua trnh con c nhan ban t cha
Khong gian a ch cua qua trnh con c khi tao t template.
V du trong UNIX/Linux
System call fork() tao mot qua trnh mi
System call exec() dung sau fork() e nap mot chng trnh mi vao khong gian nh cua qua trnh mi
ong bo
-
29Khoa KTMT
V du tao process vi fork()
#include
#include
int main (int argc, char *argv[]){
int pid;
/* create a new process */
pid = fork();
if (pid > 0){
printf(This is parent process);
wait(NULL);
exit(0);
}
else if (pid == 0)
{
printf(This is child process);
execlp(/bin/ls, ls, NULL);
exit(0);
}
else {
printf(Fork error\n);
exit(-1);
}
}
-
30Khoa KTMT
V d
#include
#include
void main(int argc, char *argv[]){
printf (hi);fork ();
printf (Hello);fork ();
printf (Bye);}
Hi chng trnh in ra cc dng ch no trn mn hnh.
-
31Khoa KTMT
V d
#include
#include
void main(int argc, char *argv[]) {
int pid; 1
printf (hi); 2
pid = fork (); 3
If( pid == 0) { 4
fork (); 5
printf (Hello); 6
} else 7
printf (Bye); 8
}
Hi chng trnh in ra cc dng ch no trn mn hnh.
B lnh dng 4, dng 7. Chng trnh in ra cc dng ch no.
-
32Khoa KTMT
3.6.Cac tac vu oi vi qua trnh (tt)
Tao qua trnh mi
Ket thuc qua trnh
Qua trnh t ket thuc
Qua trnh ket thuc khi thc thi lenh cuoi va goi system routine
exit
Qua trnh ket thuc do qua trnh khac (co u quyen, vd: qua trnh
cha cua no)
Goi system routine abort vi tham so la pid (process identifier)
cua qua trnh can c ket thuc
He ieu hanh thu hoi tat ca cac tai nguyen cua qua trnh ket
thuc (vung nh, I/O buffer,)
-
33Khoa KTMT
3.7. Cong tac gia cac qua trnh
Trong qua trnh thc thi, cac qua trnh co the cong tac
(cooperate) e hoan thanh cong viec
Cac qua trnh cong tac e
Chia se d lieu (information sharing)
Tang toc tnh toan (computational speedup)
Neu he thong co nhieu CPU, chia cong viec tnh toan thanh nhieu cong viec tnh toan nho chay song song
Thc hien mot cong viec chung
Xay dng mot phan mem phc tap bang cach chia thanh cac module/process hp tac nhau
S cong tac gia cac qua trnh yeu cau he ieu hanh ho
tr c che giao tiep va c che ong bo hoat ong cua
cac qua trnh
-
34Khoa KTMT
Bai toan ngi san xuat-ngi tieu thu
(producer-consumer )
V du cong tac gia cac qua trnh: bai toan producer-
consumer
Producer tao ra cac d lieu va consumer tieu thu, s dung cac d lieu o. S trao oi thong tin thc hien qua buffer
unbounded buffer: kch thc buffer vo han (khong thc te).
bounded buffer: kch thc buffer co han.
Producer va consumer phai hoat ong ong bo v
Consumer khong c tieu thu khi producer cha san xuat
Producer khong c tao them san pham khi buffer ay.
-
35Khoa KTMT
Hin thc
#define BUFFER_SIZE 10
typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
-
36Khoa KTMT
Hin thc
while (true) {
/* Produce an item */
while (((in = (in + 1) % BUFFER SIZE count) == out)
; /* do nothing -- no free buffers */
buffer[in] = item;
in = (in + 1) % BUFFER SIZE;
}
-
37Khoa KTMT
Hin thc
while (true) {
while (in == out)
; // do nothing -- nothing to consume
// remove an item from the buffer
item = buffer[out];
out = (out + 1) % BUFFER SIZE;
return item;
}
-
38Khoa KTMT
3.8.Giao tiep lien qua trnh (Interprocess
communication-IPC)
IPC la c che cung cap bi he ieu hanh nham giup cac
qua trnh
giao tiep vi nhau
va ong bo hoat ong
ma khong can chia se khong gian a ch
IPC co the c cung cap bi message passing system
-
39Khoa KTMT
He thong truyen thong iep
Message passing system
Lam the nao e cac qua trnh giao tiep nhau? Cac van e:
at ten (Naming)
Giao tiep trc tiep
send(P, msg): gi thong iep en qua trnh P
receive(Q, msg): nhan thong iep en t qua trnh Q
Giao tiep gian tiep: thong qua mailbox hay port
send(A, msg): gi thong iep en mailbox A
receive(B, msg): nhan thong iep t mailbox B
ong bo hoa (Synchronization): blocking send, nonblocking send,
blocking receive, nonblocking receive
Tao vung em (Buffering): dung queue e tam cha cac message
Kha nang cha la 0(Zero capacity hay no buffering)
Bounded capacity: o dai cua queue la gii han
Unbounded capacity: o dai cua queue la khong gii han
-
40Khoa KTMT
Comunication Client server
Socket
Remote procedure calls
Pipes
-
41Khoa KTMT
Tieu trnh (luong) - Thread
Tieu trnh(tien trnh nhe-lightweight process): la mot n
v c ban s dung CPU, gom:
Thread ID, PC, Registers, stack va chia se chung code, data, resources (files)
-
42Khoa KTMT
ng dng
-
43Khoa KTMT
PCB vaTCB trong mo hnh multithreads
pid
Threads list
Context
(Mem, global ressources)
Scheduling statistic
Relatives
( Dad, children)
PCB
tid
State
(State, details)
Context
(IP, local stack)
Thread Control BlockTCB
-
44Khoa KTMT
Li ch cua tien trnh a luong
ap ng nhanh: Cho phep chng trnh tiep tuc thc thi
khi mot bo phan b khoa hoac mot hoat ong dai
Chia se tai nguyen: tiet kiem khong gian nh
Kinh te: tao va chuyen ng canh nhanh hn tien trnh
VD: trong Solaris 2, tao process cham hn 30 lan,
chuyen cham hn 5 lan
Trong multiprocessor: co the thc hien song song
-
45Khoa KTMT
Tieu trnh ngi dung (User thread)
Khi nim tiu trnh c h tr bi mt th vin hot ng trong
user mode
T1
Kernel
T2User
mode
Kernel
mode
T3
LWP1 LWP2
P1 P2
-
46Khoa KTMT
Tiu trnh ht nhan(Kernel thread)
Khi nim tiu trnh c xy dng bn trong ht nhn
T1 T2
HDH
System call
User mode
Kernel mode
-
47Khoa KTMT
Bi tp
C bao nhiu process c to ra trong on chng
trnh sau:
-
48Khoa KTMT
Bi tp
Xc nh gi tr pid ca dng A, B, C, D. Bit pid ca process cha
v con l 2600, v 2603
V process tree
-
49Khoa KTMT
Bi tp
Xc nh gi tr X&Y
V process tree
-
50Khoa KTMT
Bi tp thc hnh