Bài giảng Hệ điều hành: Chương 2A - Quản lý quá trình trình bày về khái niệm cơ bản; định thời CPU; các tác vụ cơ bản như tạo/kết thúc 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. Mời các bạn tham khảo bài giảng để bổ sung thêm kiến thức về lĩnh vực này.
2.A Quản lý trình Khái niệm Định thời CPU Các tác vụ bản: tạo/kết thúc trình Sự cộng tác trình Giao tiếp trình Khái niệm Hệ thống máy tính thực thi nhiều chương trình khác ● Batch system: job ● Time-shared system: user program, task ● Job process Quá trình (process) ● chương trình thực thi Một trình bao gồm ● Text (program code), data (chứa global variable), heap, stack ● Hoạt động thời: program counter (PC), register ● Các file dùng Các bước nạp chương trình vào nhớ Từ chương trình đến trình Chương trình thực thi có định dạng load module mà trình nạp (loader) “hiểu” ● Vd định dạng elf Linux Layout luận lý process image Executable binary file (load module) Process image main memory program code program code data data start address stack Khởi tạo trình Các bước hệ điều hành khởi tạo trình ● Cấp phát định danh (process number hay process identifier, pid) cho trình ● Cấp phát khơng gian nhớ để nạp q trình ● Khởi tạo khối liệu Process Control Block (PCB) cho trình PCB nơi hệ điều hành lưu thơng tin q trình ● Thiết lập mối liên hệ cần thiết (vd: PCB vào hàng đợi định thời,…) Các trạng thái trình (1/2) Các trạng thái trình: ● new: trình vừa tạo ● ready: trình có đủ tài ngun, cịn cần CPU ● running: lệnh trình thực thi ● waiting: blocked, q trình đợi I/O hồn tất, hay đợi tín hiệu ● terminated: q trình kết thúc Các trạng thái trình (2/2) Chuyển đổi trạng thái trình new new admit dispatch ready ready exit terminated terminated running running interrupt I/O or event wait I/O or event completion waiting waiting Ví dụ trạng thái q trình /* test.c */ int main(int argc, char** argv) { printf(“Hello world\n"); exit(0); } Biên dịch chương trình Linux gcc test.c –o test Thực thi chương trình test /test Trong hệ thống có q trình test tạo ra, thực thi kết thúc Chuỗi trạng thái trình test sau (trường hợp tốt nhất): ● new ● ready ● running ● waiting (do chờ I/O gọi printf) ● ready ● running ● terminated Process Control Block Đã thấy trình hệ thống cấp phát Process Control Block (PCB) PCB cấu trúc liệu hệ điều hành quan trọng Ví dụ layout PCB: (trường pointer dùng để liên kết PCB thành linked list) Các trường tiêu biểu PCB From Tanenbaum 10 Message passing system Làm để 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 trình P – receive(Q, msg): nhận thơng điệp đến từ q 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 message Zero capacity (no buffering) Bounded capacity: độ dài queue giới hạn Unbounded capacity: độ dài queue không giới hạn 28 Giao tiếp hệ thống client-server Socket Remote Procedure Calls (RPC) Remote Method Invocation (RMI) 29 Socket Socket ● Đầu cuối kênh giao tiếp ● Cơ chế giao tiếp mức thấp: gửi nhận chuỗi byte liệu không cấu trúc ● Hai loại giao tiếp qua socket: connectionless connection-oriented ● Lập trình socket Berkeley socket (BSD socket), WinSock 30 Gửi/nhận qua socket Hàm thư viện Diễn giải socket() Tạo socket bind() Gắn địa cục vào socket listen() Thiết lập độ dài queue accept() (server) Chờ kết nối đến từ client connect() (client) kết nối đến server send() sendto() Gửi liệu qua kênh giao tiếp thiết lập Gửi liệu đến địa recv() recvfrom() Nhận liệu qua kênh giao tiếp thiết lập Nhận liệu đến từ địa close() Đóng kết nối 31 Dùng Connectionless Transport Service 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) 32 Dùng Connection-oriented Transport Service Server socket() bind() listen() accept() recv() send() close() communication socket() connect() send() recv() close() Client send(socket, buffer, buffer_length, flags) recv(socket, buffer, buffer_length, flags) 33 Remote procedure call Remote procedure call (RPC) ● Cho phép chương trình gọi thủ tục nằm máy tính xa qua mạng Các vấn đề thực RPC ● Truyền tham số kết trả lời gọi thủ tục ● Chuyển đổi liệu truyền mạng (data conversion) ● Kết nối client đến server ● Biên dịch chương trình ● Kiểm sốt lỗi ● Bảo mật 34 Remote Procedure Call RPC, cho phép q trình gọi thủ tục máy khác g D.Feitelson 35 Sơ đồ hoạt động RPC chờ kết trả (suspended) Client Gọi remote procedure Kết trả Request Reply Server (blocked) Gọi thủ tục cục trả kết (blocked) t 36 Lưu đồ thực RPC Client return reply Server call request call request Client Stub message to parameter return reply Server Stub parameter to message message to parameter parameter to message TRANSPORT TRANSPORT (OS 1) (OS 2) receive send receive send network 37 Truyền tham số RPC (1/2) Marshalling ● qui tắc truyền tham số chuyển đổi liệu RPC bao gồm đóng gói liệu thành dạng thức truyền qua mạng máy tính Biểu diễn liệu kiểm tra kiểu liệu ● Dữ liệu biểu diễn khác hệ thống khác ASCII, EBCDIC Ví dụ biểu diễn 32-bit integer máy: – big-endian most significant byte high memory address (Motorola) – little-endian least significant byte high memory address (Intel x86) Dạng biểu diễn XDR (External Data Representation): biểu diễn liệu machine-independent 38 Truyền tham số RPC (2/2) 39 Thực RPC với dynamic binding Dùng dynamic binding để xác định port number RPC X 40 Remote method invocation Remote Method Invocation (RMI) ● Cho phép chương trình Java gọi phương thức (method) đối tượng xa, nghĩa đối tượng máy ảo Java khác 41 Marshalling tham số RMI marshalling unmarshalling Phương thức triệu gọi có dạng sau: boolean someMethod(Object x, Object y) 42 ... error ”); exit (-1 ); } } 23 Các tác vụ trình (4/4) Tạo trình Kết thúc trình ● Quá trình tự kết thúc Quá trình kết thúc thực thi lệnh cuối gọi system routine exit ● Quá trình kết thúc q trình khác... tác vụ trình (2/4) Tạo trình (tt) ● Chia sẻ tài nguyên trình cha: hai khả Quá trình cha chia sẻ tài nguyên Quá trình chia sẻ phần tài nguyên cha ● Trình tự thực thi: hai khả Quá trình cha... hệ thống, command interpreter (shell) tạo cho user Quá trình tạo trình trình tạo (quá trình cha) Quan hệ cha-con định nghĩa trình 18 Cây q trình Linux/Unix Ví dụ pagedaemon pagedaemon gcc gcc