Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình (process) - Thoại Nam

a Khái niệm cơ bản

a Định thời process (CPU scheduling)

o Các tác vụ trên process (tạo process, kết thúc process)

a Sự cộng tác giữa các process

☐ Interprocess Communication (IPC) a Mô hình giao tiếp Client-Server

pdf 34 trang xuanthi 30/12/2022 2000
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình (process) - Thoại Nam", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_he_dieu_hanh_chuong_2_khai_niem_ve_qua_trinh_proce.pdf

Nội dung text: Bài giảng Hệ điều hành - Chương 2: Khái niệm về quá trình (process) - Thoại Nam

  1. Khaùi nieäm cô baûn ‰ OS thöïc thi nhieàu chöông trình khaùc nhau – Batch system: jobs – Time-shared systems: user programs, tasks –Job ≈ process ‰ Process –moätchöông trình ñang thöïc thi (executing program). ‰ Moät process bao goàm caùc phaàn – Text section(program code), data section(global variable), stack (local variable, ) – Hardware: Program Counter(PC), Process Status Word (PSW), Stack Pointer (SP), Memory Management Registers ‰ So saùnh process vaø program – Process = active <> passive = programing Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.3- Process Control Block (PCB) ‰ Chöùa caùc thoâng tin öùng vôùi moãi process. – Process ID, parent process ID – Credentials (user ID, group ID, effective ID, ) – Traïng thaùi process : new, ready, running, waiting – Program counter: ñòa chæ cuûa leänh keá tieáp seõ thöïc thi – Caùc thanh ghi CPU – Thoâng tin duøng ñeå ñònh thôøi CPU: priority, – Thoâng tin boä nhôù: base/limit register, page tables – Thoâng tin thoáng keâ: CPU time, time limits – Thoâng tin traïng thaùi I/O: danh saùch thieát bò I/O ñöôïc caáp phaùt, danh saùch caùc file ñang môû, – Con troû (pointer) ñeán PCBs khaùc. Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.4- 2
  2. Caùc böôùc naïp process vaøo boä nhôù ‰ Linker: keát hôïp caùc object modules thaønh moät file nhò phaân coù theå thöïc thi (executable binary file) goïi laø load module ‰ Loader: naïp load module vaøo boä nhôù chính Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.7- Loader Process Contro l Block Program Program C ode C ode Data Data Executable Binary File Stack (Load M odule) Process Im age in Main Memory ™ Program Æ Process Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.8- 4
  3. Löu ñoà 5-traïng thaùi process adm it dispatch new exit terminated ready running interrupt I/O or I/O or event event wait com pletion blocked ™ Chæ coù moät process ôû traïng thaùi running treân moãi processor taïi moät thôøi ñieåm ™ Coù theå coù nhieàu process ôû traïnh thaùi ready vaø waiting Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.11- Ví duï veà traïng thaùi process test.c ‰ Chuoãi traïng thaùi cuûa void main() process test nhö sau: { – new printf(“Hello World\n"); } – ready – running Bieân dòch trong Linux/Unix $ gcc test.c –o test – blocked (chôø I/O) – ready Thöïc thi chöông trình test – running $ ./test – terminated Trong heä thoáng seõ coù moät process test ñöôïc taïo ra, thöïc thi vaø keát thuùc. Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.12- 6
  4. Caùc traïng thaùi cuûa process (t.t) ‰ Process bò suspend trong caùc tröôøng hôïp sau – User muoán taïm döøng quaù trình thöïc thi cuûa process ñeå xem keát quaû thöïc hieän, phaùt hieän loãi, – Ngöôøi quaûn trò heä thoáng coù theå suspend moät soá process ñeå thu hoài moät soá taøi nguyeân vaø OS coù theå caáp phaùt cho process khaùc nhaèm giaûm tình traïng quaù taûi trong heä thoáng – Tröôøng hôïp coù tranh chaáp taøi nguyeân giöõa caùc process, suspend coù theå giuùp heä thoáng thoaùt khoûi tình traïng deadlock (tham khaûo theâm phaàn Deadlock) ‰ Khi rôi vaøo traïng thaùi suspend, process ñöôïc swap ra heä thoáng löu tröõ thöù caáp, nhöôøng choã trong boä nhôù cho process khaùc. Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.15- Löu ñoà 7-traïng thaùi cuûa process adm it new exit terminated dispatch ready running time-out resum e event event occur wait suspend blocked suspend suspend resum e suspended event suspended ready occur blocked Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.16- 8
  5. Ñònh thôøi Process – Muïc tieâu ‰ Multiprogramming – Coù nhieàu process phaûi thöïc thi luaân phieân nhau – Cöïc ñaïi hieäu suaát cuûa CPU ‰ Time Sharing – Cho pheùp users töông taùc khi chöông trình ñang chaïy – Toái thieåu thôøi gian ñaùp öùng Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.19- Caùc haøng ñôïi ñònh thôøi (queue) ‰ Job queue (New): chöùa caùc process môùi ñöôïc taïo ra trong heä thoáng ‰ Ready queue (Ready): chöùa caùc process ñang naèm trong boä nhôù chính saün saøng ñôïi ñöôïc thöïc thi ‰ Device queues (Waiting): chöùa caùc process ñang chôø moät thieát bò I/O, moät söï kieän I/O ‰ Process ñöôïc chuyeån töø haøng ñôïi naøy sang haøng ñôï khaùc trong suoát quaù trình thöïc thi cuûa noù ‰ Caùc haøng ñôïi ñònh thôøi ñöôïc hieän thöïc baèng danh saùch lieân keát (linked list) – Caùc lieân keát laø caùc con troû trong khoái PCB Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.20- 10
  6. Caùc boä ñònh thôøi (schedulers) ‰ Long-term scheduler (or job scheduler) – Choïn process naøo seõ ñöôïc ñöa vaøo ready queue (töø New chuyeån sang Ready) ‰ Short-term scheduler (or CPU scheduler) – Choïn process naøo seõ ñöôïc chieám CPU ñeå xöû lyù (töø Ready chuyeån sang Running) ‰ Medium-term scheduler – Chuyeån process töø boä nhôù chính sang sang boä nhôù thöù caáp (nhöng vaãn naèm trong khoâng gian boä nhôù aûo); khi naøo caàn thì naïp process töø boä nhôù thöù caáp vaøo boä nhôù chính. Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.23- Caùc boä ñònh thôøi (t.t) ‰ Short-term schedule thöôøng xaûy ra raát thöôøng xuyeân (milli giaây) → phaûi thöïc thi nhanh ‰ Long-term schedule thöôøng thöïc hieän khoâng thöôøng xuyeân (giaây, phuùt) → coù theå thöïc hieän chaäm – Long-term scheduler ñieàu khieån möùc ñoä multi-programming – Neân choïn xen keõ giöõa I/O-bound vaø CPU- bound processes ‰ Thoâng thöôøng, process chia laøm 2 loaïi chính – I/O-bound process: phaàn lôùn thôøi gian thöïc thi duøng ñeå thöïc hieän caùc taùc vuï I/O, thôøi gian chieám CPU ít hôn. – CPU-bound process: thôøi gian thöïc thi chuû yeáu laø caùc taùc vuï tính toaùn, chieám CPU nhieàu hôn so vôùi thöïc hieän caùc taùc vuï I/O. Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.24- 12
  7. Caùc böôùc chuyeån ngöõ caûnh ‰ Löu ngöõ caûnh CPU, bao goàm thanh ghi leänh - program counter (PC) vaø caùc thanh ghi khaùc. ‰ Caäp nhaät PCB cuûa process ñang thöïc thi: ghi nhaän traïng thaùi hieän taïi vaø moät soá thoâng tin caàn thieát khaùc ‰ Chuyeån PCB cuûa process ñang thöïc thi ñeán haøng ñôïi töông öùng: ready, waiting ‰ Thöïc hieän vieäc choïn process khaùc ñeå thöïc thi (short- term scheduler) ‰ Caäp nhaät PCB cuûa process ñöôïc choïn thöïc thi. ‰ Phuïc hoài ngöõ caûnh CPU cuûa process ñöôïc choïn (neáu coù) Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.27- Chuyeån ngöõ caûnh xaûy ra khi naøo? ‰ Chuyeån ngöõ caûnh coù theå xaûy ra khi OS chieám laïi quyeàn ñieàu khieån CPU, chaúng haïn nhö – System Call » Ñöôïc goïi töôøng minh trong chöông trình (ví duï: system call môû/ñoùng file). Process goïi system call coù theå seõ bò blocked chôø thöïc hieän system call. – Trap » Moät loãi ñaõ xaûy ra. Process coù theå chuyeån vaøo traïng thaùi Exit vaø keát thuùc thöïc thi. – Interrupt » Quyeàn ñieàu khieån chuyeån sang cho Interrupt Handler. Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.28- 14
  8. Taïo process (process creation) ‰ Process ñöôïc taïo ra khi naøo? – Coù moät coâng vieäc (job) môùi yeâu caàu ñöôïc thöïc hieän. – Khi user ñaêng nhaäp (log on) → command interpreter (Unix shell) – Do OS taïo ra ñeå cung caáp dòch vuï cho user (ví duï:in moät file) – Sinh ra bôûi moät process, ví duï » user program coù theå taïo ra nhieàu process ‰ Caùc böôùc OS khôûi taïo process – Gaùn moät ñònh danh duy nhaát (unique process identifier) – Caáp phaùt khoâng gian nhôù cho process image. – Khôûi taïo process control block (PCB) » Moät soá giaù trò maëc ñònh (ví duï: traïng thaùi=New, khoâng coù thieát bò I/O, khoâng môû files ) – Thieát laäp caùc moái lieân heä caàn thieát » Ví duï: theâm process môùi vaøo linked list cuûa haøng ñôïi ñònh thôøi Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.31- Moái quan heä cha/con ‰ Process cha taïo ra caùc process con, caùc process con taïo ra nhieàu process khaùc, vaø cöù nhö theá taïo thaønh moät caây process trong heä thoáng. ‰ 3 caùch chia seû taøi nguyeân (resource sharing) – Process cha vaø con chia seû moïi taøi nguyeân – Process con chia seû moät phaàn taøi nguyeân cuûa cha – Process cha vaø con khoâng chia seû taøi nguyeân naøo ‰ Trình töï thöïc thi – Process cha vaø con thöïc thi ñoàng thôøi (concurrently) – Process cha ñôïi ñeán khi caùc process con keát thuùc. Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.32- 16
  9. Ví duï taïo process vôùi fork() #include int main (int argc, char *argv[]) { int pid; /* create a new process */ pid = fork(); if ( pid < 0 ) { printf(“Fork error\n”); exit(-1); } else if ( pid == 0 ) { printf(“This is child process”); execlp(“/bin/ls”, “ls”, NULL); exit(0); } else { printf(“This is parent process”); exit(0); } } Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.35- Keát thuùc thöïc thi process ‰ Keát thuùc bình thöôøng (normal completion) ‰ Vöôït giôùi haïn thôøi gian (time limit exceeded) ‰ Khoâng ñuû boä nhôù (memory unavailable) ‰ Xaâm phaïm vuøng nhôù caám (memory bounds violation) ‰ Loãi baûo veä (protection error) – Ví duï: ghi vaøo file coù thuoäc tính read-only ‰ Loãi soá hoïc (arithmetic error): chia cho 0, traøn soá, ‰ Time overrun – process chôø moät söï kieän laâu hôn moät khoaûng thôøi gian toái ña ñöôïc xaùc ñònh tröôùc Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.36- 18
  10. Baøi toaùn Producer-Consumer ‰ Moâ hình cho söï coäng taùc giöõa caùc process, producer taïo ra caùc thoâng tin, döõ lieäu vaø consumer tieâu thuï, söû duïng caùc döõ lieäu ñoù. Söï trao ñoåi thoâng tin thöïc hieän qua buffer: – unbounded-buffer: kích thöôùc buffer khoâng giôùi haïn. – bounded-buffer: kích thöôùc buffer coù giôùi haïn. ‰ Producer vaø consumer phaûi ñöôïc ñoàng boä hoaït ñoäng – Consumer khoâng theå söû duïng moät döõ lieäu maø producer chöa kòp taïo ra. – Producer khoâng ñöôïc taïo theâm saûn phaåm khi buffer ñaõ ñaày (bounded buffer) ‰ Hieän thöïc buffer – Shared memory – Interprocess communication facility (IPC) Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.39- Ví duï Shared Bounded-Buffer ‰ Shared memory #define BUFFER_SIZE 10 – Shared buffer: danh saùch xoay voøng. typedefstruct{ » in: vò trí ghi keát tieáp . . . » out: vò trí ñoïc keá tieáp } item ; » BUFFER_SIZE: kích thöôùc item buffer[BUFFER_SIZE]; cuûa buffer (chæ ñöôïc duøng intin = 0; BUFFER_SIZE – 1 phaàn töû) intout = 0; ‰ Producer vaø consumer chia seû moät buffer chung ‰ Programmer phaûi hieän thöïc ñoaïn maõ truy xuaát buffer chung cho producer vaø consumer Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.40- 20
  11. Message-Passing IPC ‰ Cung caáp ít nhaát hai phöông tieän giao tieáp: – send(msg) – receive(msg) ‰ Quaù trình giao tieáp caàn tuaân theo moät giao thöùc ñònh tröôùc: – Thieát laäp keânh giao tieáp – Trao ñoåi message Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.43- Hieän thöïc IPC ? ‰ Laøm theá naøo ñeå thieát laäp caùc keânh giao tieáp? ‰ Moät keânh giao tieáp coù theå lieân keát vôùi nhieàu hôn 2 process hay khoâng? ‰ Coù theå taïo bao nhieâu keânh giao tieáp giöõa caùc caëp process muoán thöïc hieän giao tieáp? ‰ Dung löôïng cuûa moät keânh giao tieáp laø bao nhieâu? ‰ Kích thöôùc message truyeàn qua keânh giao tieáp laø coá ñònh (fixed) hay coù tuøy yù ? ‰ Keânh giao tieáp theo hai chieàu hay moät chieàu? Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.44- 22
  12. Moâ hình giao tieáp Client-Server ‰ Sockets ‰ Remote Procedure Calls (RPC) ‰ Remote Method Invocation (RMI) Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.47- Socket ‰ Socket: ñaàu cuoái (endpoint) cuûa moät keânh giao tieáp – Bao goàm ñòa chæ IP vaø soá hieäu port » Ví duï: socket 172.28.11.120:1234 tham chieáu ñeán port 1234 treân maùy coù ñòa chæ IP laø 172.28.11.120 – Ví duï: FTP server laéng nghe ôû port 21, telnet ôû port 23, web server taïi port 80 – Quaù trình giao tieáp ñöôïc thöïc hieän qua moät caëp socket. ‰ Socket laø cô cheá giao tieáp möùc thaáp (low-level) – Göûi nhaän moät chuoãi byte döõ lieäu khoâng coù caáu truùc (unstructured) ‰ Coù hai cô cheá giao tieáp qua socket – Connectionless – Connection-oriented ‰ Berkeley socket (BSD socket): treân Unix/Linux ‰ WinSock: thö vieän socket treân hoï MS Windows Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.48- 24
  13. Connection-Oriented Client/Server Server socket() bind() listen() accept() recv() send() close() Synchronization point com m unication (rendezvous) socket() connect() send() recv() close() Client » send(socket, buffer, buffer_length, flags) »recv(socket, buffer, buffer_length, flags) Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.51- Remote Procedure Call (RPC) ‰ Cô cheá RPC cho pheùp thöïc hieän taùc vuï goïi thuû tuïc (procedure call) giöõa caùc process naèm treân hai maùy tính keát noái baèng heä thoáng maïng. ‰ Caùc vaán ñeà khi hieän thöïc RPC – Truyeàn tham soá vaø keát quaû traû veà cuûa lôøi goïi thuû tuïc – Chuyeån ñoåi döõ lieäu khi truyeàn treân maïng (data conversion) – Keát noái client ñeán server – Bieân dòch chöông trình –Kieåmsoaùtloãi – Security Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.52- 26
  14. Truyeàn tham soá trong RPC ‰ Marshaling: qui taéc truyeàn tham soá vaø chuyeån ñoåi döõ lieäu trong RPC bao goàm caû ñoùng goùi döõ lieäu thaønh daïng thöùc coù theå truyeàn qua maïng maùy tính. ‰ Bieåu dieãn döõ lieäu vaø kieåm tra kieåu döõ lieäu (type checking) – Döõ lieäu bieåu dieãn khaùc nhau treân caùc heä thoáng khaùc nhau » ASCII, EBCDIC » Little Endian vaø Big Endian » Daïng bieåu dieãn XDR (External data representation): ñoäc laäp vôùi heä thoáng beân döôùi (machine-independent) Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.55- Truyeàn tham soá trong RPC (t.t) Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.56- 28
  15. Remote Method Invocation ‰ Remote Method Invocation (RMI) laø cô cheá töông töï RPC nhöng vaän haønh treân neàn maùy aûo Java. ‰ RMI cho pheùp moät chöông trình Java coù theå trieäu goïi moät phöông thöùc (method) cuûa moät ñoái töôïng ôû xa. JV M Re m ote JV M Java O bj ect I Program nvoc ation Remote Object Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.59- Remote Method Invocation (t.t) ‰ Khaùc bieät giöõa RPC vaø RMI – RPC hoã trôï laäp trình caáu truùc (procedural programming) » Chæ cho pheùp trieäu goïi thuû tuïc (procedure) hoaëc haøm (functions) ôû xa. – RMI hoã trôï cô cheá höôùng ñoái töôïng (object-oriented) » RMI cho pheùp trieäu goïi phöông thöùc (method) treân ñoái töôïng ôû xa (remote object) – Trong RPC, tham soá truyeàn ñeán thuû tuïc/haøm ôû xa laø döõ lieäu bình thöôøng (soá, chuoãi kí töï, daõy, ) – Trong RMI, tham soá truyeàn ñeán ñoái töôïng ôû xa coù theå laø moät ñoái töôïng Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.60- 30
  16. Windows NT Thread Object ‰ Thread ID ‰ Thread context ‰ Dynamic priority ‰ Base priority ‰ Thread processor affinity ‰ Thread execution time ‰ Alert status ‰ Suspension count ‰ Impersonation token ‰ Termination port ‰ Thread exit status Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.63- NT Thread Status Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.64- 32
  17. Solaris Light weight Processes Khoa Coâng Ngheä Thoâng Tin – Ñaïi Hoïc Baùch Khoa Tp.HCM -4.67- 34