Mô tả:
Chương 3: Tiến Trình
PROCESS
ThS: Hà Lê Hoài Trung
Ôn tập chương 2
Hệ Điều hành có mấy thành phần
Phân biệt giữa sytem call & library
Cấu trúc hệ thống.
Máy ảo – nhiệm vụ của máy ảo
Tiến trình là gì? Nhiệm vụ chính của thành phần quản lý tiến
trình? Các Tiến trình cùng chạy 1 chương trình?
Khoa KTMT
2
Mục tiêu
Hiểu được quá trình là gì?
Các trạng thái của quá trình
Cấu trúc dữ liệu của Quá trình
Cách tạo ra 1 quá trình. Mối quan hệ cha con giữa các quá trình
Cách giao tiếp giữa các tiến trình
Tiểu trình (Thread)
Khoa KTMT
3
Nội Dung
Khaùi nieäm cô baûn
Traïng thaùi quaù trình
Khoái ñieàu khieån quaù trình (Process control block)
Ñònh thôøi quaù trình (Process Scheduling)
Caùc taùc vuï ñoái vôùi quaù trình
Söï coäng taùc giöõa caùc quaù trình
Giao tieáp giöõa caùc quaù trình
Khoa KTMT
4
3.1. Khaùi nieäm cô baûn
m
Hoaït ñoäng cuûa CPU gọi là gì?
– Heä thoáng boù (Batch system): jobs
– Time-shared systems: user programs, tasks
– Caùc hoaït ñoäng laø töông töï => goïi laø process
Quaù trình (process)
– moät chöông trình ñang thöïc thi
Moät quaù trình bao goàm
– Text section (program code), data section (chöùa global variables)
– program counter (PC), process status word (PSW), stack pointer
(SP), memory management registers,…
Khoa KTMT
5
3.1. Khaùi nieäm cô baûn
Caùc böôùc naïp chöông trình vaøo boä nhôù
Khoa KTMT
6
3.1. Khaùi nieäm cô baûn
chöông trình => quaù trình
Duøng load module ñeå bieåu dieãn chöông trình thöïc thi ñöôïc
Layout luaän lyù cuûa process image
Executable binary file
(load module)
Process image in
main memory
program
code
program
code
data
data
start address
stack
Khoa KTMT
7
3.1. Khaùi nieäm cô baûn
Khôûi taïo quaù trình
Caùc böôùc heä ñieàu haønh khôûi taïo quaù trình
– Caáp phaùt moät ñònh danh duy nhaát (process number hay process
identifier, pid) cho quaù trình
– Caáp phaùt khoâng gian nhôù ñeå naïp quaù trình
– Khôûi taïo khoái döõ lieäu Process Control Block (PCB) cho quaù trình
PCB laø nôi heä ñieàu haønh löu caùc thoâng tin veà quaù trình
– Thieát laäp caùc moái lieân heä caàn thieát (vd: saép PCB vaøo haøng ñôïi
ñònh thôøi,…)
Khoa KTMT
8
3.2.Traïng thaùi quaù trình
Caùc traïng thaùi cuûa quaù trình (process states):
–
–
–
–
–
new: quaù trình vöøa ñöôïc taïo
ready: quaù trình ñaõ coù ñuû taøi nguyeân, chæ coøn caàn CPU
running: caùc leänh cuûa quaù trình ñang ñöôïc thöïc thi
waiting: hay laø blocked, quaù trình ñôïi I/O hoaøn taát, tín hieäu.
terminated: quaù trình ñaõ keát thuùc.
Khoa KTMT
9
3.2.Traïng thaùi quaù trình
Chuyeån ñoåi giöõa caùc traïng thaùi cuûa quaù trình
new
admit
dispatch
ready
exit
terminated
running
interrupt
I/O or
event wait
I/O or event
completion
waiting
Khoa KTMT
10
3.2.Traïng thaùi quaù trình
Ví duï
/* test.c */
int main(int argc, char** argv)
{
printf(“Hello world\n");
exit(0);
}
Bieân dòch chöông trình trong Linux
gcc test.c –o test
Thöïc thi chöông trình test
./test
Trong heä thoáng seõ coù moät quaù trình
test ñöôïc taïo ra, thöïc thi vaø keát
thuùc.
Khoa KTMT
Chuoãi traïng thaùi cuûa quaù
trình test nhö sau (tröôøng
hôïp toát nhaát):
–
–
–
–
new
ready
running
waiting (do chôø I/O khi goïi
printf)
– ready
– running
– terminated
11
Ví dụ
Cho đoạn chương trình như
sau:
/* test.c */
int main(int argc, char** argv)
{
int a = 2 + 3;
exit(0);
}
Biên dịch chương trình trong
Linux
gcc test.c –o test
Thực thi chương trình
Khoa KTMT
/test
Chuỗi trạng thái của
quá trình test
12
Ví dụ
Cho đoạn chương trình như sau:
/* test.c */
int main(int argc, char** argv)
{
int a = 2 + 3;
printf(“Hello”);
printf(“Hi”);
exit(0);
}
Biên dịch chương trình trong
Linux
gcc test.c –o test
Thực thi chương trình
Khoa KTMT
/test
Chuỗi trạng thái
của quá trình test
là?
13
3.3.Process control block
Ñaõ thaáy laø moãi quaù trình trong heä thoáng ñeàu ñöôïc caáp phaùt moät
Process Control Block (PCB)
PCB laø moät trong caùc caáu truùc döõ lieäu quan
troïng nhaát cuûa heä ñieàu haønh vaø goàm:
- Traïng thaùi quaù trình: new, ready, running,…
- Boä ñeám chöông trình
- Caùc thanh ghi
- Thoâng tin laäp thôøi bieåu CPU: ñoä öu tieân, …
- Thoâng tin quaûn lyù boä nhôù
- Thoâng tin taøi khoaûn: löôïng CPU, thôøi gian söû
duïng,
- Thoâng tin traïng thaùi I/O
Khoa KTMT
14
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 process’s parent */ struct
list head children; /* this process’s children */ struct
files struct *files; /* list of open files */ struct mm
struct *mm; /* address space of this pro */
Khoa KTMT
15
3.3.Process control block
Löu ñoà
chuyeån CPU
töø quaù trình
naøy ñeán quaù
trình khaùc
Khoa KTMT
16
Yeâu caàu ñoái vôùi heä ñieàu haønh veà quaûn lyù quaù trình
Hoã trôï söï thöïc thi luaân phieân giöõa nhieàu quaù trình
– Hieäu suaát söû duïng CPU
– Thôøi gian ñaùp öùng
Phaân phoái taøi nguyeân heä thoáng hôïp lyù
– traùnh deadlock, trì hoaõn voâ haïn ñònh,…
Cung caáp cô cheá giao tieáp vaø ñoàng boä hoaït ñoäng caùc
quaù trình
Cung caáp cô cheá hoã trôï user taïo/keát thuùc quaù trình
Khoa KTMT
17
Quaûn lyù caùc quaù trình: caùc haøng ñôïi
Ví duï
caùc PCB
running
7
process number
ready
11
4
19
11
2
17
waiting
Coù gì sai trong ví duï?
Khoa KTMT
18
3.4. Ñònh thôøi quaù trình (Process Scheduling)
Taïi sao phaûi ñònh thôøi?
– Ña chöông (Multiprogramming)
Coù vaøi quaù trình chaïy taïi caùc thôøi ñieåm
Muïc tieâu: taän duïng toái ña CPU
– Chia thôøi(Time-sharing)
Users töông taùc vôùi moãi chöông trình ñang thöïc thi
Muïc tieâu: toái thieåu thôøi gian ñaùp öùng
Moät soá khaùi nieäm cô baûn
– Caùc boä ñònh thôøi (scheduler)
– Caùc haøng ñôïi ñònh thôøi (scheduling queue)
Khoa KTMT
19
Caùc haøng ñôïi ñònh thôøi (Scheduling queues)
Haøng ñôïi coâng
vieäc-Job queue
Haøng ñôïi saün
saøng-Ready
queue
Haøng ñôïi thieát
bò-Device
queues
…
Khoa KTMT
20
- Xem thêm -