1. Trang chủ
  2. » Công Nghệ Thông Tin

Hệ điều hành ( Vũ Đức Lung ) - Chương 3

33 4 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 694 KB

Nội dung

Trạng thái quá trình.Khối điều khiển quá trình (Process control block). Định thời quá trình (Process Scheduling).Các tác vụ đối với 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.

Chương III: Tiến trình (Process)        Khái niệm Trạng thái trình Khối điều khiển trình (Process control block) Định thời trình (Process Scheduling) Các tác vụ trình Sự cộng tác trình Giao tiếp trình Khoa KTMT Vũ Đức Lung 3.1 Khái niệm  Cái gọi hoạt động CPU? – Hệ thống bó (Batch system): jobs – Time-shared systems: user programs, tasks – Các hoạt động tương tự => gọi process  Quá trình (process) – chương trình thực thi  Một 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,… Khoa KTMT Vũ Đức Lung 3.1 Khái niệm Các bước nạp chương trình vào nhớ Khoa KTMT Vũ Đức Lung 3.1 Khái niệm chương trình => trình   Dùng load module để biểu diễn chương trình thực thi Layout luận lý process image Executable binary file (load module) Process image in main memory program code program code data data start address stack Khoa KTMT Vũ Đức Lung 3.1 Khái niệm 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 q 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  PCB nơi hệ điều hành lưu thông tin 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,…) Khoa KTMT Vũ Đức Lung 3.2.Trạng thái trình  Các trạng thái trình (process states): – – – – – 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, tín hiệu terminated: q trình kết thúc Khoa KTMT Vũ Đức Lung 3.2.Trạng thái trình  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 Khoa KTMT Vũ Đức Lung 3.2.Trạng thái trình Ví dụ  /* 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 Khoa KTMT 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 Vũ Đức Lung 3.3.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 gồm: - Trạng thái trình: new, ready, running,… - Bộ đếm chương trình - Các ghi - Thơng tin lập thời biểu CPU: độ ưu tiên, … - Thông tin quản lý nhớ - Thông tin tài khoản: lượng CPU, thời gian sử dụng, - Thông tin trạng thái I/O Khoa KTMT Vũ Đức Lung 3.3.Process control block Lưu đồ chuyển CPU từ trình đến trình khác Khoa KTMT Vũ Đức Lung 10 Cây trình Linux/Unix  Ví dụ Khoa KTMT Vũ Đức Lung 19 3.6.Các tác vụ trình  Tạo trình – Quá trình nhận tài nguyên: từ HĐH từ P cha – Chia sẻ tài nguyên trình cha  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  Quá trình cha thực thi đồng thời (concurrently)  Quá trình cha đợi đến trình kết thúc Khoa KTMT Vũ Đức Lung 20 Về quan hệ cha/con  Không gian địa (address space) – Không gian địa trình nhân từ cha – Khơng gian địa q trình khởi tạo từ template  Ví dụ UNIX/Linux – System call fork() tạo trình – System call exec() dùng sau fork() để nạp chương trình vào khơng gian nhớ q trình đồng Khoa KTMT Vũ Đức Lung 21 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 KTMT } Vũ Đức Lung 22 3.6.Các tác vụ trình (tt)  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: q 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,…) Khoa KTMT Vũ Đức Lung 23 3.7 Cộng tác trình   Trong trình thực thi, q trình cộng tác (cooperate) để hồn thành cơng việc Các q trình cộng tác để – Chia sẻ liệu (information sharing) – Tăng tốc tính tốn (computational speedup)  Nếu hệ thống có nhiều CPU, chia cơng việc tính tốn thành nhiều cơng việc tính tốn nhỏ chạy song song – Thực công việc chung  Xây dựng phần mềm phức tạp cách chia thành module/process hợp tác  Sự cộng tác trình yêu cầu hệ điều hành hỗ trợ chế giao tiếp chế đồng hoạt động trình Khoa KTMT Vũ Đức Lung 24 Bài toán người sản xuất-người tiêu thụ (producer-consumer )  Ví dụ cộng tác q trình: tốn producer-consumer – Producer tạo liệu consumer tiêu thụ, sử dụng liệu Sự trao đổi thơng tin 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 sản phẩm buffer đầy Khoa KTMT Vũ Đức Lung 25 3.8.Giao tiếp liên trình (Interprocess communication-IPC)  IPC chế cung cấp hệ điều hành nhằm giúp trình – giao tiếp với – đồng hoạt động mà không cần chia sẻ không gian địa  IPC cung cấp message passing system Khoa KTMT Vũ Đức Lung 26 Hệ thống truyền thông điệp Message passing system  Làm để trình giao tiếp nhau? Các vấn đề: – Đặt tên (Naming)  Giao tiếp trực tiếp – send(P, msg): gửi thơng điệp đến q 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 – Đồng hóa (Synchronization): blocking send, nonblocking send, blocking receive, nonblocking receive – Tạo vùng đệm (Buffering): dùng queue để tạm chứa message  Khả chứa 0(Zero capacity hay no buffering)  Bounded capacity: độ dài queue giới hạn  Unbounded capacity: độ dài queue không giới hạn Khoa KTMT Vũ Đức Lung 27 Tiểu trình (luồng) - Thread  Tiểu trình(tiến trình nhẹ-lightweight process): đơn vị sử dụng CPU, gồm: – Thread ID, PC, Registers, stack chia sẻ chung code, data, resources (files) Khoa KTMT Vũ Đức Lung 28 PCB vàTCB mơ hình multithreads PCB pid Thread Control Block TCB Threads list Context tid (Mem, global ressources…) State (State, details) Relatives Context ( Dad, children) (IP, local stack…) Scheduling statistic Khoa KTMT Vũ Đức Lung 29 Lợi ích tiến trình đa luồng  Đáp ứng nhanh: Cho phép chương trình tiếp tục thực thi phận bị khóa hoạt động dài  Chia sẻ tài nguyên: tiết kiệm không gian nhớ  Kinh tế: tạo chuyển ngữ cảnh nhanh tiến trình VD: Solaris 2, tạo process chậm 30 lần, chuyển chậm lần  Trong multiprocessor: thực song song Khoa KTMT Vũ Đức Lung 30 Tiểu trình người dùng (User thread) T1 T2 T3 LWP2 LWP1 P2 P1 Kernel User mode Kernel mode Khái niệm tiểu trình hỗ trợ thư viện hoạt động user mode Khoa KTMT Vũ Đức Lung 31 Tiểu trình hạt nhân(Kernel thread) T1 T2 User mode System call HDH Kernel mode Khái niệm tiểu trình xây dựng bên hạt nhân Khoa KTMT Vũ Đức Lung 32 Khoa KTMT Vũ Đức Lung 33 ... printf(“This is child process? ?); execlp(“/bin/ls”, “ls”, NULL); exit( 0); } else { printf(“Fork error ? ?); exit (- 1); } Khoa KTMT } Vũ Đức Lung 22 3. 6.Các tác vụ trình (tt)  Tạo trình   Kết thúc... 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... section (program code), data section (chứa global variables) – program counter (PC), process status word (PSW), stack pointer (SP), memory management registers,… Khoa KTMT Vũ Đức Lung 3. 1 Khái

Ngày đăng: 09/05/2021, 22:10