Bài giảng Hệ điều hành: Chương 2.1 do TS. Ngô Hữu Dũng biên soạn nhằm mục đích phục vụ cho việc giảng dạy. Nội dung bài giảng gồm có: Các khái niệm, chương trình và tiến trình, các thao tác & trạng thái của tiến trình, khối điều khiển tiến trình PCB, điều phối tiến trình, liên lạc giữa các tiến trình, đồng bộ tiến trình, deadloc.
HỆ ĐIỀU HÀNH (OPERATING SYSTEM CONCEPTS) Wiley - Operating System Concepts(Silberschatz).9th Giới thiệu môn học Mục tiêu môn học Vai trò HĐH Nguyên lý hoạt động HĐH đa nhiệm Nội dung Phần 1: Tổng quan (Overview) Phần 2: Quản lý tiến trình (Process Management) Phần 3: Quản lý nhớ (Memory Management) Phần 4: Quản lý I/O (I/O Management) Phần 5: Quản lý hệ thống file (Storage Management) 1.2 Process Management CHƯƠNG 2: QUẢN LÝ TIẾN TRÌNH - P1 1.3 Nội dung Các khái niệm chương trình tiến trình thao tác & trạng thái tiến trình khối điều khiển tiến trình PCB Điều phối tiến trình Liên lạc tiến trình Đồng tiến trình Deadlock 1.4 Tiến trình gì? Process – tiến trình / trình = chương trình thực thi = tập tài nguyên dùng để chạy chương trình = nội dung nhớ + nội dung ghi (+ trạng thái I/O) Chương trình (program) – tĩnh Tiến trình (process) – động Một process bao gồm : 1.5 Hệ điều hành tổ chức ntn nhớ? Nhắc lại chức HĐH cung cấp giao diện máy ảo giúp cho việc lập trình cho máy dễ dàng Vì vậy, hình ảnh nhớ tiến trình phải có chứa HĐH Mã nguồn Vùng tồn cục Bộ nhớ HĐH Stack Mã nguồn Vùng toàn cục Stack Heap Heap Vùng liệu HĐH dùng để lưu biến, ví dụ tt mơ tả tập tin truy xuất tiến trình, hay trạng thái thiết bị I/O, v.vv 1.6 Process Control Block Trạng thái tiến trình lưu process control block (PCB) Được xem liệu phần liệu HĐH Tương tự đối tượng lớp 1.7 PCB Các thơng tin tiến trình: Identification: tiến trình, tiến trình cha, người dùng, nhóm,… Trạng thái tiến trình Program counter CPU registers Thông tin lập lịch CPU Thông tin liên quan nhớ Thông tin sổ sách: mã số tiến trình, số lượng CPU, thời gian sử dụng CPU,… Trạng thái I/O: danh sách file mở, danh sách thiết bị cấp cho tiến trình Lưu vết thơng tin 1.8 Các trạng thái Tiến trình States: New: process khởi tạo Running: process CPU lệnh thực Waiting (Blocked): process chờ kiện xuất Ready: process chờ đến lượt để thực thi Exit (Terminated): completed/error exit Chỉ có process running procesor thời điểm Có nhiều process chờ ready waiting thời điểm 1.9 Các trạng thái Tiến trình 1.10 CPU chuyển đổi tiến trình 1.11 Ví dụ hàng đợi Ready 1.12 Process Scheduler Trong hệ multiprogramming time-sharing, lập lịch thực chức điều phối tiến trình Chọn tiến trình xử lý CPU số tiến trình chờ xử lý Quản lý hàng đợi read queue, I/O device queues Chuyển ngữ cảnh 1.13 Lập lịch tiến trình (Process Scheduling) 1.14 Tạo tiến trình Làm tạo tiến trình? Sử dụng System call Trong UNIX, tiến trình tạo tiến trình khác fork() (system call) int pid = fork(); /* ngôn ngữ C */ Tiến trình tạo gọi tiến trình cha tiến trình gọi tiến trình Tiến trình tiến trình cha (giống “hình dáng” cấu trúc điều khiển tiến trình) ngoại trừ identification trạng thái điều phối Tiến trình cha chạy hai vùng nhớ khác Mặc định khơng có chia sẻ nhớ Chi phí tạo tiến trình lớn trình copy Hàm exec() để tạo tiến trình, thường tạo tiến trình chương trình khơng phải gọi lại 1.15 System Call 11 bước để thực system call read (fd, buffer, nbytes) 1.16 Tạo tiến trình 1.17 Ví dụ tạo tiến trình sử dụng Fork() int main() { Pid_t pid; /* fork another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1); } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); } else { /* parent process */ /* parent will wait for the child to complete */ wait (NULL); printf ("Child Complete"); exit(0); } } 1.18 Kết thúc tiến trình Một tiến trình đợi tiến trình khác hồn thành hàm wait() (system call) Có thể đợi cho tiến trình thực thi xong ví dụ Cũng đợi tiến trình đó, phải biết PID Để “hủy” tiến trình khác dùng kill() (system call) Điều xảy kill() gọi? Điều xảy tiến trình “nạn nhân” chưa muốn “chết”? 1.19 Kết thúc tiến trình Tiến trình kết thúc : Normal exit ( tự nguyện ) Error exit ( tự nguyện ) Fatal error exit ( ép buộc ) Được kết thúc tiến trình khác ( ép buộc ) Một system call gửi tới HĐH yêu cầu thực kết thúc tiến trình Trong Unix : exit() => kết thúc tự nguyện kill() => kết thúc ép buộc 1.20 Kết thúc tiến trình Tiến trình xử lý statement cuối hỏi OS để xóa (exit) Output data từ child sang parent (thơng qua wait) Tài ngun tiến trình giải phóng OS Parent kết thúc tiến trình child (abort) Child vượt tài nguyên phân bổ Nhiệm vụ gán cho child khơng cịn u cầu Nếu parent kết thúc Một số OS không cho phép child tiếp tục hoạt động parent kết thúc – Tất child bị kết thúc cascading termination 1.21 Cây tiến trình hệ UNIX thơng thường 1.22 Tóm tắt Khái niệm tiến trình Phân biệt tiến trình với chương trình Các trạng thái tiến trình Sự thay đổi trạng thái Khối thông tin quản lý tiến trình (PCB) Tạo tiến trình Kết thúc tiến trình 1.23 ... lý hệ thống file (Storage Management) 1.2 Process Management CHƯƠNG 2: QUẢN LÝ TIẾN TRÌNH - P1 1.3 Nội dung Các khái niệm chương trình tiến trình thao tác & trạng thái tiến trình khối điều. .. trình PCB Điều phối tiến trình Liên lạc tiến trình Đồng tiến trình Deadlock 1.4 Tiến trình gì? Process – tiến trình / trình = chương trình thực thi = tập tài nguyên dùng để chạy chương trình... = nội dung nhớ + nội dung ghi (+ trạng thái I/O) Chương trình (program) – tĩnh Tiến trình (process) – động Một process bao gồm : 1.5 Hệ điều hành tổ chức ntn nhớ? Nhắc lại chức HĐH cung