Bài giảng Hệ điều hành - Chương 2a: Quản lý quá trình

qKhái niệm cơ bản

qĐịnh thời CPU

qCác tác vụ cơ bản: tạo/kết thúc quá trình

qSự cộng tác giữa các quá trình

qGiao tiếp giữa các quá trình

qKhái niệm cơ bản

qHệ thống máy tính thực thi nhiều chương trình khác nhau

–Batch system: jobs

–Time-shared systems: user programs, tasks

–Job » process

qQuá 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)

–Hoạt động hiện thời: program counter (PC), process status word (PSW), stack pointer (SP), memory management registers

ppt 39 trang thiennv 07/11/2022 2420
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 2a: Quản lý quá trình", để 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:

  • pptbai_giang_he_dieu_hanh_chuong_2a_quan_ly_qua_trinh.ppt

Nội dung text: Bài giảng Hệ điều hành - Chương 2a: Quản lý quá trình

  1. Chuyển ngữ cảnh (tt) Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.11
  2. 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.12
  3. 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.13
  4. Định thời quá trình ❑ Tại sao phải định thời? – Multiprogramming ▪ Có nhiều quá trình phải thực thi luân phiên nhau ▪ Mục tiêu: cực đại hiệu suất sử dụng của CPU – Time-sharing ▪ Cho phép users tương tác với quá 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.14
  5. Các hàng đợi định thời ❑ Job queue ❑ Ready queue ❑ Device queues ❑ Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.15
  6. Thêm 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 độ multiprogramming 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.16
  7. 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 quá trình mới thông qua một system call (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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.17
  8. Cây quá trình trong Linux/Unix ❑ Ví dụ root pagedaemon swapper init bash bash bash gcc ls mkdir grep Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.18
  9. Các tác vụ đối với quá trình ❑ Tạo quá trình mới – 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.19
  10. 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.20
  11. 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.21
  12. 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.22
  13. 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.23
  14. Bài toán 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.24
  15. 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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.25
  16. Message passing system ❑ Làm thế nào để các quá trình giao tiếp nhau? Các vấ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 – Synchronization: blocking send, nonblocking send, blocking receive, nonblocking receive – Buffering: dùng queue để tạm chứa các message ▪ Zero capacity (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 Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.26
  17. Mô hình giao tiếp client-server ❑ Sockets ❑ Remote Procedure Calls (RPC) ❑ Remote Method Invocation (RMI) Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.27
  18. Socket ❑ Socket – Đầu cuối (endpoint) của một kênh giao tiếp – Cơ chế giao tiếp mức thấp (low-level), gửi nhận một chuỗi byte dữ liệu không cấu trúc (unstructured stream of bytes) – Giao tiếp qua socket: connectionless và connection-oriented – Lập trình socket ▪ Berkeley socket (BSD socket), WinSock Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.28
  19. Cơ chế gửi/nhận qua socket Hàm thư viện Diễn giải socket() Tạo một socket bind() Gắn một địa chỉ cục bộ vào một socket listen() Xác định độ lớn/kích thước hàng đợi accept() (server) chờ kết nối đến từ client connect() (client) kết nối đến một server send()/sendto() Gửi dữ liệu qua kênh giao tiếp đã thiết lập recv()/recvfrom() Nhận dữ liệu qua kênh giao tiếp close() Đóng kết nối Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.29
  20. Connectionless socket Process A Process B socket() socket() bind() bind() sendto()/ sendto()/ recvfrom() recvfrom() close() close() » sendto(socket, buffer, buffer_length, flags, destination_address, addr_len) » recvfrom(socket, buffer, buffer_length, flags, from_address, addr_len) Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.30
  21. Connection-oriented socket Server socket() bind() listen() accept() recv() send() close() synchronization point (rendez-vous) communication socket() connect() send() recv() close() Client » send(socket, buffer, buffer_length, flags) » recv(socket, buffer, buffer_length, flags) Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.31
  22. Remote procedure call ❑ Remote procedure call (RPC) – Cho phép một chương trình gọi một thủ tục nằm trên máy tính ở xa qua mạng. ❑ Các vấn đề khi hiện thực RPC – Truyền tham số và kết quả trả về của lời gọi thủ tục – Chuyển đổi dữ liệu khi truyền trên mạng (data conversion) – Kết nối client đến server – Biên dịch chương trình – Kiểm soát lỗi – Security Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.32
  23. Sơ đồ hoạt động của RPC chờ kết quả trả về (suspend) Client Gọi remote procedure Kết quả trả về Request Reply Server (blocked) Gọi thủ tục cục bộ (blocked) và trả về kết quả t Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.33
  24. Lưu đồ thực hiện RPC CLIENT SERVER return reply call request call request return reply CLIENT STUB SERVER STUB message to parameter message to parameter parameter to message parameter to message TRANSPORT TRANSPORT (OS 1) (OS 2) receive send receive send Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.34
  25. Truyền tham số trong RPC ❑ Marshalling – qui tắc truyền tham số và chuyển đổi dữ liệu trong RPC bao gồm cả đóng gói dữ liệu thành dạng thức có thể truyền qua mạng máy tính. ❑ Biểu diễn dữ liệu và kiểm tra kiểu dữ liệu – Dữ liệu được biểu diễn khác nhau trên các hệ thống khác nhau ▪ ASCII, EBCDIC ▪ Ví dụ biểu diễn 32-bit integer trong máy: – big-endian → most significant byte tại high memory address (Motorola) – little-endian → least significant byte tại high memory address (Intel x86) ▪ Dạng biểu diễn XDR (External Data Representation): biểu diễn dữ liệu machine-independent Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.35
  26. Truyền tham số trong RPC (tt) Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.36
  27. Quá trình thực hiện RPC Dùng dynamic binding để xác định port number của RPC X Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.37
  28. Remote method invocation ❑ Remote Method Invocation (RMI) – Cho phép một chương trình Java có thể gọi một phương thức (method) của một đối tượng ở xa, nghĩa là một đối tượng ở tại một máy ảo Java khác Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.38
  29. Cơ chế marshalling trong RMI Phương thức được triệu gọi có dạng sau: boolean someMethod(Object x, Object y) Khoa Khoa Học & Kỹ Thuật Máy Tính – Đại Học Bách Khoa TP HCM 2.A.39