Giáo án Hệ điều hành - Chương 3: Tiến trình (Process) - Hà Lê Hoài Trung

pdf 35 trang huongle 3750
Bạn đang xem 20 trang mẫu của tài liệu "Giáo án Hệ điều hành - Chương 3: Tiến trình (Process) - Hà Lê Hoài Trung", để 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:

  • pdfgiao_an_he_dieu_hanh_chuong_3_tien_trinh_process_ha_le_hoai.pdf

Nội dung text: Giáo án Hệ điều hành - Chương 3: Tiến trình (Process) - Hà Lê Hoài Trung

  1. Chương III: Tiến trình (Process)  Khái niệm cơ bản  Trạng thái quá trình  Khối điều khiển quá trình (Process control block)  Định thời quá trình (Process Scheduling)  Các tác vụ đối với quá trình  Sự cộng tác giữa các quá trình  Giao tiếp giữa các quá trình Khoa KTMT 1
  2. 3.1. Khái niệm cơ bản  Cái gì gọi các hoạt động của CPU? – Hệ thống bó (Batch system): jobs – Time-shared systems: user programs, tasks – Các hoạt động là tương tự => gọi là process  Quá trình (process) – một chương trình đang thực thi Một quá trình bao gồ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 2
  3. 3.1. Khái niệm cơ bản Các bước nạp chương trình vào bộ nhớ Khoa KTMT 3
  4. 3.1. Khái niệm cơ bản chương trình => quá trình  Dùng load module để biểu diễn chương trình thực thi được  Layout luận lý của process image Executable binary file Process image in (load module) main memory start address program program code code data data stack Khoa KTMT 4
  5. 3.1. Khái niệm cơ bản Khởi tạo quá trình  Các bước hệ điều hành khởi tạo quá trình – Cấp phát một định danh duy nhất (process number hay process identifier, pid) cho quá trình – Cấp phát không gian nhớ để nạp quá trình – Khởi tạo khối dữ liệu Process Control Block (PCB) cho quá trình . PCB là nơi hệ điều hành lưu các thông tin về quá trình – Thiết lập các mối liên hệ cần thiết (vd: sắp PCB vào hàng đợi định thời, ) Khoa KTMT 5
  6. 3.2.Trạng thái quá trình  Các trạng thái của quá trình (process states): – new: quá trình vừa được tạo – ready: quá trình đã có đủ tài nguyên, chỉ còn cần CPU – running: các lệnh của quá trình đang được thực thi – waiting: hay là blocked, quá trình đợi I/O hoàn tất, tín hiệu. – terminated: quá trình đã kết thúc. Khoa KTMT 6
  7. 3.2.Trạng thái quá trình  Chuyển đổi giữa các trạng thái của quá trình terminated new admit dispatch exit ready running interrupt I/O or event I/O or completion event wait waiting Khoa KTMT 7
  8. 3.2.Trạng thái quá trình Ví dụ  Chuỗi trạng thái của quá /* test.c */ trình test như sau (trường int main(int argc, char argv) { hợp tốt nhất): printf(“Hello world\n"); – new exit(0); } – ready – running Biên dịch chương trình trong Linux gcc test.c –o test – waiting (do chờ I/O khi gọi printf) Thực thi chương trình test – ready ./test – running Trong hệ thống sẽ có một quá trình – terminated test được tạo ra, thực thi và kết thúc. Khoa KTMT 8
  9. 3.3.Process control block  Đã thấy là mỗi quá trình trong hệ thống đều được cấp phát một Process Control Block (PCB)  PCB là một trong các cấu trúc dữ liệu quan trọng nhất của hệ điều hành và gồm: - Trạng thái quá trình: new, ready, running, - Bộ đếm chương trình - Các thanh ghi - Thông tin lập thời biểu CPU: độ ưu tiên, - Thông tin quản lý bộ nhớ - Thông tin tài khoản: lượng CPU, thời gian sử dụng, - Thông tin trạng thái I/O Khoa KTMT 9
  10. 3.3.Process control block Lưu đồ chuyển CPU từ quá trình này đến quá trình khác Khoa KTMT 10
  11. Yêu cầu đối với hệ điều hành về quản lý quá trình  Hỗ trợ sự thực thi luân phiên giữa nhiều quá trình – Hiệu suất sử dụng CPU – Thời gian đáp ứng  Phân phối tài nguyên hệ thống hợp lý – tránh deadlock, trì hoãn vô hạn định,  Cung cấp cơ chế giao tiếp và đồng bộ hoạt động các quá trình  Cung cấp cơ chế hỗ trợ user tạo/kết thúc quá trình Khoa KTMT 11
  12. Quản lý các quá trình: các hàng đợi  Ví dụ các PCB running 7 process number ready 11 4 2 17 waiting 19 11 Có gì sai trong ví dụ? Khoa KTMT 12
  13. 3.4. Định thời quá trình (Process Scheduling)  Tại sao phải định thời? – Đa chương (Multiprogramming) . Có vài quá trình chạy tại các thời điểm . Mục tiêu: tận dụng tối đa CPU – Chia thời(Time-sharing) . Users tương tác với mỗi chương trình đang thực thi . Mục tiêu: tối thiểu thời gian đáp ứng  Một số khái niệm cơ bản – Các bộ định thời (scheduler) – Các hàng đợi định thời (scheduling queue) Khoa KTMT 13
  14. Các hàng đợi định thời (Scheduling queues)  Hàng đợi công việc-Job queue  Hàng đợi sẵn sàng-Ready queue  Hàng đợi thiết bị-Device queues  Khoa KTMT 14
  15. Các hàng đợi định thời (Scheduling queues) Lưu đồ hàng đợi của định thời quá trình Khoa KTMT 15
  16. 3.5. Bộ định thời (Scheduler)  Bộ định thời công việc (Job scheduler) hay bộ định thời dài (long-term scheduler)  Bộ định thời CPU hay bộ định thời ngắn  Các quá trình có thể mô tả như: – Quá trình hướng I/O (I/O bound process) – Quá trình hướng CPU (CPU bound process) Thời gian thực hiện khác nhau => kết hợp hài hòa giữa chúng Khoa KTMT 16
  17. Bộ định thời trung gian(medium-term scheduling)  Đôi khi hệ điều hành (như time-sharing system) có thêm medium-term scheduling để điều chỉnh mức độ đa chương của hệ thống  Medium-term scheduler – chuyển quá trình từ bộ nhớ sang đĩa (swap out) – chuyển quá trình từ đĩa vào bộ nhớ (swap in) Khoa KTMT 17
  18. 3.6. Các tác vụ đối với quá trình  Tạo quá trình mới (process creation) – Một quá trình có thể tạo nhiều quá trình mới thông qua một lời gọi hệ thống create-process (vd: hàm fork trong Unix) . Ví dụ: (Unix) Khi user đăng nhập hệ thống, một command interpreter (shell) sẽ được tạo ra cho user  Quá trình được tạo là quá trình con của quá trình tạo (quá trình cha). Quan hệ cha-con định nghĩa một cây quá trình. Khoa KTMT 18
  19. Cây quá trình trong Linux/Unix  Ví dụ Khoa KTMT 19
  20. 3.6.Các tác vụ đối với quá trình  Tạo quá trình mới – Quá trình con nhận tài nguyên: từ HĐH hoặc từ P cha – Chia sẻ tài nguyên của quá trình cha . Quá trình cha và con chia sẻ mọi tài nguyên . Quá trình con chia sẻ một phần tài nguyên của cha – Trình tự thực thi . Quá trình cha và con thực thi đồng thời (concurrently) . Quá trình cha đợi đến khi các quá trình con kết thúc. Khoa KTMT 20
  21. Về quan hệ cha/con  Không gian địa chỉ (address space) – Không gian địa chỉ của quá trình con được nhân bản từ cha – Không gian địa chỉ của quá trình con được khởi tạo từ template.  Ví dụ trong UNIX/Linux – System call fork() tạo một quá trình mới – System call exec() dùng sau fork() để nạp một chương trình mới vào không gian nhớ của quá trình mới đồng bộ Khoa KTMT 21
  22. Ví dụ tạo process với 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); } } Khoa KTMT 22
  23. Ví dụ void main(){ printf (“hi”); fork (); printf (“Hello”); fork (); printf (“Bye”); } Hỏi chương trình in ra các dịng chữ nào trên màn hình. Khoa KTMT 23
  24. Ví dụ void main() { int pid; 1 printf (“hi”); 2 pid = fork (); 3 If( pid == 0) { 4 fork (); 5 printf (“Hello”); 6 } else 7 printf (“Bye”); 8 }  Hỏi chương trình in ra các dịng chữ nào trên màn hình.  Bỏ lệnh dịng 4, dịng 7. Chương trình in ra các dịng chữ nào. Khoa KTMT 24
  25. 3.6.Các tác vụ đối với quá trình (tt)  Tạo quá trình mới   Kết thúc quá trình – Quá trình tự kết thúc . Quá trình kết thúc khi thực thi lệnh cuối và gọi system routine exit – Quá trình kết thúc do quá trình khác (có đủ quyền, vd: quá trình cha của nó) . Gọi system routine abort với tham số là pid (process identifier) của quá trình cần được kết thúc – Hệ điều hành thu hồi tất cả các tài nguyên của quá trình kết thúc (vùng nhớ, I/O buffer, ) Khoa KTMT 25
  26. 3.7. Cộng tác giữa các quá trình  Trong quá trình thực thi, các quá trình có thể cộng tác (cooperate) để hoàn thành công việc  Các quá trình cộng tác để – Chia sẻ dữ liệu (information sharing) – Tăng tốc tính toán (computational speedup) . Nếu hệ thống có nhiều CPU, chia công việc tính toán thành nhiều công việc tính toán nhỏ chạy song song – Thực hiện một công việc chung . Xây dựng một phần mềm phức tạp bằng cách chia thành các module/process hợp tác nhau  Sự cộng tác giữa các quá trình yêu cầu hệ điều hành hỗ trợ cơ chế giao tiếp và cơ chế đồng bộ hoạt động của các quá trình Khoa KTMT 26
  27. Bài toán người sản xuất-người tiêu thụ (producer-consumer )  Ví dụ cộng tác giữa các quá trình: bài toán producer- consumer – Producer tạo ra các dữ liệu và consumer tiêu thụ, sử dụng các dữ liệu đó. Sự trao đổi thông tin thực hiện qua buffer . unbounded buffer: kích thước buffer vô hạn (không thực tế). . bounded buffer: kích thước buffer có hạn. – Producer và consumer phải hoạt động đồng bộ vì . Consumer không được tiêu thụ khi producer chưa sản xuất . Producer không được tạo thêm sản phẩm khi buffer đầy. Khoa KTMT 27
  28. 3.8.Giao tiếp liên quá trình (Interprocess communication-IPC)  IPC là cơ chế cung cấp bởi hệ điều hành nhằm giúp các quá trình – giao tiếp với nhau – và đồng bộ hoạt động mà không cần chia sẻ không gian địa chỉ  IPC có thể được cung cấp bởi message passing system Khoa KTMT 28
  29. Hệ thống truyền thông điệp Message passing system  Làm thế nào để các quá trình giao tiếp nhau? Các vấn đề: – Đặt tên (Naming) . Giao tiếp trực tiếp – send(P, msg): gửi thông điệp đến quá trình P – receive(Q, msg): nhận thông điệp đến từ quá trình Q . Giao tiếp gián tiếp: thông qua mailbox hay port – send(A, msg): gửi thông điệp đến mailbox A – receive(B, msg): nhận thông điệp từ mailbox B – Đồng bộ hóa (Synchronization): blocking send, nonblocking send, blocking receive, nonblocking receive – Tạo vùng đệm (Buffering): dùng queue để tạm chứa các message . Khả năng chứa là 0(Zero capacity hay no buffering) . Bounded capacity: độ dài của queue là giới hạn . Unbounded capacity: độ dài của queue là không giới hạn Khoa KTMT 29
  30. Tiểu trình (luồng) - Thread  Tiểu trình(tiến trình nhẹ-lightweight process): là một đơn vị cơ bản sử dụng CPU, gồm: – Thread ID, PC, Registers, stack và chia sẻ chung code, data, resources (files) Khoa KTMT 30
  31. PCB vàTCB trong mô hình multithreads PCB pid Thread Control Block Threads list TCB Context tid (Mem, global State ressources ) (State, details) Relatives Context ( Dad, children) (IP, local stack ) Scheduling statistic Khoa KTMT 31
  32. Lợi ích của tiến trình đa luồng  Đáp ứng nhanh: Cho phép chương trình tiếp tục thực thi khi một bộ phận bị khóa hoặc một hoạt động dài  Chia sẻ tài nguyên: tiết kiệm không gian nhớ  Kinh tế: tạo và chuyển ngữ cảnh nhanh hơn tiến trình VD: trong Solaris 2, tạo process chậm hơn 30 lần, chuyển chậm hơn 5 lần  Trong multiprocessor: có thể thực hiện song song Khoa KTMT 32
  33. Tiểu trình người dùng (User thread) T1 T2 T3 User mode LWP1 LWP2 P2 Kernel P1 mode Kernel Khái niệm tiểu trình được hỗ trợ bởi một thư viện hoạt động trong user mode Khoa KTMT 33
  34. Tiểu trình hạt nhân(Kernel thread) T1 T2 User mode System call Kernel mode HDH Khái niệm tiểu trình được xây dựng bên trong hạt nhân Khoa KTMT 34
  35. Khoa KTMT 35