Bài giảng Hệ thống máy tính - Chương 6: Quản lý quá trình

17 62 0
Bài giảng Hệ thống máy tính - Chương 6: Quản lý quá trình

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Hệ thống máy tính - Chương 6 Quản lý quá trình gồm có những nội dung cụ thể sau: Khái niệm cơ bản, định thời CPU, các tác vụ cơ bản: 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 cùng tham khảo.

10/01/2017 Chapter 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  Quaù 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 ● ● ● ● ●  Không gian đòa ● ● ● ●  Processor Status Word (PSW) Instruction Register (IR) Program Counter (PC) Stack Pointer (SP) Caùc general purpose register Text (code) Data Heap Stack 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 10/01/2017 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”  Layout luận lý process image ● Vd đònh daïng elf Linux Executable binary file (load module) Process image main memory program code program code data data start address heap stack 10/01/2017 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 10/01/2017 Ví dụ trạng thái trình  /* test.c */ int main(int argc, char** argv) { printf(“Hello world\n"); exit(0); } 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 ● ● ● ● 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 10 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 quan trọng hệ điều hành Ví dụ layout PCB: (trường pointer dùng để liên kết PCB thành linked list) Môi trường 11 Các trường tiêu biểu PCB Tanenbaum 12 10/01/2017 Chuyển ngữ cảnh (1/2)  Làm để chia sẻ CPU trình?  Ngữ cảnh (context) trình tình trạng hoạt động trình  Ngữ cảnh trình lưu PCB  Chuyển ngữ cảnh (context switch) công việc ngưng trình thực thi chạy trình khác Khi cần: ● Trò ghi, trò program counter, nhớ,… ● lưu ngữ cảnh trình vào PCB ● nạp ngữ cảnh từ PCB trình để trình thực thi 13 Chuyển ngữ cảnh (2/2) 14 Yêu cầu hệ điều hành quản lý trình  Hỗ trợ thực thi luân phiên nhiều trình ● Khi chọn chọn trình để thực thi tùy thuộc vào tiêu chí  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ý  Cung cấp chế hỗ trợ user tạo/kết thúc trình Cung cấp chế đồng giao tiếp trình ● Vấn đề deadlock, trì hoãn vô hạn đònh,…  15 10/01/2017 Quản lý trình: hàng đợi  Ví dụ PCB running process number ready 11 19 11 17 waiting Có sai ví dụ? 16 Đònh thời trình  Tại phải đònh thời? ● Multiprogramming  Có nhiều trình thực thi luân phiên  Mục tiêu (ví dụ): cực đại hiệu suất sử dụng CPU ● Time-sharing  User tương tác với trình  Mục tiêu: tối thiểu thời gian đáp ứng  Một số khái niệm ● Các đònh thời (scheduler) ● Các hàng đợi đònh thời (scheduling queue) 17 Các hàng đợi đònh thời     Job queue Ready queue Caùc device queue … 18 10/01/2017 Thêm medium-term scheduling   Đôi hệ điều hành (như time-sharing system) có thêm medium-term scheduling Medium-term scheduler ● chuyển trình từ nhớ sang đóa (swap out) ● chuyển trình từ đóa vào nhớ (swap in) memory memory 19 Thêm medium-term scheduling  Tùy theo chiến lược sử dụng nhớ, medium-term scheduler đònh ● swap out trình chiếm khối lượng lớn nhớ, hay có độ ưu tiên thấp… ● swap in trình có đủ nhớ… 20 Các tác vụ trình (1/4)  Tạo trình ● Quá trình tạo trình thông qua system call (vd: hàm fork UNIX)  Ví dụ: (UNIX) Khi user đăng nhập 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 21 10/01/2017 Cây trình Linux/Unix  Ví dụ root pagedaemon gcc swapper init bash bash ls mkdir bash grep 22 Các tác vụ trình (2/4)  Tạo trình (tt) ● Chia sẻ tài nguyên trình cha: khả  Quá trình cha chia sẻ tài nguyên  Quá trình chia sẻ phần tài nguyên cha  Cha không chia sẻ tài nguyên ● Trình tự thực thi: hai khả  Quá trình cha thực thi đồng thời (concurrently)  Quá trình cha chạy trình kết thúc ● Trong Unix, trình gọi fork tạo trình  hoàn n giống vào thời điểm gọi - trạ ng thái CPU, không gian đòa chỉ, môi trường  khác process ID trò trả từ fork 23 Các tác vụ trình (3/4)  Tạo trình (tt) ● Không gian đòa chỉ: tùy hệ điều hành  UNIX: Không gian đòa trình nhân từ không gian đòa cha vào thời điểm gọi  Windows: phức tạp hơn, Win32 API CreateProcess() cần 10 tham số 24 10/01/2017 Về quan hệ cha/con  Ví dụ áp dụng fork UNIX/Linux ● Quá trình gọi fork() để tạo trình ● Quá trình gọi exec() để nạp thực thi chương trình không gian nhớ ● Quá trình cha làm việc khác… hay gọi wait() để đợi xong đồng 25 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 if (return_code == 0){ printf(“This is child process”); execlp(“/bin/ls”, “ls”, NULL); exit(1); } else { printf(“Fork error\n”); exit(1);} } 26 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 trình khác (có đủ quyền, vd: trình cha nó)  Gọi system routine abort với tham số pid (process identifier) trình cần kết thúc ● Hệ điều hành thu hồi tất tài nguyên trình kết thúc (vùng nhớ, I/O buffer,…) 27 10/01/2017 Cộng tác trình  Các trình cộng tác (cooperate) để hoàn thành công việc ● Vd Sensor Sampler Sensor data buffer Process data Shared memory Display 28 Cộng tác trình  Thiết kế ứng dụng ● Phân chia ứng dụng lớn thành process cộng tác  kiến trúc client-server  Áp dụng cộng tác 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 trình đòi hỏi hệ điều hành cung cấp giải pháp đồng hoạt động (chương 3) giao tiếp cho trình 29 Bài toán producer-consumer  Bài toán tiêu biểu cộng tác trình: toán producer-consumer ● Producer tạo liệu consumer tiêu thụ / sử dụng liệu Sự trao đổi liệu thực 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 consumer phải hoạt động đồng  Consumer không tiêu thụ producer chưa sản xuất  Producer không tạo thêm liệu buffer đầy 30 10 10/01/2017 Interprocess communication (IPC)  IPC kỹ thuật cung cấp hệ điều hành nhằm giúp trình giao tiếp với  Hai kỹ thuật IPC ● Các trình máy khác máy ● Truyền thông điệp (message passing) ● Dùng nhớ chia sẻ (shared memory) 31 Mô hình giao tiếp Dùng nhớ chia sẻ Truyền thơng điệp 3.4 Fig 3.12 Truyền thông điệp  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ừ 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/nonblocking send  blocking/nonblocking receive 33 11 10/01/2017 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); 34 Giao tiếp hệ thống client-server  Socket  Remote Procedure Calls (RPC)  Remote Method Invocation (RMI) 35 Socket  Socket ● Đầ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 36 12 10/01/2017 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 37 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 38 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) 39 13 10/01/2017 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) 40 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 soát lỗi Bảo mật 41 Remote Procedure Call  RPC, cho phép trình gọi thủ tục máy khác g D.Feitelson 42 14 10/01/2017 Sơ đồ hoạt động RPC chờ kết trả (suspended) Client Gọi remote procedure Kết trả Request Reply Server Gọi thủ tục cục trả kết (blocked) (blocked) t 43 Lưu đồ thực RPC Client return reply Server call request call request Client Stub message to parameter Server Stub parameter to message message to parameter TRANSPORT parameter to message TRANSPORT (OS 1) receive return reply (OS 2) send receive send network 44 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 taïi high memory address (Motorola) – little-endian  least significant byte taïi high memory address (Intel x86)  Dạng biểu diễn XDR (External Data Representation): biểu diễn liệu machine-independent 45 15 10/01/2017 Truyền tham số RPC (2/2) 46 Thực RPC với dynamic binding Dynamic binding: truy vấn Matchmaker để xác đònh port number cuûa RPC X 47 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 48 16 10/01/2017 Marshalling tham số RMI marshalling unmarshalling Phương thức triệu gọi có dạng sau: boolean someMethod(Object x, Object y) 49 17 ... Tạo trình ● Quá trình tạo trình thông qua system call (vd: hàm fork UNIX)  Ví dụ: (UNIX) Khi user đăng nhập hệ thống, command interpreter (shell) tạo cho user  Quá trình tạo trình trình tạo (quá. .. taù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 trình khác (có đủ quyền, vd: trình. .. 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

Ngày đăng: 30/01/2020, 17:36

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan