Bài giảng Nguyên lí hệ điều hành - Chương 3: Tiến trình (Processes)
Bạn đang xem tài liệu "Bài giảng Nguyên lí hệ điều hành - Chương 3: Tiến trình (Processes)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_nguyen_li_he_dieu_hanh_chuong_3_tien_trinh_process.pdf
Nội dung text: Bài giảng Nguyên lí hệ điều hành - Chương 3: Tiến trình (Processes)
- Nội dung chương 3 BÀI GIẢNG NGUYÊN LÝ HỆ ĐIỀU HÀNH Khái niệm tiến trình Lập lịch tiến trình Chương 3: Tiến trình (Processes) Các hoạt động trên tiến trình Các tiến trình hợp tác Phạm Quang Dũng Bộ môn Khoa học máy tính (Cooperating Processes) Khoa Công nghệ thông tin Giao tiếp liên tiến trình Trường Đại học Nông nghiệp HN Website: fita.hua.edu.vn/pqdung (Interprocess Communication) Bài giảng Nguyên lý Hệ điều hành 3.2 Phạm Quang Dũng ©2008 3.1. Khái niệm tiến trình (process) Tiến trình trong bộ nhớ Một HĐH thực hiện nhiều loại chương trình khác nhau: z Batch system: thực hiện các job z Time-shared system: thực hiện user programs hoặc tasks Các thuật ngữ job và process là tương tự nhau. Process – một chương trình đang được thực hiện; sự thực hiện tiến trình phải tiến triển theo kiểu tuần tự. Một tiến trình (process) bao gồm: z program counter - bộ đếm chương trình z stack - ngăn xếp z data section - đoạn dữ liệu Bài giảng Nguyên lý Hệ điều hành 3.3 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.4 Phạm Quang Dũng ©2008 1
- Các trạng thái tiến trình Khối điều khiển tiến trình Process Control Block (PCB) Mỗi tiến trình được biểu diễn trong HĐH bởi một PCB. Mỗi PCB chứa các thông tin được gắn với mỗi tiến trình: z Trạng thái tiến trình z Bộ đếm chương trình Khi một tiến trình thực hiện, nó có thể thay đổi trạng thái (state) z Các thanh ghi của CPU z new: Tiến trình đang được khởi tạo. z Thông tin lịch trình CPU z running: Tiến trình ở trong CPU. Các lệnh đang được thực hiện. z Thông tin quản lý bộ nhớ z waiting: Tiến trình đang chờ sự kiện nào đóxuất hiện. z Thông tin sử dụng CPU, thời gian, các số hiệu tiến trình z ready: Tiến trình đang chờ đến lượt được thực hiện bởi CPU. z Thông tin trạng thái vào/ra z terminated: Tiến trình kết thúc. Nó không biến mất cho đến khi một tiến trình khác đọc được trạng thái thoát của nó. Bài giảng Nguyên lý Hệ điều hành 3.5 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.6 Phạm Quang Dũng ©2008 Process Control Block (PCB) CPU chuyển giữa các tiến trình Bài giảng Nguyên lý Hệ điều hành 3.7 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.8 Phạm Quang Dũng ©2008 2
- 3.2. Lập lịch tiến trình (process scheduling) Các queue lập lịch tiến trình Mục tiêu của multiprogramming là có nhiều tiến trình Jobqueue–tập hợp tất cả các tiến trình trong hệ thống. cùng chạy tại mọi thời điểm để tối đa hóa sử dụng CPU. Ready queue – tập hợp tất cả các tiến trình cư trú trong bộ nhớ chính, đã sẵn sàng và chờ được thực hiện. Mục tiêu của time-sharing là chuyển CPU giữa các tiến z FIFO queue trình càng thường xuyên càng tốt để người sử dụng có z Priority queue thể tương tác với mỗi chương trình khi nó đang chạy. z Tree Một HĐH đơn processor chỉ có thể chạy 1 tiến trình. z Danh sách liên kết Nếu có nhiều tiến trình tồn tại, chúng phải đợi đến khi Device queues – tập hợp các tiến trình đang chờ một CPU rỗi và được lập lịch lại. thiết bị vào/ra. Tiến trình có thể di trú giữa các queue khác nhau. Bài giảng Nguyên lý Hệ điều hành 3.9 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.10 Phạm Quang Dũng ©2008 Sơ đồ lập lịch tiến trình Các trình lập lịch - Schedulers Long-term scheduler (trình lập lịch dài kỳ) z còn được gọi là job scheduler. z lựa chọn những tiến trình nào nên được đưa từ đĩa vào trong ready queue. z được sử dụng đến rất không thường xuyên (seconds, minutes) ⇒ may be slow. z kiểm soát mức đa chương trình (degree of multiprogramming), vd: số tiến trình. Short-term scheduler (trình lập lịch ngắn kỳ) z còn được gọi là CPU scheduler. z lựa chọn tiến trình nào nên được thực hiện kế tiếp và phân phối CPU cho nó. z được sử dụng đến rất thường xuyên (milliseconds) ⇒ must be fast. Bài giảng Nguyên lý Hệ điều hành 3.11 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.12 Phạm Quang Dũng ©2008 3
- Các trình lập lịch (tiếp) Chuyển ngữ cảnh - Context Switch Một số HĐH, như HĐH chia sẻ thời gian, có thể có thêm trình lập Các tiến trình có thể được mô tả là: lịch trung kỳ (medium-term scheduler). z I/O-bound process –sử dụng nhiều thời gian thực hiện vào/ra hơn việc Tư tưởng là thực hiện swapping (kỹ thuật hoán chuyển): tính toán, nhiều lần chiếm dụng CPU ngắn. Cần chuyển ngữ cảnh z Đưa tiến trình ra khỏi bộ nhớ khi cần thiết thường xuyên tại thời điểm bắt đầu và kết thúc I/O. Khi cân đối giữa các tiến trình tính toán nhiều và tiến trình vào/ra nhiều z CPU-bound process –sử dụng nhiều thời gian cho việc tính toán hơn; Khi cần giải phóng bộ nhớ cho việc khác ít lần chiếm dụng CPU dài. Cũng cần chuyển ngữ cảnh thường xuyên để z Sau đó đưa tiến trình trở lại bộ nhớ để thực hiện tiếp tránh tr.hợp một tiến trình ngăn chặn các tiến trình khác sử dụng CPU. Khi CPU chuyển tới một tiến trình khác, hệ thống phải lưu trạng thái của tiến trình trước và nạp trạng thái đã lưu cho tiến trình mới. Thời gian chuyển ngữ cảnh phụ thuộc vào sự hỗ trợ phần cứng. Hệ thống thực hiện công việc vô ích trong khi chuyển (ngữ cảnh). Bài giảng Nguyên lý Hệ điều hành 3.13 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.14 Phạm Quang Dũng ©2008 3.3. Các hoạt động trên tiến trình a) Sự tạo tiến trình - Process Creation Tiến trình cha (parent process) tạo ra các tiến trình con (children Các tiến trình trong hệ thống có thể thực hiện đồng processes), chúng lần lượt tạo ra các tiến trình con khác tạo thành cây tiến trình (tree of processes). thời, và chúng phải được tạo (create) và xóa (delete) một cách tự động. Do đó HĐH phải cung cấp kỹ thuật tạo và xóa tiến trình. Tạo tiến trình là một công việc "nặng nhọc" vì phải phân phối bộ nhớ và tài nguyên. Bài giảng Nguyên lý Hệ điều hành 3.15 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.16 Phạm Quang Dũng ©2008 4
- Sự tạo tiến trình (tiếp) Các tiến trình trong UNIX Các lựa chọn chia sẻ tài nguyên (resource sharing) fork -lệnh hệ thống tạo một tiến trình mới. z Tiến trình cha và con chia sẻ tất cả tất cả các tài nguyên. exec -lệnh hệ thống được sử dụng sau lệnh fork z Tiến trình con chia sẻ tập con các tài nguyên của tiến trình cha. để thay thế không gian bộ nhớ của tiến trình bởi z Tiến trình cha và con không có sự chia sẻ tài nguyên. một chương trình mới. Không gian địa chỉ (Address space) z Tiến trình con sao chép tiến trình cha. z Tiến trình con có một chương trình được nạp vào trong nó. Sự thực hiện (execution) z Tiến trình cha và con thực hiện đồng thời. z Tiến trình cha đợi cho đến khi tiến trình con kết thúc. UNIX examples Bài giảng Nguyên lý Hệ điều hành 3.17 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.18 Phạm Quang Dũng ©2008 C Program Forking Separate Process A tree of processes on a typical Solaris 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); } } Bài giảng Nguyên lý Hệ điều hành 3.19 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.20 Phạm Quang Dũng ©2008 5
- b) Sự kết thúc tiến trình 3.4. Các tiến trình hợp tác Tiến trình thực hiện câu lệnh cuối cùng và yêu cầu HĐH tự kết Tiến trình độc lập (Independent process): thúc (exit). z Dữ liệu ra từ tiến trình con đến tiến trình cha (qua lệnh wait). z không thể tác động hay chịu tác động bởi sự thực hiện z Các tài nguyên của tiến trình được HĐH phân phối lại. của tiến trình khác. Tiến trình cha có thể chấm dứt việc thực hiện tiến trình con (abort). Tiến trình hợp tác (Cooperating process): z Tiến trình con dùng quá tài nguyên được phân phối. z có thể tác động hoặc chịu tác động bởi sự thực hiện z Nhiệm vụ mà tiến trình con thực hiện không còn cần thiết. của tiến trình khác. z Tiến trình cha đang kết thúc. HĐH có thể lựa chọn: Dừng tiến trình con. Xếp tầng sự chấm dứt (Cascading z vd: tiến trình này chia sẻ dữ liệu với tiến trình khác. termination): tiến trình cháu cũng bị dừng, Tiến trình cháu tồn tại do được tiến trình ông chấp nhận. Bài giảng Nguyên lý Hệ điều hành 3.21 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.22 Phạm Quang Dũng ©2008 Các tiến trình hợp tác (tiếp) 3.5. Giao tiếp liên tiến trình Interprocess Communication (IPC) Các lợi điểm của tiến trình hợp tác Là cơ chế để các tiến trình giao tiếp và để đồng bộ các hành z Chia sẻ thông tin - Information sharing động của chúng mà không phải chia sẻ không gian địa chỉ chung. z Tăng tốc độ tính toán - Computation speed-up Khả năng IPC cung cấp 2 hoạt động: z Mô-đun hóa - Modularity z send (message)– kích thước của message cố định hoặc biến đổi z Sự tiện lợi - Convenience (vd người sử dụng cùng thực hiện soạn z receive (message) thảo, in ấn, biên dịch song song) Nếu các tiến trình P và Q muốn giao tiếp, chúng cần phải: Mô hình các tiến trình hợp tác: tiến trình sản xuất (producer z thiết lập một liên kết giao tiếp (communication link) giữa chúng. process) tạo ra các thông tin để tiến trình tiêu thụ (consumer z trao đổi các message qua các hoạt động send/receive. process) sử dụng. Sự thực hiện của communication link z unbounded-buffer : giả thiết kích thước buffer vô hạn. z physical (vd: shared memory, hardware bus) z bounded-buffer : thừa nhận có một kích thước buffer cố định. z logical (vd: logical properties) Bài giảng Nguyên lý Hệ điều hành 3.23 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.24 Phạm Quang Dũng ©2008 6
- Các mô hình giao tiếp Giao tiếp trực tiếp Các tiến trình phải xác định rõ tên của nhau: z send (P, message) – gửi một message tới tiến trình P z receive (Q, message) – nhận message từ tiến trình Q Các đặc tính của communication link: z Các liên kết được thiết lập tự động. z Mỗi liên kết được gắn với duy nhất một cặp tiến trình giao tiếp với nhau. z Giữa mỗi cặp tiến trình tồn tại duy nhất 1 liên kết. z Liên kết thường là 2 chiều (bi-directional), hoặc có thể có 2 liên kết một chiều (unidirectional) P-to-Q, Q-to-P. Bài giảng Nguyên lý Hệ điều hành 3.25 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.26 Phạm Quang Dũng ©2008 Giao tiếp gián tiếp Giao tiếp gián tiếp (tiếp) Các message được gửi và nhận từ các mailbox (còn Các hoạt động: được gọi là port). z tạo/xoá một mailbox z Mỗi mailbox có duy nhất một id. z send(A, message) – gửi một message tới mailbox A z Các tiến trình chỉ có thể giao tiếp nếu chúng chia sẻ một z receive(A, message) – nhận một message từ mailbox A mailbox. Vấn đề Mailbox sharing: Các đặc tính của communication link: z P1, P2, và P3 chia sẻ mailbox A. z Các liên kết được thiết lập chỉ khi các tiến trình chia sẻ một z P , gửi; P và P nhận. mailbox chung. 1 2 3 z Tiến trình nào nhận được message? z Một liên kết có thể được gắn với nhiều tiến trình. z Mỗi cặp tiến trình có thể chia sẻ một số communication link. z Liên kết có thể là 2 chiều hoặc 1 chiều. Bài giảng Nguyên lý Hệ điều hành 3.27 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.28 Phạm Quang Dũng ©2008 7
- Giao tiếp gián tiếp (tiếp) Sự đồng bộ hóa - Synchronization Giải pháp: Message passing có thể là có khóa (blocking) hoặc không khóa (non-blocking) z Một liên kết được gắn với tối đa 2 tiến trình. Blocking được coi là đồng bộ (synchronous). z Cho phép tại một thời điểm chỉ 1 tiến trình thực hiện nhận message. z Blocking send: tiến trình gửi bị khóa đến khi message được nhận bởi tiến trình nhận hoặc bởi mailbox. z Cho phép hệ thống tuỳ chọn tiến trình nhận. Tiến trình gửi z Blocking receive: tiến trình nhận/mailbox khóa đến khi nhận được thông báo tiến trình nào nhận message. xong message. z Các tiến trình khác nhận được một bản copy. Non-blocking được coi là không đồng bộ (asynchronous). z Nonblocking send: tiến trình gửi gửi message rồi lại tiếp tục. z Nonblocking receive: tiến trình nhận/mailbox nhận được một message đúng hoặc vô dụng. Bài giảng Nguyên lý Hệ điều hành 3.29 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.30 Phạm Quang Dũng ©2008 Buffering VD: Windows 2000/XP Hàng đợi của các message được gắn vào liên kết và được Cung cấp sự hỗ trợ cho các môi trường đa xử lý (subsystems). thực hiện bằng một trong ba cách: Các chương trình ứng dụng có thể được coi là client của Windows 2000 subsystem server. Chúng giao tiếp sử dụng kỹ 1. Zero capacity: queue có độ dài lớn nhất bằng 0. Do đó, liên kết thuật message-passing. không thể có message đang chờ trong nó. Tiến trình gửi phải Khả năng message-passing trong Windows 2000 được gọi là đợi tiến trình nhận. LPC (local procedure call). LPC trong Windows 2000 cho phép giao tiếp giữa 2 tiến trình trên cùng máy. 2. Bounded capacity: queue có độ dài giới hạn bằng n. Khi 1 Mọi client gọi 1 subsystem cần có 1 kênh giao tiếp (connection message được gửi, nó sẽ được đưa vào queue nếu queue port hay communication port) được cung cấp bởi port object. chưa đầy, tiến trình gửi không phải đợi, và ngược lại. Sử dụng 3 kỹ thuật chuyển message qua cổng: 3. Unbounded capacity: queue có độ dài vô hạn. Tiến trình gửi z dùng message queue của cổng: message ≤ 256 byte không bao giờ phải đợi. z dùng bộ nhớ chia sẻ: dung lượng message lớn hơn z dùng kỹ thuật callback: khi client/server không thể đáp ứng lập tức Bài giảng Nguyên lý Hệ điều hành 3.31 Phạm Quang Dũng ©2008 Bài giảng Nguyên lý Hệ điều hành 3.32 Phạm Quang Dũng ©2008 8