Bài giảng Hệ điều hành - Chương 3: Tiến trình
Khái niệm cơ bản
Các hoạt động của CPU được gọi là gì?
Hệ thống bó (Batch system): jobs
Time-shared systems: use program, task
Các hoạt động là tương tự → gọi là process
Tiến trình (process) là gì?
Một chương trình đang thực thi
Một tiến 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
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 3: Tiến trình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Hệ điều hành - Chương 3: Tiến trình
HỆ ĐIỀU HÀNH Chương 3 Tiến trình 11/2/2017 11/2/2017 Copyrights 2017 CE-UIT. All Rights Reserved. 1 Câu hỏi ôn tập chương 2 Nêu các thành phần chính của hệ điều hành? Nêu các dịch vụ mà hệ điều hành cung cấp? Lời gọi hệ thống là gì? Nêu 1 vài ví dụ? Có mấy dạng cấu trúc hệ điều hành? Kể tên? Máy ảo dùng để làm gì? Có mấy loại? Cho ví dụ Tiến trình là gì? Các nhiệm vụ chính của thành phần quản lý tiến trình? 11/2/2017 2Copyrights 2017 CE-UIT. All Rights Reserved. Mục tiêu chương 3 11/2/2017 Copyrights 2017 CE-UIT. All Rights Reserved. 3 Hiểu được khái niệm và các trạng thái của tiến trình Biết được các thông số của tiến trình Biết được các khái niệm về định thời tiến trình Biết được các tác vụ cơ bản của một tiến trình Hiểu được cách giao tiếp giữa các tiến trình Nội dung chương 3 11/2/2017 Copyrights 2017 CE-UIT. All Rights Reserved. 4 Khái niệm cơ bản Trạng thái tiến trình Khối điều khiển tiến trình Định thời tiến trình Các tác vụ đối với tiến trình Sự cộng tác giữa các tiến trình Giao tiếp giữa các tiến trình Tiểu trình Khái niệm cơ bản Các hoạt động của CPU được gọi là gì? Hệ thống bó (Batch system): jobs Time-shared systems: use program, task Các hoạt động là tương tự → gọi là process Tiến trình (process) là gì? Một chương trình đang thực thi 11/2/2017 5Copyrights 2017 CE-UIT. All Rights Reserved. Khái niệm cơ bản (tt) Một tiến 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 ... 11/2/2017 6Copyrights 2017 CE-UIT. All Rights Reserved. Khái niệm cơ bản (tt) Các bước nạp chương trình vào bộ nhớ: 11/2/2017 7Copyrights 2017 CE-UIT. All Rights Reserved. Khái niệm cơ bản (tt) Chương trình -> tiến 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 11/2/2017 8Copyrights 2017 CE-UIT. All Rights Reserved. Khái niệm cơ bản (tt) Các bước khởi tạo tiến trình: Cấp phát một định danh duy nhất cho tiến trình Cấp phát không gian nhớ để nạp tiến trình Khởi tạo khối dữ liệu Process Control Block (PCB) cho tiến trình Thiết lập các mối liên hệ cần thiết (ví dụ: sắp PCB vào hàng đợi định thời, ) 11/2/2017 9Copyrights 2017 CE-UIT. All Rights Reserved. Trạng thái tiến trình new: tiến trình vừa được tạo ready: tiến trình đã có đủ tài nguyên, chỉ còn cần CPU running: các lệnh của tiến trình đang được thực thi waiting: hay là blocked, tiến trình đợi I/O hoàn tất, tín hiệu terminated: tiến trình đã kết thúc 11/2/2017 10Copyrights 2017 CE-UIT. All Rights Reserved. Trạng thái tiến trình (tt) 11/2/2017 11Copyrights 2017 CE-UIT. All Rights Reserved. Chuyển đổi giữa các trạng thái của tiến trình ready running dispatch interrupt I/O or event completion I/O or event wait new terminated waiting admit exit Trạng thái tiến trình (tt) Chuỗi trạng thái của tiến trình test như sau (trường hợp tốt nhất): new ready running waiting (do chờ I/O khi gọi printf) ready running terminated 11/2/2017 12Copyrights 2017 CE-UIT. All Rights Reserved. /* test.c */ int main(int argc, char** argv) { printf(“Hello world\n"); exit(0); } Biên dịch chương trình trong Linux: gcc test.c –o test Thực thi chương trình test: ./test Trong hệ thống sẽ có một tiến trình test được tạo ra, thực thi và kết thúc. Process Control Block Mỗi tiến 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 PCB gồm: Trạng thái tiến 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: lượng CPU, thời gian sử dụng, Thông tin trạng thái I/O 11/2/2017 13Copyrights 2017 CE-UIT. All Rights Reserved. Process Control Block (tt) 11/2/2017 14Copyrights 2017 CE-UIT. All Rights Reserved. Lưu đồ chuyển CPU từ tiến trình này đến tiến trình khác Yêu cầu đối với hệ điều hành về quản lý tiến trình Hỗ trợ sự thực thi luân phiên giữa nhiều tiến 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 tiến trình Cung cấp cơ chế hỗ trợ user tạo/kết thúc tiến trình 11/2/2017 15Copyrights 2017 CE-UIT. All Rights Reserved. Quản lý các tiến trình: các hàng đợi 11/2/2017 16Copyrights 2017 CE-UIT. All Rights Reserved. running ready waiting 7 11 4 2 17 19 11 process number các PCB Ví dụ Có trường hợp sai không? Định thời tiến trình Tại sao phải định thời? Đa chương Có vài tiến 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 User 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 11/2/2017 17Copyrights 2017 CE-UIT. All Rights Reserved. Các hàng đợi định thời 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 11/2/2017 18Copyrights 2017 CE-UIT. All Rights Reserved. Các hàng đợi định thời (tt) 11/2/2017 19Copyrights 2017 CE-UIT. All Rights Reserved. Lưu đồ hàng đợi của định thời tiến trình Bộ định thời 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 tiến trình có thể mô tả như: tiến trình hướng I/O tiến trình hướng CPU Thời gian thực hiện khác nhau -> kết hợp hài hòa giữa chúng 11/2/2017 20Copyrights 2017 CE-UIT. All Rights Reserved. Bộ định thời trung gian Đô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 tiến trình từ bộ nhớ sang đĩa (swap out) chuyển tiến trình từ đĩa vào bộ nhớ (swap in) 11/2/2017 21Copyrights 2017 CE-UIT. All Rights Reserved. Các tác vụ đối với tiến trình Tạo tiến trình mới: Một tiến trình có thể tạo nhiều tiến 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 tiến trình được tạo là tiến trình con của tiến trình tạo (tiến trình cha) Quan hệ cha-con định nghĩa một cây tiến trình 11/2/2017 22Copyrights 2017 CE-UIT. All Rights Reserved. Cây tiến trình trong Linux/Unix 11/2/2017 23Copyrights 2017 CE-UIT. All Rights Reserved. init pid = 1 sshd pid = 3028 login pid = 8415 kthreadd pid = 2 sshd pid = 3610 pdflush pid = 200 khelper pid = 6 tcsch pid = 4005 emacs pid = 9204 bash pid = 8416 ps pid = 9298 Các tác vụ đối với tiến trình (tt) Tạo tiến trình mới: tiến trình con nhận tài nguyên: từ HĐH hoặc từ tiến trình cha Chia sẻ tài nguyên của tiến trình cha tiến trình cha và con chia sẻ mọi tài nguyên tiến trình con chia sẻ một phần tài nguyên của cha Trình tự thực thi tiến trình cha và con thực thi đồng thời (concurrently) tiến trình cha đợi đến khi các tiến trình con kết thúc 11/2/2017 24Copyrights 2017 CE-UIT. All Rights Reserved. Về quan hệ cha/con Không gian địa chỉ: Không gian địa chỉ của tiến trình con được nhân bản từ cha Không gian địa chỉ của tiến trình con được khởi tạo từ template Ví dụ trong Unix/Linux System call fork() tạo một tiến 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 tiến trình mới 11/2/2017 25Copyrights 2017 CE-UIT. All Rights Reserved. Ví dụ tạo process với fork() 11/2/2017 26Copyrights 2017 CE-UIT. All Rights Reserved. #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 { // pid < 0 printf(“Fork error\n”); exit(-1); } } Ví dụ tạo process với fork() (tt) 11/2/2017 27Copyrights 2017 CE-UIT. All Rights Reserved. #include #include int main (int argc, char *argv[]) { printf(“hi”); int pid = fork(); if (pid > 0){ fork(); printf(“hello”);} else fork(); printf(“bye”); } Ví dụ tạo process với fork() (tt) 11/2/2017 28Copyrights 2017 CE-UIT. All Rights Reserved. #include #include int main (int argc, char *argv[]) { int pid; printf(“hi”); pid = fork(); if (pid > 0){ fork(); fork(); printf(“hello”); }else fork(); printf(“bye”); } Các tác vụ đối với tiến trình (tt) Kết thúc tiến trình: tiến trình tự kết thúc tiến trình kết thúc khi thực thi lệnh cuối và gọi system routine exit tiến trình kết thúc do tiến trình khác (có đủ quyền, vd: tiến trình cha của nó) Gọi system routine abort với tham số là pid (process identifier) của tiến 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 tiến trình kết thúc (vùng nhớ, I/O buffer,) 11/2/2017 29Copyrights 2017 CE-UIT. All Rights Reserved. Cộng tác giữa các tiến trình Trong tiến trình thực thi, các tiến trình có thể cộng tác (cooperate) để hoàn thành công việc Các tiến 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 tiến 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 tiến trình 11/2/2017 30Copyrights 2017 CE-UIT. All Rights Reserved. Bài toán người sản xuất-người tiêu thụ 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 11/2/2017 31Copyrights 2017 CE-UIT. All Rights Reserved. Giao tiếp liên tiến trình IPC là cơ chế cung cấp bởi hệ điều hành nhằm giúp các tiến trình: Giao tiếp với nhau Đồ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 11/2/2017 32Copyrights 2017 CE-UIT. All Rights Reserved. Hệ thống truyền thông điệp Làm thế nào để các tiến trình giao tiếp nhau? Đặt tên (Naming) Giao tiếp trực tiếp send(P, msg): gửi thông điệp đến tiến trình P receive(Q, msg): nhận thông điệp đến từ tiến 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(Q, msg): nhận thông điệp từ mailbox B Đồng bộ hóa (Synchronization): blocking send, nonblocking send, blocking receive, nonblocking receive 11/2/2017 33Copyrights 2017 CE-UIT. All Rights Reserved. Hệ thống truyền thông điệp (tt) Làm thế nào để các tiến trình giao tiếp nhau? 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 11/2/2017 34Copyrights 2017 CE-UIT. All Rights Reserved. Tiểu trình Tiểu trình: 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, resourses (files) 11/2/2017 35Copyrights 2017 CE-UIT. All Rights Reserved. PCB và TCB trong mô hình multithreads 11/2/2017 36Copyrights 2017 CE-UIT. All Rights Reserved. pid Threads list Context (Mem, global ressources) Scheduling statistic Relatives ( Dad, children) PCB tid State (State, details) Context (IP, local stack) Thread Control Block TCB 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 Ví dụ: Trong Solaris 2, tạo process chậm hơn 30 lần, chuyển chậm hơn 5 lần so với thread Trong multiprocessor: có thể thực hiện song song 11/2/2017 37Copyrights 2017 CE-UIT. All Rights Reserved. Tiểu trình người dùng (User thread) 11/2/2017 38Copyrights 2017 CE-UIT. All Rights Reserved. Khái niệm tiểu trình được hỗ trợ bởi một thư viện hoạt động trong user mode T1 Kernel T2 User mode Kernel mode T3 LWP1 LWP2 P1 P2 Tiểu trình hạt nhân (Kernel thread) 11/2/2017 39Copyrights 2017 CE-UIT. All Rights Reserved. Khái niệm tiểu trình được xây dựng bên trong hạt nhân T1 T2 HDH System call User mode Kernel mode Tóm tắt lại nội dung buổi học 11/2/2017 Copyrights 2017 CE-UIT. All Rights Reserved. 40 Khái niệm cơ bản Trạng thái tiến trình Khối điều khiển tiến trình Định thời tiến trình Các tác vụ đối với tiến trình Sự cộng tác giữa các tiến trình Giao tiếp giữa các tiến trình Tiểu trình Câu hỏi ôn tập chương 3 11/2/2017 41Copyrights 2017 CE-UIT. All Rights Reserved. Nêu cụ thể các trạng thái của tiến trình? /* test.c */ int main(int argc, char** argv) { printf(“Hello world\n"); scanf(“ Nhập c = %d”,&c); exit(0); } Câu hỏi ôn tập chương 3 (tt) 11/2/2017 42Copyrights 2017 CE-UIT. All Rights Reserved. #include #include int main (int argc, char *argv[]) { int pid; pid = fork(); printf(“ so 1”); printf(“ so 2”); fork(); if (pid < 0){ printf(“hello”); fork(); }else fork(); printf(“bye”); } Chương trình này in ra những chữ gì? Câu hỏi ôn tập chương 3 (tt) Process control block chứa những thông tin gì? Các tác vụ đối với tiến trình? Tại sao phải định thời, có mấy loại bộ định thời? 11/2/2017 43Copyrights 2017 CE-UIT. All Rights Reserved. THẢO LUẬN 11/2/2017 Copyrights 2017 CE-UIT. All Rights Reserved. 44
File đính kèm:
- bai_giang_he_dieu_hanh_chuong_3_tien_trinh.pdf