Bài giảng hệ điều hành chương 2 process Bài giảng hệ điều hành chương 2 process Bài giảng hệ điều hành chương 2 process Bài giảng hệ điều hành chương 2 process Bài giảng hệ điều hành chương 2 process Bài giảng hệ điều hành chương 2 process
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 Quá trình (process) ● chương trình thực thi Một trình đònh nghóa ● Trạng thái CPU (trò ghi) ● Không gian đòa (nội dung nhớ) ● Môi trường (environment, xác đònh thông qua bảng hệ điều hành) Khái niệm (tt) Trạng thái CPU ● ● ● ● ● Processor Status Word (PSW) Instruction Register (IR) Program Counter (PC) Stack Pointer (SP) Các general purpose register ● ● ● ● Text (code) Data Heap Stack Không gian đòa Môi trường ● Vd: terminal dùng, open file, kênh giao tiếp với trình khác ● Được liệt kê bảng hệ điều hành Process control block Hệ điều hành lưu thông tin trình process control block (PCB) D.Feitelson 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 heap 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 trình ● Khởi tạo khối liệu Process Control Block (PCB) cho 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 nguyên, cần CPU running: lệnh trình thực thi waiting: blocked, trình đợi I/O hoàn tất, hay đợi tín hiệu terminated: 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 admit dispatch ready exit terminated running interrupt I/O or event wait I/O or event completion waiting Ví dụ trạng thái 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ó 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 ● ● ● ● 10 Example of shared memory for IPC POSIX Shared Memory ● Process first creates shared memory segment segment_id = shmget(IPC_PRIVATE, size, S_IRUSR | S_IWUSR); ● Process wanting access to that shared memory must attach to it shared_memory = (char *) shmat(id, NULL, 0); ● Now the process could write to the shared memory sprintf(shared_memory, "Writing to shared memory"); ● When done a process can detach the shared memory from its address space shmdt(shared_memory); 33 Giao tiếp hệ thống client-server Socket Remote Procedure Call (RPC) Remote Method Invocation (RMI) 34 Socket Socket đối tượng trừu tượng dùng để tượng trưng đầu cuối kênh giao tiếp ● Gồm đòa IP port number ● Vd socket 161.25.19.8:1625 dùng để tham chiếu port 1625 máy có đòa IP 161.25.19.8 35 Socket ● (tt) ‘well-known’ port xác đònh dòch vụ chuẩn ● Cung cấp 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 connectionoriented 36 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() Sẵn sàng để chấp nhận kết nối 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 37 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) 38 Connection-Oriented Transport Service Server (Google) socket() bind() listen() accept() recv() send() close() communication socket() connect() send() recv() close() Client (Firefox) send(socket, buffer, buffer_length, flags) recv(socket, buffer, buffer_length, flags) 39 Remote procedure call (RPC) Mở rộng chế gọi thủ tục (procedure call) thông thường ● Dùng RPC 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ốû Biểu diễn liệu Kết nối từ client đến server (binding) Giao thức vận chuyển Xử lý lỗi (exception handling) An toàn (security) 40 Hiện thực RPC: stub Client Server g D.Feitelson 41 Hiện thực RPC: lưu đồ thời gian chờ kết trả (suspended) Client Gọi remote procedure Request Kết trả Reply Server (blocked) Gọi thủ tục cục trả kết (blocked) Thời gian 42 Marshalling / Unmarshalling Marshalling công việc đóng gói liệu vào thông điệp đònh dạng thích hợp để vận chuyển qua mạng ● Unmarshalling công việc ngược lại Dùng marshalling / unmarshalling thực RPC công đoạn ● Gửi yêu cầu đến server Client stub đóng gói tham số thủ tục vào gói thông điệp gửi đến server stub Server stub mở gói lấy tham số từ thông điệp dùng chúng để gọi thủ tục server ● Server trả kết Server stub đóng gói kết trước gửi đến client stub Client stub mở gói lấy kết chuyển đến client 43 Marshalling / Unmarshalling Client return reply Server call request call request Client Stub message to result receive return reply Server Stub parameters to message message to parameters result to message Transport Transport (OS 1) (OS 2) send receive send network 44 Hiện thực RPC: biểu diễn liệu Dữ liệu hệ thống khác biểu diễn khác ● Mã hóa ký tự: ASCII, EBCDIC ● Ví dụ biểu diễn 32-bit integer nhớ Motorola: big-endian most significant byte high memory address () Intel x86: little-endian least significant byte high memory address () Giải pháp: mã hóa liệu dùng dạng biểu diễn độc lập máy XDR (External Data Representation) trao đổi liệu hệ thống máy khác 45 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 46 Marshalling tham số RMI marshalling unmarshalling Phương thức triệu gọi có dạng sau: boolean someMethod(Object x, Object y) 47 [...]... các process cộng tác nhau kiến trúc client-server Áp dụng cộng tác giữa các quá trình để ● Bài toán producer-consumer ● Modul hóa ● Tăng tốc tính toán 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 Sự cộng tác giữa các quá trình đòi hỏi hệ điều hành cung cấp giải pháp đồng bộ hoạt động (chương 3) và giao tiếp cho các quá trình 28 Bài. .. (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,…) 26 Cộng tác giữa các quá trình Các quá trình có thể cộng tác (cooperate) để hoàn thành công việc ● Vd Sensor Sampler Sensor data buffer Process data Shared memory Display 27 Cộng tác giữa các quá trình Thiết kế ứng dụng ● Phân chia một ứng dụng lớn thành.. .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í dụ layout của một PCB: (trường pointer dùng để liên kết các PCB thành một linked list) Môi trường 11 Các trường tiêu biểu của PCB Tanenbaum 12 Chuyển ngữ cảnh (1 /2) Làm thế nào để chia... đòa chỉ, môi trường chỉ khác nhau ở process ID và trò trả về từ fork 21 Các tác vụ đối với quá trình (3/4) Tạo quá trình mới (tt) ● Không gian đòa chỉ: tùy hệ điều hành UNIX: Không gian đòa chỉ của quá trình con được nhân bản từ không gian đòa chỉ của cha vào thời điểm gọi Windows: phức tạp hơn, Win 32 API CreateProcess() cần 10 tham số BOOL WINAPI CreateProcess( _In_opt_ LPCTSTR lpApplicationName,... PCB của quá trình mới để quá trình mới thực thi 13 Chuyển ngữ cảnh (2/ 2) 14 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 ● Khi nào chọn và chọn quá trình nào để thực thi có thể tùy thuộc vào tiêu chí 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ý ● Vấn đề deadlock, trì hoãn vô hạn đònh,… Cung cấp... LPTSTR lpCommandLine, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ BOOL bInheritHandles, _In_ DWORD dwCreationFlags, _In_opt_ LPVOID lpEnvironment, _In_opt_ LPCTSTR lpCurrentDirectory, _In_ LPSTARTUPINFO lpStartupInfo, _Out_ LPPROCESS_INFORMATION lpProcessInformation ); 22 Về quan hệ cha/con Ví dụ áp dụng fork trong UNIX/Linux ● Quá trình... tạo thêm dữ liệu khi buffer đầy 29 Interprocess communication (IPC) IPC là các kỹ thuật 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 ● Các quá trình có thể trên cùng máy hoặc khác máy Hai kỹ thuật IPC ● Truyền thông điệp (message passing) ● Dùng bộ nhớ chia sẻ (shared memory) 30 Mô hình giao tiếp Dùng bộ nhớ chia sẻ Truyền thơng điệp 3.4 Fig 3. 12 Truyền thông điệp Các vấn... con gọi exec() để nạp và thực thi một chương trình trong không gian nhớ của nó ● Quá trình cha làm việc khác… hay gọi wait() để đợi con xong đồng bộ 23 Ví dụ tạo process với fork() #include #include int main (int argc, char *argv[]){ int return_code; /* create a new process */ return_code = fork(); if (return_code > 0){ printf(“This is parent process ); wait(NULL); exit(0); } else... receive 32 Example of shared memory for IPC POSIX Shared Memory ● Process first creates shared memory segment segment_id = shmget(IPC_PRIVATE, size, S_IRUSR | S_IWUSR); ● Process wanting access to that shared memory must attach to it shared_memory = (char *) shmat(id, NULL, 0); ● Now the process could write to the shared memory sprintf(shared_memory, "Writing to shared memory"); ● When done a process. .. space shmdt(shared_memory); 33 Giao tiếp trong hệ thống client-server Socket Remote Procedure Call (RPC) Remote Method Invocation (RMI) 34 Socket Socket là một đối tượng trừu tượng dùng để tượng trưng một đầu cuối của một kênh giao tiếp ● Gồm đòa chỉ IP và port number ● Vd socket 161 .25 .19.8:1 625 dùng để tham chiếu port 1 625 trên máy có đòa chỉ IP 161 .25 .19.8 35 Socket ● (tt) ‘well-known’ port