Bài giảng Quá trình

HĐH thực hiện nhiều kiểu chương trình: Hệ thống bó – jobs Các hệ thống chia sẻ thời gian–cácchương trình người dùng/ các nhiệmvụ „ Công việc (job) = quá trình (process) „ Quá trình là một chương trình trong sự thực hiện; sự thực hiện quá trình phải tiến triển theo kiểu cách tuần tự „ Một quá trình bao gồm: Bộ đếm chương trình Stack Phần dữ liệu

pdf44 trang | Chia sẻ: vietpd | Lượt xem: 1549 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Quá trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 3: QUÁ TRÌNH 3.2 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 NỘI DUNG „ Khái niệm quá trình „ Lập lịch biểu quá trình „ Các hoạt động trên quá trình „ Hợp tác các quá trình „ Liên lạc giữa các quá trình „ Liên lạc trong các hệ Client-Server 3.3 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 KHÁI NIỆM QUÁ TRÌNH „ HĐH thực hiện nhiều kiểu chương trình: z Hệ thống bó – jobs z Các hệ thống chia sẻ thời gian – các chương trình người dùng/ các nhiệm vụ „ Công việc (job) = quá trình (process) „ Quá trình là một chương trình trong sự thực hiện; sự thực hiện quá trình phải tiến triển theo kiểu cách tuần tự „ Một quá trình bao gồm: z Bộ đếm chương trình z Stack z Phần dữ liệu 3.4 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 Process in Memory 3.5 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 TRẠNG THÁI QUÁ TRÌNH „ Khi quá trình thực hiện nó thay đổi trạng thái z new: Quá trình đang được khởi tạo z running: các chỉ thị đang được thực hiện z waiting: Quá trình đang chờ đợi một biến cố xảy ra z ready: Quá trình đang chờ được cấp processor z terminated: Quá trình kết thúc sự thực hiện 3.6 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 BIỂU ĐỒ TRẠNG THÁI QUÁ TRÌNH 3.7 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 KHỐI ĐIỀU KHIỂN QUÁ TRÌNH Process Control Block (PCB) Thông tin kết hợp với mỗi quá trình „ Trạng thái quá trình „ Bộ đếm chương trình „ Các thanh ghi CPU „ Thông tin lập lịch biểu CPU „ Thông tin quản trị bộ nhớ „ Thông tin kiểm toán „ Thông tin trạng thái I/O 3.8 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 KHỐI ĐIỀU KHIỂN QUÁ TRÌNH (PCB) 3.9 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 SỰ CHUYỂN CPU QUA LẠI GIỮA CÁC QUÁ TRÌNH 3.10 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 CÁC HÀNG ĐỢI LẬP LỊCH BIỂU QUÁ TRÌNH „ Hàng đợi công việc (Job Queue) – tập tất cả các quá trình trong hệ thống „ Hàng đợi sẵn sàng (Ready Queue) – tập các quá trình nằm trong bộ nhớ sẵn sàng và chờ đợi thực hiện „ Các hàng đợi thiết bị (Device Queues) – tập các quá trình chờ đợi một thiết bị I/O „ Các quá trình di trú giữa các hàng đợi 3.11 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 HÀNG ĐỢI SẴN SÀNG & CÁC HÀNG ĐỢI THIẾT BỊ I/O 3.12 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 SƠ ĐỒ LẬP LỊCH BIỂU QUÁ TRÌNH 3.13 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 CÁC BỘ LẬP LỊCH BIỂU „ Bộ lập lịch biểu dài hạn (Long-term scheduler / job scheduler) – chọn các quá trình để chuyển sang hàng đợi sẵn sàng „ Bộ lập lịch biểu ngắn hạn (Short-term scheduler / CPU scheduler) – chọn quá trình sẽ được thực hiện kế tiếp và cấp phát CPU cho nó 3.14 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 BỔ XUNG LẬP LỊCH BIỂU TRUNG HẠN 3.15 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 CÁC BỘ LẬP LỊCH BIỂU (Cont.) „ Bộ lập lịch biểu ngắn hạn được viện dẫn thường xuyên (ms) ⇒ nhanh „ Bộ lập lịch biểu dài hạn được viện dẫn ít thường xuyên (seconds, minutes) ⇒ có thể chậm „ Bộ lập lịch biểu dài hạn điều khiển bậc đa chương „ Các quá trình được phân thành: z Quá trình I/O-bound – tiêu nhiều thời gian cho hoạt động I/O hơn cho tính toán, gồm nhiều CPU bursts ngắn z Quá trình CPU-bound – tiêu nhiều thời gian hơn cho tính toán; gồm một số ít CPU bursts rất dài 3.16 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 CHUYỂN NGỮ CẢNH „ Khi CPU chuyển cho quá trình khác, hệ thống phải lưu lại trạng thái của quá trình cũ và nạp trạng thái của quá trình mới „ Thời gian chuyển ngữ cảnh là một “phí”; hệ thống không làm việc “hữu ích” khi chuyển ngữ cảnh „ Thời gian chuyển ngữ cảnh phụ thuộc vào hỗ trợ phần cứng 3.17 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 TẠO QUÁ TRÌNH „ Quá trình cha tạo ra các quá trình con, các quá trình con lại có thể tạo ra các quá trình con của nó, tạo ra một cây các quá trình „ Chia sẻ tài nguyên z Cha và con chia sẻ tất cả các tài nguyên z Các con chia sẻ một tập con các tài nguyên của cha z Cha và con không chia sẻ tài nguyên „ Sự thực hiện z Cha và các con thực hiện đồng thời z Cha chờ đến tận khi con kết thúc 3.18 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 TẠO QUÁ TRÌNH (Cont.) „ Không gian địa chỉ z Con sao lại của cha z Con có một chương trình được nạp vào trong nó „ Ví dụ: UNIX z Fork: lời gọi hệ thống tạo quá trình mới z Exec: lời gọi hệ thống được dùng sau fork để thay thế không gian bộ nhớ của quá trình với chương trình mới 3.19 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 TẠO QUÁ TRÌNH 3.20 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 CHƯƠNG TRÌNH C PHÂN NHÁNH QUÁ TRÌNH int main() { pid_t pid; /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); } else { /* parent process */ /* parent will wait for the child to complete */ wait (NULL); printf ("Child Complete"); exit(0); } } 3.21 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 CÂY QUÁ TRÌNH TRONG Solaris 3.22 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 KẾT THÚC QUÁ TRÌNH „ Quá trình thực hiện xong chỉ thị sau cùng và yêu cầu HĐH xóa nó (exit) z Xuất dữ liệu từ con đến cha (thông qua wait) z Các tài nguyên của quá trình được thu hồi bởi HĐH „ Cha có thể kết thúc sự thực hiện của các quá trình con (abort) z Con vượt quá các tài nguyên được cấp phát z Nhiệm vụ của con không còn được cần thiết nữa z Nếu cha đang thoát Một số HĐH không cho phép con tiếp tục nếu cha kết thúc – Tất cả các con bị kết thúc – Kết thúc hàng loạt (cascading termination) 3.23 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 CÁC QUÁ TRÌNH HỢP TÁC „ Quá trình độc lập không ảnh hưởng và không bị ảnh hưởng bởi sự thực hiện của quá trình khác „ Quá trình hợp tác có thể ảnh hưởng và bị ảnh hưởng bởi sự thực hiện của quá trình khác „ Các lợi thế của sự hợp tác quá trình z Chia sẻ thông tin z Tăng tốc độ tính toán z Module hóa z Tiện lợi 3.24 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 VẤN ĐỀ PRODUCER-CONSUMER „ Kiểu mẫu cho các quá trình hợp tác, quá trình producer sản suất thông tin được tiêu thụ bởi quá trình consumer z Buffer không giới nội (unbounded-buffer) không bị giới hạn về kích cỡ buffer z Buffer giới nội (bounded-buffer) buffer có kích cỡ cố định 3.25 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 BUFFER GIỚI NỘI – GIẢI PHÁP BỘ NHỚ CHIA SẺ „ Dữ liệu chia sẻ #define BUFFER_SIZE 10 typedef struct { . . . } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; „ Giải pháp đúng nhưng chỉ sử dụng được BUFFER_SIZE-1 phần tử 3.26 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 BUFFER GIỚI NỘI – PHƯƠNG PHÁP Insert() 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; } 3.27 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 BUFFER GIỚI NỘI – PHƯƠNG PHÁP Remove() 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; } 3.28 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 LIÊN LẠC GIỮA CÁC QUÁ TRÌNH (IPC) „ Cơ chế cho sự liên lạc giữa các quá trình và đồng bộ hóa các hành động của chúng „ Hệ thống thông điệp – các quá trình liên lạc với nhau không sử dụng đến các biến chia sẻ „ IPC cung cấp hai hoạt động: z send(message) – message kích cỡ cố định/thay đổi z receive(message) „ Nếu P và Q muốn liên lạc, chúng cần phải: z Thiết lập một nối kết liên lạc z Trao đổi các thông điệp (messages) dùng send/receive „ Thực thi nối kết liên lạc: z Vật lý (bộ nhớ chia sẻ, hardware bus) z logic (Các tính chất logic) 3.29 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 MỘT SỐ VẤN ĐỀ THỰC THI „ Các nối kết được thiết lập như thế nào? „ Một nối kết có thể kết hợp với hơn hai quá trình? „ Có thể có bao nhiêu nối kết giữa mỗi cặp quá trình liên lạc? „ Khả năng của một nối kết? „ Kích cỡ thông điệp mà nối kết chịu đựng được là cố định / thay đổi? „ Một nối kết là đơn hướng hay lưỡng hướng? 3.30 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 CÁC MÔ HÌNH LIÊN LẠC 3.31 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 LIÊN LẠC TRỰC TIẾP „ Các quá trình phải định tên tường minh mỗi quá trình khác: z send (P, message) – gửi một message cho quá trình P z receive(Q, message) – nhận một message từ quá trình Q „ Các tính chất của một nối kết liên lạc z Các nối kết được thiết lập tự động z Một nối kết được kết hợp với đúng một cặp quá trình liên lạc z Giũa mỗi cặp có đúng một nối kết z Nối kết có thể đơn hướng, nhưng thông thường là lưỡng hướng 3.32 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 LIÊN LẠC GIÁN TIẾP „ Các thông điệp được gửi và nhận từ mailboxes (cũng được tham khảo như các ports) z Mỗi mailbox có một id duy nhất z Các quá trình có thể liên lạc nếu chúng chia sẻ một mailbox „ Các tính chất của nối kết liên lạc z Nối kết chỉ được thiết lập nếu các quá trình chia sẻ một mailbox chung z Một nối kết có thể được kết hợp với nhiều quá trình z Mỗi cặp quá trình có thể chia sẻ một vài nối kết liên lạc z Nối kết có thể đơn hướng hoặc lưỡng hướng 3.33 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 LIÊN LẠC GIÁN TIẾP „ Các hoạt động z Tạo một mailbox mới z Gửi và nhận messages qua mailbox z Phá hủy mailbox „ Các nguyên thủy: send(A, message) – gửi một message đến mailbox A receive(A, message) – nhận một message từ mailbox A 3.34 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 LIÊN LẠC GIÁN TIẾP „ Chia sẻ mailbox z P1, P2, và P3 chia sẻ mailbox A z P1, gủi; P2 và P3 nhận z Ai nhận message? „ Các giải pháp z Cho phép một nối kết kết hợp với nhiều nhất hai quá trình z Chỉ cho phép một quá trình tại một thời điểm thực hiện hoạt động nhận z Cho phép hệ thống chọn tùy ý người nhận. Người gửi báo ai sẽ nhận. 3.35 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 ĐỒNG BỘ HÓA „ Truyền Message có thể là blocking / non-blocking „ Blocking được xét là đồng bộ (synchronous) z Gửi Blocking: người gửi bị ngăn đến tận khi message được nhận z Nhận Blocking: người nhận bị ngăn đến tận khi một message là sẵn có „ Non-blocking được xét là phi đồng bộ (asynchronous) z Gửi Non-blocking: Người gửi gửi message và tiếp tục z Nhận Non-blocking: người nhận nhận một message hợp lệ / vô hiệu 3.36 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 BUFFER „ Hàng đợi các messages gắn với nối kết; được thực thi bởi một trong ba cách 1. Sức chứa Zero – 0 messages Người gửi phải chờ người nhận (hẹ hò) 2. Sức chứa giới nội – n messages Người gửi phải chờ nếu nối kết đầy 3. Sức chứa không giới hạn Người gửi không phải chờ 3.37 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 LIÊN LẠC Client-Server „ Sockets „ Remote Procedure Calls - RPC „ Remote Method Invocation (Java) -RMI 3.38 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 Sockets „ Một socket được định nghĩa như điểm cuối của một liên lạc „ Nối địa chỉ IP và port „ Socket 161.25.19.8:1625 tham khảo port 1625 trên host 161.25.19.8 „ Liên lạc gồm một cặp sockets 3.39 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 LIÊN LẠC Socket 3.40 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 GỌI THỦ TỤC TỪ XA Remote Procedure Calls - RPC „ Remote procedure call (RPC): gọi thủ tục giữ các quá trình trên các hệ thống mạng. „ Stubs – proxy phía client cho thủ tục trên server. „ Stub phía client định vị server và sắp xếp theo thứ tự (marshal) các tham số. „ Stub phía server nhận message này, tháo các tham số được, và thực hiện thủ tục trên server. 3.41 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 SỰ THỰC HIỆN RPC 3.42 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 Remote Method Invocation - RMI „ Remote Method Invocation (RMI) là một cơ chế Java tương tự RPC. „ RMI cho phép một chương trình Java program trên một máy gọi một phương pháp trên một đối tượng ở xa. 3.43 Silberschatz, Galvin and Gagne ©2005Operating System Concepts - 7th Edition, Feb 7, 2006 CÁC THAM SỐ ĐƯỢC SẮP THEO THỨ TỰ End of Chapter 3
Tài liệu liên quan