1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo trình Hệ điều hành Trường ĐH Phan Thiết

235 3 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 235
Dung lượng 4,12 MB

Cấu trúc

  • Chương 1. Tổng quan về hệ điều hành (12)
    • 1.1. Khái niệm về hệ điều hành (12)
    • 1.2. Phân loại hệ điều hành (13)
      • 1.2.1. Hệ thống xử lý theo lô (13)
      • 1.2.2. Hệ thống xử lý theo lô đa chương (14)
      • 1.2.3. Hệ thống chia sẻ thời gian (14)
      • 1.2.4. Hệ thống song song (15)
      • 1.2.5. Hệ thống phân tán (15)
      • 1.2.6. Hệ thống xử lý thời gian thực (16)
    • 1.3. Cấu trúc hệ điều hành (17)
      • 1.3.1. Các thành phần của hệ thống (17)
    • 1.4. Các dịch vụ của hệ điều hành (21)
    • 1.5. Lời gọi hệ thống (21)
    • 1.6. Cấu trúc hệ thống (22)
      • 1.6.1. Cấu trúc đơn giản (22)
      • 1.6.2. Cấu trúc theo lớp (24)
      • 1.6.3. Mô hình Client-Server (27)
    • 1.7. Lịch sử phát triển hệ điều hành (29)
      • 1.7.1. Thế hệ 1 (1945 – 1955) (29)
      • 1.7.2. Thế hệ 2 (1955 – 1965) (29)
      • 1.7.3. Thế hệ 3 (1965 – 1980) (30)
      • 1.7.4. Thế hệ 4 (1980 - ) (30)
      • 1.7.5. Câu hỏi củng cố bài học (30)
      • 1.7.6. Bài tập (31)
  • Chương 2. Các mô hình xử lý đồng hành (32)
    • 2.1. NHU CẦU XỬ LÝ ĐỒNG HÀNH (32)
      • 2.1.1. Tăng hiệu suất sử dụng CPU (32)
      • 2.1.2. Tăng tốc độ xử lý (33)
    • 2.2. Khái niệm tiến trình(thread) và mô hình đa tiến trình(multithread) (34)
      • 2.2.1. Nguyên lý chung (34)
      • 2.2.2. Kernel thread và user thread (35)
    • 2.3. Tóm tắt và bài tập (36)
      • 2.3.1. Củng cố bài học (37)
      • 2.3.2. Bài tập (37)
  • Chương 3. Quản lý tiến trình (38)
    • 3.1. Tổ chức quản lý tiến trình (38)
      • 3.1.1. Các trạng thái của tiến trình (38)
      • 3.1.2. Tiến trình mới tạo đƣợc đƣa vào hệ thống (0)
    • 3.2. Chế độ xử lý của tiến trình (39)
      • 3.2.1. Thao tác trên tiến trình (41)
      • 3.2.2. Cấp phát tài nguyên cho tiến trình (43)
      • 3.2.3. Định danh tài nguyên (43)
      • 3.2.4. Các mục tiêu của kỹ thuật cấp phát (44)
  • Chương 4. Điều phối tiến trình (44)
    • 4.1. Giới thiệu (45)
      • 4.1.1. Mục tiêu điều phối (45)
      • 4.1.2. Các đặc điểm của tiến trình (45)
    • 4.2. Điều phối không độc quyền và điều phối độc quyền (preemptive/nopreemptive) (47)
    • 4.3. Tổ chức điều phối (48)
      • 4.3.1. Các danh sách sử dụng trong quá trình điều phối (48)
      • 4.3.2. Các cấp độ điều phối (50)
      • 4.3.3. Chiến lƣợc FIFO (0)
      • 4.3.4. Chiến lƣợc phân phối xoay vòng (Round Robin) (0)
    • 4.4. Điều phối với độ ƣu tiên (0)
      • 4.4.1. Chiến lƣợc công việc ngắn nhất (Shortest-job-first SJF) (0)
    • 4.5. Quản lý tiến trình-Tóm tắt (56)
      • 4.5.1. Câu hỏi cũng cố bài học (56)
      • 4.5.2. Bài tập (56)
  • Chương 5. Liên lạc giữa các tiến trình và vấn đề đồng bộ hóa (60)
    • 5.1. LIÊN LẠC GIỮA CÁC TIẾN TRÌNH (60)
      • 5.1.1. Nhu cầu liên lạc giữa các tiến trình (60)
      • 5.1.2. Các vấn đề nảy sinh trong việc liên lạc giữa các tiến trình (60)
    • 5.2. Cơ chế thông tin liên lạc (61)
      • 5.2.1. Tín hiệu (Signal) (61)
      • 5.2.2. Pipe (63)
      • 5.2.3. Vùng nhớ chia sẻ (64)
    • 5.3. Trao đổi thông điệp (Message) (65)
    • 5.4. Sockets (66)
    • 5.5. Nhu cầu đồng bộ hóa(synchronisation) (68)
      • 5.5.1. Yêu cầu độc quyền truy xuất (Mutual exclusion) (68)
      • 5.5.2. Yêu cầu phối hợp (Synchronization) (68)
    • 5.6. Bài toán đồng bộ hoá (68)
      • 5.6.1. Vấn đề tranh đoạt điều khiển (race condition) (68)
      • 5.6.2. Miền găng (critical section) (69)
    • 5.7. Tóm tắt (70)
      • 5.7.1. Củng cố bài học (70)
      • 5.7.2. Bài tập (71)
  • Chương 6. Các giải pháp đồng bộ hóa (75)
    • 6.1. Giải phỏp ô busy waiting ằ (75)
      • 6.1.1. Các giải pháp phần mềm (75)
      • 6.1.2. Sử dụng việc kiểm tra luân phiên (76)
    • 6.2. Giải pháp của Peterson (77)
    • 6.3. Các giải pháp phần cứng (78)
      • 6.3.1. Cấm ngắt (78)
      • 6.3.2. Chỉ thị TSL (Test-and-Set) (78)
      • 6.3.3. Các giải pháp “Sleep and wakeup” (79)
    • 6.4. Semaphore (80)
      • 6.4.1. Tổ chức truy xuất độc quyền với Semaphores (82)
      • 6.4.2. Tổ chức đồng bộ hóa với Semaphores (82)
    • 6.5. Monitors (83)
    • 6.6. Trao đổi thông điệp (86)
    • 6.7. Các vấn đề cổ điển của đồng bộ hoá (87)
      • 6.7.1. Vấn đề Người sản xuất – Người tiêu thụ (Producer-Consumer) (87)
      • 6.7.2. Monitor (89)
      • 6.7.3. Trao đổi thông điệp (91)
    • 6.8. Mô hình Readers-Writers (92)
      • 6.8.1. Trao đổi thông điệp (95)
  • Chương 7. Tắc nghẽn (Deadlock) (97)
    • 7.1. Định nghĩa (97)
    • 7.2. Điều kiện xuất hiện tắc nghẽn (98)
    • 7.3. Đồ thị cấp phát tài nguyên (98)
    • 7.4. Các phương pháp xử lý tắc nghẽn (99)
    • 7.5. Ngăn chặn tắc nghẽn (99)
    • 7.6. Tránh tắc nghẽn (100)
      • 7.6.1. Một số khái niệm cơ sở (100)
    • 7.7. Phát hiện tắc nghẽn (104)
      • 7.7.1. Giải thuật phát hiện tắc nghẽn (104)
    • 7.8. Hiệu chỉnh tắc nghẽn (104)
  • Chương 8. Quản lý bộ nhớ (106)
    • 8.1. Mô hình Linker_Loader (108)
    • 8.2. Mô hình Base &Bound (108)
    • 8.3. Phân mảnh ngoại vi (110)
    • 8.4. Cấp phát không liên tục (111)
      • 8.4.1. Phân đoạn (Segmentation) (111)
      • 8.4.2. Cơ chế MMU trong kỹ thuật phân đoạn (112)
      • 8.4.3. Chuyển đổi địa chỉ (112)
      • 8.4.4. Cài đặt bảng phân đoạn (113)
    • 8.5. Phân trang ( Paging) (116)
      • 8.5.1. Cơ chế MMU trong kỹ thuật phân trang (117)
      • 8.5.2. Chuyển đổi địa chỉ (117)
      • 8.5.3. Cài đặt bảng trang (118)
    • 8.6. Tổ chức bảng trang (120)
      • 8.6.1. Bảo vệ (121)
      • 8.6.2. Chia sẻ bộ nhớ trong cơ chế phân trang (122)
    • 8.7. Phân đoạn kết hợp phân trang (Paged segmentation) (123)
      • 8.7.1. Cơ chế MMU trong kỹ thuật phân đoạn kết hợp phân trang (124)
      • 8.7.2. Chuyển đổi địa chỉ (124)
    • 8.8. Quản lý bộ nhớ-Tóm tắt (125)
      • 8.8.1. Một số cách tiếp cận tổ chức bộ nhớ chính (125)
      • 8.8.2. Củng cố bài học (126)
      • 8.8.3. Bài Tập (126)
  • Chương 9. Bộ nhớ ảo (129)
    • 9.1. Dẫn nhập (129)
    • 9.2. Định nghĩa (129)
    • 9.3. Cài đặt bộ nhớ ảo (130)
    • 9.4. Phân trang theo yêu cầu ( demand paging) (130)
    • 9.5. Cơ chế phần cứng (131)
    • 9.6. Thay thế trang (133)
    • 9.7. Sự thi hành phân trang theo yêu cầu (134)
    • 9.8. Các thuật toán thay thế trang (134)
      • 9.8.1. Thuật toán FIFO (135)
      • 9.8.2. Thuật toán tối ƣu (136)
      • 9.8.3. Thuật toỏn ô Lõu nhất chƣa sử dụng ằ ( Least-recently-used LRU) (0)
    • 9.9. Các thuật toán xấp xỉ LRU (138)
      • 9.9.1. Thuật toán với các bit reference phụ trợ (138)
      • 9.9.2. Thuật toỏn ô cơ hội thứ hai ằ (139)
      • 9.9.3. Thuật toỏn ô cơ hội thứ hai ằ nõng cao (Not Recently Used - NRU) (140)
    • 9.10. Các thuật toán thống kê (141)
    • 9.11. Cấp phát khung trang (141)
      • 9.11.1. Số khung trang tối thiểu (141)
    • 9.12. Trì trệ toàn bộ hệ thống (Thrashing) (142)
    • 9.13. Mụ hỡnh ô tập làm việc ằ (working set) (143)
    • 9.14. Tần suất xảy ra lỗi trang (145)
    • 9.15. Bộ nhớ ảo-Tóm tắt (145)
      • 9.15.1. Củng cố bài học (146)
      • 9.15.2. Bài Tập (146)
  • Chương 10. Hệ thống quản lý tập tin (150)
    • 10.1. CÁC KHÁI NIỆM CƠ BẢN (150)
      • 10.1.1. Bộ nhớ ngoài (150)
      • 10.1.2. Tập tin và thƣ mục (150)
    • 10.2. Hệ thống quản lý tập tin (151)
    • 10.3. Mô hình tổ chức và quản lý các tập tin (151)
      • 10.3.1. Tập tin (151)
      • 10.3.2. Thƣ mục (0)
    • 10.4. Các chức năng (158)
      • 10.4.1. Tập tin (158)
      • 10.4.2. Thƣ mục (0)
    • 10.5. Câu hỏi kiểm tra kiến thức (159)
  • Chương 11. Các phương pháp cài đặt hệ thống quản lý tập tin (160)
    • 11.1. BẢNG QUẢN LÝ THƢ MỤC, TẬP TIN (160)
      • 11.1.1. Khái niệm (160)
    • 11.2. Bảng phân phối vùng nhớ (161)
      • 11.2.1. Khái niệm (161)
      • 11.2.2. Các phương pháp (161)
      • 11.2.3. Danh sách liên kết sử dụng index (163)
      • 11.2.4. I-nodes (163)
    • 11.3. Tập tin chia sẻ (164)
    • 11.4. Quản lý đĩa (165)
    • 11.5. Kích thước khối (166)
    • 11.6. Lưu giữa các khối trống (166)
    • 11.7. Độ an toàn của hệ thống tập tin (167)
      • 11.7.1. Quản lý khối bị hỏng (167)
    • 11.8. Backup (167)
    • 11.9. Tính không đổi của hệ thống tập tin (168)
    • 11.10. Câu hỏi kiểm tra kiến thức (169)
    • 11.11. Bài tập (169)
  • Chương 12. Giới thiệu một số hệ thống tập tin (171)
    • 12.1. MS-DOS (171)
      • 12.1.1. Đặc điểm (171)
      • 12.1.2. Cài đặt (171)
    • 12.2. Windows95 (174)
      • 12.2.1. Bộ quản lý cài đặt hệ thống tập tin (IFS) (174)
      • 12.2.2. Bộ điều khiển mô tả kiểu (TSD) (176)
      • 12.2.3. Hỗ trợ tên tập tin dài :(LFN) (179)
      • 12.2.4. Đặc điểm của NTFS (180)
      • 12.2.5. Cấu trúc tập tin và volume của NTFS (180)
    • 12.3. Hệ thống tập tin của Unix (182)
      • 12.3.1. Cài đặt hệ thống tập tin của Unix (184)
    • 12.4. Bài tập (185)
  • Chương 13. Hệ thống quản lý nhập-xuất (187)
    • 13.1. KHÁI NIỆM VỀ HỆ THỐNG QUẢN LÝ NHẬP/XUẤT (187)
    • 13.2. Phần cứng nhập-xuất (188)
      • 13.2.1. Thiết bị I/O (188)
      • 13.2.2. Tổ chức của chức năng I/O (189)
      • 13.2.3. DMA (Direct Memory Access) (192)
    • 13.3. Phần mềm nhập xuất (192)
      • 13.3.1. Kiểm soát ngắt (193)
      • 13.3.2. Điều khiển thiết bị (device drivers) (193)
    • 13.4. Phần mềm nhập/xuất độc lập thiết bị (194)
    • 13.5. Phần mềm nhập/xuất phạm vi người sử dụng (195)
  • Chương 14. Giới thiệu một số hệ thống I-O (196)
    • 14.1. HỆ THỐNG I/O ĐĨA (196)
      • 14.1.1. Các thuật toán đọc đĩa (197)
      • 14.1.2. Lựa chọn thuật toán lập lịch (200)
    • 14.2. Hệ thống I-O chuẩn (terminals) (0)
      • 14.2.1. Phần cứng terminal (0)
      • 14.2.2. Terminal ánh xạ bộ nhớ (0)
      • 14.2.3. Phần mềm nhập (0)
      • 14.2.4. Phần mềm xuất (0)
    • 14.3. Cài đặt đồng hồ (0)
      • 14.3.1. Phần cứng đồng hồ (0)
      • 14.3.2. Phần mềm đồng hồ (0)
    • 14.4. Câu hỏi kiểm tra kiến thức (0)
    • 14.5. Bài tập (0)
  • Chương 15. Bảo vệ an toàn hệ thống (0)
    • 15.1. Mục tiêu bảo vệ hệ thống (Protection) (0)
    • 15.2. Miền bảo vệ (Domain of Protection ) (0)
      • 15.2.1. Khái niệm (0)
      • 15.2.2. Cấu trúc của miền bảo vệ (0)
      • 15.2.3. Mối liên kết giữa một tiến trình và một miền bảo vệ có thể tĩnh hay động (0)
    • 15.3. Ma trận quyền truy xuất ( Access matrix) (0)
    • 15.4. Bảng toàn cục (0)
      • 15.4.1. Danh sách quyền truy xuất ( Access control list _ ACL) (0)
      • 15.4.2. Danh sách tiềm năng của miền bảo vệ (Capability list – C_List) (0)
    • 15.5. Cơ chế khóa và chìa (0)
    • 15.6. An toàn hệ thống (Security) (0)
      • 15.6.1. Các vấn đề về an toàn hệ thống (0)
      • 15.6.2. Mối đe dọa từ các chương trình (0)
  • Chương 16. Hệ điều hành windowns NT (0)
    • 16.1. LỊCH SỬ (0)
    • 16.2. MỤC TIÊU THIẾT KẾ (0)
    • 16.3. CÁC THÀNH PHẦN HỆ THỐNG (0)
    • 16.4. KIẾN TRÚC HỆ ĐIỀU HÀNH WindowsNT (0)
    • 16.5. CÁC MODULE QUẢN LÝ CỦA WindowsNT (0)
    • 16.6. Hệ thống tập tin (0)
    • 16.7. Quản lý nhập xuất (0)
  • Chương 17. Hệ điều hành Linux -Giới thiệu (0)
    • 17.1. GIỚI THIỆU (0)
    • 17.2. Tổ chức hệ thống (0)
      • 17.2.1. Hệ thống tập tin (0)
    • 17.3. Điều khiển thiết bị (0)
    • 17.4. Quản lý tiến trình (0)
    • 17.5. Quản lý bộ nhớ (0)
    • 17.6. Câu hỏi kiểm tra kiến thức (0)

Nội dung

Tổng quan về hệ điều hành

Khái niệm về hệ điều hành

Hệ điều hành là phần mềm trung gian giữa người sử dụng và phần cứng máy tính, nhằm tạo ra môi trường thuận lợi cho việc thực thi các chương trình Mục tiêu chính của hệ điều hành là nâng cao tính dễ sử dụng, tiện lợi và hiệu quả cho người dùng.

Hệ điều hành đóng vai trò quan trọng trong các hệ thống máy tính, thường được chia thành bốn phần chính: phần cứng, hệ điều hành, chương trình ứng dụng và người sử dụng.

Phần cứng máy tính bao gồm CPU, bộ nhớ và các thiết bị nhập xuất, là những tài nguyên thiết yếu Các chương trình ứng dụng như phần mềm dịch thuật, hệ thống cơ sở dữ liệu, trò chơi và ứng dụng thương mại sử dụng tài nguyên này để đáp ứng nhu cầu của người dùng Hệ điều hành đóng vai trò quan trọng trong việc điều khiển và phối hợp việc sử dụng phần cứng cho nhiều ứng dụng của người dùng khác nhau, đồng thời cung cấp một môi trường làm việc hiệu quả cho các chương trình.

Hệ điều hành là bộ phận phân phối tài nguyên của máy tính, quản lý các tài nguyên như CPU, bộ nhớ, lưu trữ và thiết bị nhập xuất Nó đáp ứng các yêu cầu của chương trình và người sử dụng, đồng thời giải quyết tranh chấp và quyết định cấp phát tài nguyên một cách hiệu quả nhất để tối ưu hóa hoạt động của máy tính.

12 hành cũng có thể được coi như là một chương trình kiểm soát việc sử dụng máy tính, đặc biệt là các thiết bị nhập xuất

Hệ điều hành chưa có định nghĩa hoàn hảo, nhưng nó tồn tại để giải quyết các vấn đề trong việc sử dụng hệ thống máy tính Mục tiêu chính của hệ điều hành là tạo điều kiện thuận lợi cho việc thi hành các chương trình, trong khi mục tiêu thứ hai là nâng cao hiệu quả thao tác trên hệ thống, đặc biệt quan trọng trong các hệ thống đa người dùng và quy mô lớn Tuy nhiên, hai mục tiêu này có thể mâu thuẫn với nhau, do đó lý thuyết về hệ điều hành tập trung vào việc tối ưu hóa việc sử dụng tài nguyên máy tính.

Phân loại hệ điều hành

1.2.1 Hệ thống xử lý theo lô

Bộ giám sát thường trực :

Khi một công việc kết thúc, hệ thống tự động chuyển sang công việc tiếp theo mà không cần sự can thiệp của lập trình viên, giúp rút ngắn thời gian thực hiện Chương trình giám sát, hay còn gọi là bộ giám sát thường trực, được thiết kế để theo dõi và quản lý việc thực hiện các công việc một cách tự động và luôn duy trì trong bộ nhớ chính.

Hệ điều hành theo lô thực hiện các công việc lần lượt theo những chỉ thị định trước

CPU và thao tác nhập xuất :

CPU thường xuyên ở trạng thái nhàn rỗi vì tốc độ làm việc của các thiết bị nhập xuất, thường là thiết bị cơ, chậm hơn rất nhiều so với các thiết bị điện tử Ngay cả CPU chậm nhất cũng nhanh hơn nhiều lần so với thiết bị nhập xuất Vì vậy, cần có các phương pháp để đồng bộ hóa hoạt động của CPU với thao tác nhập xuất.

Xử lý offline là quá trình mà CPU không trực tiếp giao tiếp với thiết bị nhập và xuất, mà thay vào đó, sử dụng một bộ lưu trữ trung gian Tất cả các hoạt động đọc và xuất dữ liệu đều diễn ra thông qua bộ lưu trữ này, giúp tối ưu hóa hiệu suất làm việc của CPU.

Spool (simultaneous peripheral operation on-line) là một cơ chế đồng bộ hóa các thao tác ngoại vi trực tuyến Nó cho phép CPU xử lý dữ liệu theo hình thức trực tuyến, đồng thời sử dụng đĩa để lưu trữ cả dữ liệu đầu vào và đầu ra.

1.2.2 Hệ thống xử lý theo lô đa chương

Khi nhiều công việc cùng truy xuất lên thiết bị, lập lịch cho các công việc trở nên cần thiết, với khả năng đa chương là yếu tố quan trọng nhất Đa chương (multiprogram) tối ưu hóa việc sử dụng CPU bằng cách tổ chức các công việc để CPU luôn trong trạng thái hoạt động Hệ điều hành sẽ lưu trữ một phần của các công việc trong bộ nhớ, cho phép CPU lần lượt thực hiện các phần công việc này Khi một công việc đang thực hiện và có yêu cầu truy xuất thiết bị, CPU sẽ không dừng lại mà tiếp tục xử lý công việc thứ hai.

Hệ điều hành đa chương rất tinh vi, vì nó quyết định cho người sử dụng và phải xử lý nhiều vấn đề phức tạp, bao gồm lập lịch công việc, quản lý bộ nhớ và điều phối CPU.

1.2.3 Hệ thống chia sẻ thời gian

Hệ thống chia sẻ thời gian, hay còn gọi là hệ thống đa nhiệm, là một dạng mở rộng của hệ đa chương Trong hệ thống này, nhiều công việc được thực hiện đồng thời thông qua cơ chế chuyển đổi nhanh chóng của CPU, tương tự như trong hệ đa chương.

Hệ thống chia sẻ được thiết kế để tối ưu hóa việc sử dụng tài nguyên máy tính Hệ điều hành chia sẻ thời gian quản lý CPU và cho phép đa chương, cung cấp cho mỗi người dùng một phần nhỏ của máy tính Khi một chương trình được thực thi, nó trở thành một tiến trình Trong quá trình thực thi, tiến trình cần thực hiện các thao tác nhập xuất, và trong thời gian này, CPU sẽ chuyển sang thi hành một tiến trình khác Hệ điều hành chia sẻ cho phép nhiều người dùng sử dụng máy tính đồng thời, nhờ vào khả năng chuyển đổi nhanh chóng, tạo cảm giác như các tiến trình đang được thực hiện song song.

Hệ điều hành chia sẻ phức tạp hơn hệ điều hành đa chương, yêu cầu các chức năng quản trị và bảo vệ bộ nhớ, cũng như sử dụng bộ nhớ ảo Ngoài ra, nó còn cung cấp hệ thống tập tin truy xuất trực tuyến, giúp tối ưu hóa hiệu suất và quản lý dữ liệu hiệu quả.

Hệ điều hành chia sẻ là kiểu của các hệ điều hành hiện đại ngày nay

Các hệ thống máy tính không chỉ có một bộ xử lý mà còn có nhiều bộ xử lý cùng chia sẻ hệ thống đường truyền dữ liệu, đồng hồ, bộ nhớ và các thiết bị ngoại vi Những bộ xử lý này có khả năng giao tiếp nội bộ với nhau để tối ưu hóa hiệu suất làm việc.

Có nhiều lý do để xây dựng hệ thống này Sự gia tăng số lượng bộ xử lý giúp công việc được thực hiện nhanh chóng hơn; tuy nhiên, điều này không đồng nghĩa với việc tốc độ tăng lên theo tỷ lệ tương ứng Cụ thể, việc có nhiều bộ xử lý không đảm bảo rằng hiệu suất sẽ nhanh gấp n lần.

Hệ thống nhiều bộ xử lý tối ưu hơn so với hệ thống nhiều máy mỗi máy chỉ có một bộ xử lý, nhờ vào khả năng chia sẻ thiết bị ngoại vi, hệ thống lưu trữ và nguồn Điều này tạo điều kiện thuận lợi cho nhiều chương trình hoạt động đồng thời trên cùng một tập dữ liệu Thêm vào đó, độ tin cậy của hệ thống cao hơn, vì các chức năng được xử lý trên nhiều bộ xử lý, do đó, sự hỏng hóc của một bộ xử lý sẽ không ảnh hưởng đến toàn bộ hệ thống.

Hệ thống đa xử lý thường áp dụng hai phương pháp chính: đa xử lý đối xứng và bất đối xứng Trong đa xử lý đối xứng, mỗi bộ xử lý vận hành với một bản sao của hệ điều hành và chúng liên lạc với nhau khi cần thiết Ngược lại, trong đa xử lý bất đối xứng, mỗi bộ xử lý được giao một nhiệm vụ riêng, với một bộ xử lý chính kiểm soát toàn bộ hệ thống Mô hình này hoạt động theo quan hệ chủ tớ, trong đó bộ xử lý chính lập lịch cho các bộ xử lý khác thực hiện nhiệm vụ theo lệnh hoặc chỉ thị đã được định nghĩa trước.

Hệ thống xử lý đối xứng nổi bật nhất là phiên bản Encore của UNIX dành cho máy tính Multimax, với hàng tá bộ xử lý Ƣu điểm chính của hệ thống này là khả năng thực hiện nhiều tiến trình đồng thời Hệ thống đa xử lý cho phép tự động chia sẻ công việc và tài nguyên giữa các bộ xử lý khác nhau.

Hệ thống đa xử lý không đồng bộ thường được sử dụng trong các hệ thống lớn, nơi mà phần lớn thời gian hoạt động tập trung vào việc xử lý dữ liệu nhập xuất.

Cấu trúc hệ điều hành

1.3.1 Các thành phần của hệ thống a Quản lý tiến trình

Một chương trình không thể thực hiện nếu không có CPU để thực thi Tiến trình là một chương trình đang được thực hiện, nhưng khái niệm này rộng hơn nhiều Một công việc theo lô và một chương trình người dùng chia sẻ thời gian đều được coi là tiến trình Ngoài ra, các công việc của hệ thống như việc xuất dữ liệu ra máy in cũng được xem là tiến trình.

Một tiến trình cần sử dụng tài nguyên như thời gian CPU, bộ nhớ, tập tin và thiết bị nhập xuất để hoàn thành công việc của nó Các tài nguyên này được cung cấp khi tiến trình được tạo ra hoặc trong quá trình thực thi Khi khởi tạo, tiến trình tiêu tốn nhiều tài nguyên vật lý và logic, cùng với việc khởi tạo dữ liệu đầu vào Ví dụ, một tiến trình có thể hiển thị trạng thái của tập tin trên màn hình, với đầu vào là tên tập tin Tiến trình sẽ thực hiện các chỉ thị thích hợp và gọi hệ thống để lấy thông tin cần thiết, sau đó hiển thị thông tin đó Khi tiến trình kết thúc, hệ điều hành sẽ tái tạo lại các tài nguyên để có thể sử dụng lại.

Một tiến trình là hoạt động chủ động, trái ngược với tập tin trên đĩa, vốn là thụ động Tiến trình sử dụng một bộ đếm chương trình để xác định lệnh tiếp theo cần thi hành Quá trình thực thi diễn ra theo cơ chế tuần tự, với CPU thực hiện từ lệnh đầu đến lệnh cuối.

Một tiến trình được xem là đơn vị làm việc của hệ thống, cho phép nhiều tiến trình hoạt động đồng thời Trong một hệ thống, có thể tồn tại cả tiến trình của hệ điều hành và tiến trình do người sử dụng khởi tạo, tạo ra sự đồng thời trong quá trình xử lý.

Vai trò của hệ điều hành trong việc quản lý tiến trình là :

 Tạo và hủy các tiến trình của người sử dụng và của hệ thống

 Ngƣng và thực hiện lại một tiến trình

 Cung cấp cơ chế đồng bộ tiến trình

 Cung cấp cách thông tin giữa các tiến trình

 Cung cấp cơ chế kiểm soát deadlock(khái niệm này sẽ đƣợc trình bày trong chương II)

17 b Quản lý bộ nhớ chính :

Trong hệ thống máy tính hiện đại, bộ nhớ chính là trung tâm của các thao tác, xử lý

Bộ nhớ chính được coi là một mảng kiểu byte hoặc word, với mỗi phần tử có địa chỉ riêng, cho phép CPU truy xuất dữ liệu nhanh chóng hơn so với các thiết bị nhập/xuất CPU đọc các chỉ thị từ bộ nhớ chính, trong khi các thiết bị nhập/xuất sử dụng cơ chế DMA để thực hiện việc đọc và ghi dữ liệu Thông thường, bộ nhớ chính chứa các thiết bị mà CPU có thể truy cập trực tiếp, ví dụ như khi CPU lấy dữ liệu từ đĩa, dữ liệu này sẽ được chuyển vào bộ nhớ thông qua các lệnh hệ thống nhập/xuất.

Để thực thi một chương trình, trước tiên nó cần được ánh xạ thành địa chỉ tuyệt đối và nạp vào bộ nhớ chính Khi chương trình đang chạy, hệ thống sẽ truy xuất các chỉ thị và dữ liệu từ bộ nhớ chính Dữ liệu sẽ vẫn tồn tại trong bộ nhớ ngay cả khi tiến trình kết thúc, cho đến khi một tiến trình khác ghi chồng lên Để tối ưu hóa hoạt động của CPU và tốc độ máy tính, nhiều tiến trình được giữ lại trong bộ nhớ Có nhiều kế hoạch quản trị bộ nhớ khác nhau, và hiệu quả của các thuật toán quản lý bộ nhớ phụ thuộc vào từng tình huống cụ thể Việc lựa chọn thuật toán cho một hệ thống cụ thể phụ thuộc vào nhiều yếu tố, đặc biệt là phần cứng của hệ thống.

Hệ điều hành có những vai trò nhƣ sau trong việc quản lý bộ nhớ chính :

 Lưu giữ thông tin về các vị trí trong bộ nhớ đã được sử dụng và ai sử dụng

 Quyết định tiến trình nào đƣợc nạp vào bộ nhớ chính, khi bộ nhớ đã có thể dùng đƣợc

 Cấp phát và thu hồi bộ nhớ khi cần thiết c Quản lý bộ nhớ phụ :

Mục tiêu chính của hệ thống máy tính là thực thi chương trình, trong đó các chương trình và dữ liệu cần được lưu trữ trong bộ nhớ chính trong suốt quá trình thực hiện Tuy nhiên, bộ nhớ chính có dung lượng hạn chế và dữ liệu sẽ bị mất khi không còn nguồn năng lượng Do đó, hệ thống máy tính hiện đại sử dụng hệ thống lưu trữ phụ, chủ yếu là đĩa, để lưu trữ chương trình và dữ liệu Hầu hết các chương trình như trình biên dịch, hợp ngữ, và các công cụ soạn thảo đều được lưu trên đĩa cho đến khi được nạp vào bộ nhớ chính để thực hiện Vì vậy, việc quản lý hệ thống đĩa là rất quan trọng đối với hiệu suất của hệ thống máy tính.

Vai trò của hệ điều hành trong việc quản lý đĩa :

 Quản lý vùng trống trên đĩa

Hệ thống đĩa hoạt động thường xuyên, do đó cần được sử dụng một cách hiệu quả Tốc độ của toàn bộ hệ thống phụ thuộc nhiều vào tốc độ truy xuất đĩa Quản lý hệ thống nhập xuất là yếu tố quan trọng trong việc tối ưu hóa hiệu suất này.

Một trong những mục tiêu chính của hệ điều hành là ẩn đi các đặc điểm kỹ thuật của phần cứng, nhằm mang đến cho người dùng một giao diện thân thiện và dễ sử dụng hơn Hệ thống nhập/xuất đóng vai trò quan trọng trong việc này.

 Giao tiếp điều khiển thiết bị (device drivers) tổng quát

 Bộ điều khiển cho các thiết bị phần cứng

 Chỉ có device driver mới hiểu đến cấu trúc đặc thù của thiết bị mà nó mô tả e Quản lý hệ thống tập tin :

Hệ thống quản lý tập tin là một phần quan trọng của hệ điều hành, cho phép máy tính lưu trữ thông tin trên nhiều loại thiết bị vật lý khác nhau như băng từ, đĩa từ và đĩa quang.

Mỗi loại thiết bị lưu trữ có những đặc điểm riêng về tổ chức vật lý và bộ kiểm soát như bộ điều khiển đĩa, với các tính chất như tốc độ, khả năng lưu trữ, tốc độ truyền dữ liệu và phương thức truy xuất Để tối ưu hóa việc sử dụng hệ thống máy tính, hệ điều hành cung cấp một cái nhìn logic đồng nhất về hệ thống lưu trữ thông tin, trong đó định nghĩa đơn vị lưu trữ logic là tập tin Hệ điều hành thực hiện việc ánh xạ từ tập tin đến vùng thông tin trên đĩa và truy xuất các tập tin thông qua thiết bị lưu trữ.

Một tập tin là một tập hợp thông tin được xác định bởi người tạo ra nó, thường đại diện cho chương trình và dữ liệu Dữ liệu trong tập tin có thể là số, ký tự hoặc ký số, và thường có dạng tự do như tập tin văn bản hoặc nhị phân, chứa dãy các bit.

Vai trò của hệ điều hành trong việc quản lý tập tin :

 Tạo và xoá một tập tin

 Tạo và xoá một thƣ mục

 Hỗ trợ các thao tác trên tập tin và thƣ mục

 Ánh xạ tập tin trên hệ thống lưu trữ phụ

 Backup tập tin trên các thiết bị lưu trữ f Hệ thống bảo vệ :

Trong một hệ thống đa người dùng với nhiều tiến trình hoạt động đồng thời, việc bảo vệ các tiến trình khỏi các hoạt động khác là rất quan trọng Hệ thống cung cấp cơ chế bảo đảm rằng các tài nguyên như tập tin, bộ nhớ, CPU chỉ được truy cập bởi những tiến trình có quyền hạn Chẳng hạn, bộ nhớ đảm bảo rằng mỗi tiến trình chỉ có thể thực thi trong phạm vi địa chỉ của nó, trong khi bộ thời gian ngăn chặn tình trạng độc chiếm CPU bởi một tiến trình Ngoài ra, các thiết bị ngoại vi cũng được bảo vệ để đảm bảo tính toàn vẹn của hệ thống.

Hệ thống bảo vệ là cơ chế kiểm soát việc truy xuất tài nguyên của chương trình, tiến trình hoặc người sử dụng Nó cũng cung cấp phương thức để mô tả mức độ kiểm soát này.

Hệ thống bảo vệ nâng cao độ an toàn trong việc kiểm tra lỗi giao tiếp giữa các hệ thống nhỏ bên trong Điều này đặc biệt quan trọng trong cơ chế dòng lệnh.

Các dịch vụ của hệ điều hành

Hệ điều hành tạo ra môi trường cho việc thực thi các chương trình, cung cấp dịch vụ cho cả người dùng và ứng dụng Mặc dù các dịch vụ này có sự khác biệt giữa các hệ thống, nhưng vẫn tồn tại những lớp chung Những dịch vụ này hỗ trợ lập trình viên, giúp quá trình lập trình trở nên thuận tiện và dễ dàng hơn.

Hệ thống cần có khả năng nạp chương trình vào bộ nhớ và thực thi nó Chương trình phải có khả năng kết thúc thực thi một cách bình thường hoặc xử lý các lỗi khi có sự cố xảy ra.

Trong lập trình, thao tác nhập xuất là một yêu cầu quan trọng, có thể liên quan đến tập tin hoặc thiết bị Đối với thiết bị, có một hàm đặc biệt được thi hành để quản lý quá trình này Để nâng cao hiệu quả, người sử dụng nên truy xuất các thiết bị nhập xuất thông qua các phương thức mà hệ điều hành cung cấp, thay vì truy cập trực tiếp.

 Thao tác trên hệ thống tập tin

Trong nhiều tình huống, một tiến trình cần trao đổi thông tin với tiến trình khác, có thể thực hiện trên cùng một máy tính hoặc qua mạng Thông tin được chia sẻ qua bộ nhớ hoặc thông qua kỹ thuật chuyển thông điệp, và quá trình này được quản lý bởi hệ điều hành.

Hệ điều hành cần có khả năng phát hiện và báo lỗi, vì lỗi có thể phát sinh từ nhiều nguồn như CPU, bộ nhớ, thiết bị nhập xuất hoặc trong các chương trình Mỗi loại lỗi sẽ được hệ điều hành xử lý theo cách tương ứng để đảm bảo hoạt động ổn định.

Lời gọi hệ thống

Lời gọi hệ thống cung cấp một giao tiếp giữa tiến trình và hệ điều hành Lời gọi này cũng nhƣ các lệnh hợp ngữ

Một số hệ thống cho phép thực hiện lời gọi hệ thống từ cấp lập trình ngôn ngữ cao, thông qua các hàm và lời gọi hàm Để hiểu rõ hơn về quá trình hoạt động của lời gọi hệ thống, chúng ta sẽ khảo sát một chương trình nhỏ dùng để đọc dữ liệu từ một tập tin và sao chép qua tập tin khác Dữ liệu đầu vào của chương trình bao gồm tên của hai tập tin: tập tin nhập và tập tin xuất, được cung cấp bởi người sử dụng qua nhiều cách khác nhau, như nhập trực tiếp hoặc chọn bằng chuột Sau khi có tên của hai tập tin, chương trình sẽ mở tập tin nhập và tạo tập tin xuất, với mỗi thao tác này được thực hiện thông qua các lời gọi hệ thống.

Khi chương trình mở tập tin nhập, có thể xảy ra lỗi như không tìm thấy tập tin hoặc bị cấm truy cập, và trong trường hợp này, chương trình sẽ hiển thị thông điệp lỗi Nếu tập tin nhập tồn tại, chương trình sẽ tạo một tập tin mới và kiểm tra xem tập tin xuất đã tồn tại hay chưa, sau đó sẽ thực hiện các thao tác tương ứng như hủy tiến trình hoặc xóa tập tin cũ để tạo tập tin mới Sau khi thiết lập xong tập tin, hệ thống sẽ bắt đầu vòng lặp để đọc dữ liệu từ tập tin nhận và ghi vào tập tin xuất, với mỗi bước đều có kiểm tra lỗi Cuối cùng, sau khi hoàn tất việc sao chép, chương trình sẽ đóng cả hai tập tin, hiển thị thông báo hoàn tất lên màn hình và kết thúc chương trình.

Trong các ngôn ngữ lập trình cao cấp, người dùng không cần chú ý đến các chi tiết phức tạp, mà chỉ cần sử dụng các hàm hoặc lệnh để thực hiện nhiệm vụ Lời gọi hệ thống có thể được thực hiện theo nhiều cách khác nhau, với kiểu và khối lượng thông tin phụ thuộc vào hệ thống và thời điểm gọi.

Có ba phương pháp chính để chuyển tham số cho hệ điều hành: sử dụng thanh ghi cho tham số đơn giản nhất, lưu trữ nhiều tham số trong khối hoặc bảng trong bộ nhớ, và cuối cùng là áp dụng cơ chế stack.

Lời gọi hệ thống có thể đƣợc chia thành các loại : kiểm soát tiến trình, thao tác tập tin, thao tác thiết bị, thông tin.

Cấu trúc hệ thống

Cấu trúc trong nhiều hệ thống thương mại thường không được định nghĩa rõ ràng, bắt đầu với một hệ điều hành nhỏ, đơn giản và có giới hạn.

MS-DOS là một hệ điều hành đơn giản, cung cấp các chức năng cần thiết trong không gian hạn chế do phần cứng Hệ điều hành này không phân chia thành các đơn thể rõ rệt.

Hình 1.1 Cấu trúc của MS-DOS

MS-DOS có cấu trúc nhưng không phân chia rõ rệt giữa giao diện và chức năng Các chương trình ứng dụng có khả năng truy xuất trực tiếp các thủ tục nhập xuất cơ bản, cho phép ghi trực tiếp lên màn hình hoặc bộ điều khiển đĩa.

UNIX là một hệ điều hành có cấu trúc đơn giản, gồm hai phần chính: hạt nhân và các chương trình hệ thống Hạt nhân được chia thành các giao tiếp và bộ điều khiển thiết bị.

Hạt nhân là phần trung tâm của hệ thống, nằm giữa lời gọi hệ thống và phần cứng, cung cấp các chức năng như quản lý hệ thống tập tin, lập lịch CPU và quản trị bộ nhớ Tất cả các chức năng này được tích hợp trong một lớp duy nhất Các chương trình hệ thống sử dụng lời gọi hệ thống từ hạt nhân để thực hiện các tác vụ hữu ích như biên dịch và thao tác tập tin Lời gọi hệ thống cũng định nghĩa giao tiếp lập trình cho UNIX, tạo ra một tập hợp các chương trình hệ thống thông thường có khả năng giao tiếp với người sử dụng.

Những version mới của UNIX đƣợc thiết kế để sử dụng phần cứng phức tạp hơn, do đó hệ điều hành đƣợc chia thành nhiều phần nhỏ hơn

Kỹ thuật topdown cho phép chia nhỏ các chức năng và đặc tính của hệ thống thành nhiều thành phần Phương pháp này giúp che giấu thông tin, ngăn chặn chương trình của người dùng cài đặt các hàm truy xuất cấp thấp, và thay thế bằng những lớp giao tiếp nội bộ.

Hệ điều hành được tổ chức thành nhiều lớp, với lớp dưới cùng là phần cứng và lớp trên cùng là giao diện người dùng Lớp hệ điều hành được thiết kế dưới dạng các đối tượng trừu tượng, trong đó mỗi lớp thường bao gồm một số cấu trúc nhất định.

Mỗi lớp trong hệ thống chỉ sử dụng các thao tác được cung cấp bởi lớp bên dưới mà không cần quan tâm đến cách thức cài đặt hệ điều hành Các dữ liệu và hàm có thể được gọi từ lớp trên và cũng có thể gọi các chức năng của lớp dưới Điều này giúp cho các lớp cài đặt hoạt động độc lập và hiệu quả hơn.

Cấu trúc lớp của hệ điều hành THE (Technische Hogeschool Eindhoven) được thiết kế và áp dụng lần đầu tiên, bao gồm sáu lớp khác nhau.

Lớp dưới cùng của hệ điều hành là phần cứng, tiếp theo là lớp cài đặt lập lịch CPU, sau đó là lớp quản lý bộ nhớ ảo Lớp tiếp theo chứa driver thiết bị cho các thao tác với màn hình, kế đến là tổ chức buffer cho việc nhập xuất thiết bị Cuối cùng, lớp trên cùng là chương trình của người sử dụng Các ví dụ khác bao gồm cấu trúc lớp của hệ điều hành.

Hình 1.6 Cấu trúc lớp của OS/2Máy ảo

Hệ thống máy tính thường có nhiều lớp, bắt đầu từ phần cứng ở lớp thấp nhất Lớp tiếp theo là hạt nhân, sử dụng các chỉ thị của phần cứng để tạo ra các lời gọi hệ thống Các chương trình hệ thống có thể tương tác với phần cứng thông qua lời gọi hệ thống hoặc trực tiếp qua các chỉ thị phần cứng, cho thấy rằng phần cứng và lời gọi hệ thống hoạt động ở cùng một cấp độ.

Một số hệ thống được tổ chức để cho phép các chương trình ứng dụng dễ dàng gọi các chương trình hệ thống Mặc dù chương trình hệ thống nằm ở lớp cao hơn, nhưng chương trình ứng dụng vẫn có thể xem mọi phần dưới nó như một phần của máy Lớp ứng dụng này dựa trên khái niệm máy ảo, chẳng hạn như hệ điều hành máy ảo của IBM.

Hệ điều hành sử dụng lập lịch CPU và kỹ thuật bộ nhớ ảo để tạo ra nhiều tiến trình phức ảo, mỗi tiến trình hoạt động trên một bộ xử lý và bộ nhớ riêng biệt Những tiến trình này sở hữu các đặc điểm riêng, bao gồm lời gọi hệ thống và hệ thống tập tin, mà không cần phần cứng hỗ trợ trực tiếp.

Hệ thống chia sẻ tài nguyên để tạo ra các máy ảo, trong đó lập lịch CPU được phân bổ cho người dùng Spooling và hệ thống tập tin được phân chia thành các thẻ đọc ảo và máy in ảo Ngoài ra, một terminal cung cấp chức năng tạo các thao tác trên màn hình ảo.

Hệ thống đĩa là một trong những vấn đề phức tạp nhất của máy ảo, đặc biệt khi chỉ có ba bộ điều khiển đĩa nhưng lại có đến bảy máy ảo Để giải quyết tình huống này, cần thiết phải xây dựng một hệ thống đĩa ảo nhằm phân bổ tài nguyên hiệu quả cho từng máy ảo.

Lịch sử phát triển hệ điều hành

Vào giữa thập niên 1940, Howard Aiken tại Harvard và John von Neumann ở Princeton đã chế tạo thành công máy tính sử dụng ống chân không Những thiết bị này có kích thước lớn, với hơn 10.000 ống chân không, nhưng tốc độ xử lý của chúng chậm hơn nhiều so với những máy tính giá rẻ hiện nay.

Mỗi máy được phát triển bởi một nhóm thực hiện toàn bộ quy trình từ thiết kế, xây dựng, lập trình đến quản lý Lập trình thường sử dụng ngôn ngữ máy tuyệt đối thông qua bảng điều khiển để thực hiện các chức năng cơ bản, trong khi ngôn ngữ lập trình và hệ điều hành vẫn còn chưa được biết đến.

Vào đầu thập niên 1950, phiếu đục lổ ra đời và có thể viết chương trình trên phiếu thay cho dùng bảng điều khiển

Sự ra đời của thiết bị bán dẫn vào giữa thập niên 1950 đã tạo ra bước ngoặt lớn cho ngành công nghiệp máy tính, giúp máy tính trở nên tin cậy hơn và dễ dàng sản xuất, cung cấp cho khách hàng Lần đầu tiên, có sự phân chia rõ ràng giữa các vai trò như người thiết kế, người xây dựng, người vận hành, người lập trình và người bảo trì Quy trình làm việc của lập trình viên bao gồm việc viết chương trình trên giấy bằng hợp ngữ hoặc FORTRAN, sau đó đục lỗ trên phiếu và đưa vào máy, với kết quả cuối cùng được xuất ra từ máy in.

Hệ thống xử lý theo lô lưu trữ các yêu cầu cần thực hiện lên băng từ và thực hiện chúng lần lượt Sau khi hoàn tất, kết quả sẽ được ghi lên băng từ xuất, và cuối cùng, người sử dụng sẽ mang băng từ này đi in.

Hệ thống xử lý theo lô, được điều khiển bởi một chương trình đặc biệt, là nền tảng cho sự phát triển của các hệ điều hành sau này Trong giai đoạn này, ngôn ngữ lập trình chủ yếu được sử dụng là FORTRAN và hợp ngữ.

Trong giai đoạn này, máy tính đã trở thành công cụ quan trọng trong khoa học và thương mại Máy IBM 360, với việc sử dụng mạch tích hợp (IC), đã mở ra kỷ nguyên mới cho máy tính, giúp giảm kích thước và giá thành của hệ thống Sự phổ biến của máy tính gia tăng, cùng với sự xuất hiện ngày càng nhiều của các thiết bị ngoại vi, đã làm cho thao tác điều khiển trở nên phức tạp hơn.

Hệ điều hành được phát triển để điều phối và kiểm soát hoạt động của thiết bị, đồng thời giải quyết các yêu cầu tranh chấp Chương trình hệ điều hành bao gồm hàng triệu dòng mã và được thực hiện bởi hàng ngàn lập trình viên.

Hệ điều hành đã giới thiệu khái niệm đa chương, cho phép CPU không phải chờ đợi trong quá trình thực hiện các thao tác nhập xuất Bộ nhớ được chia thành nhiều phần, mỗi phần đảm nhận một công việc khác nhau Khi một công việc đang chờ nhập xuất, CPU có thể xử lý các công việc còn lại Tuy nhiên, khi nhiều công việc xuất hiện cùng lúc trong bộ nhớ, cần có cơ chế bảo vệ để tránh ảnh hưởng lẫn nhau giữa các công việc Hệ điều hành cũng thiết lập thuộc tính spool để quản lý hiệu quả quá trình này.

Giai đoạn này chứng kiến sự ra đời của hệ điều hành chia sẻ thời gian như CTSS của MIT, cùng với sự phát triển của các hệ điều hành lớn như MULTICS và UNIX Ngoài ra, hệ thống máy mini như DEC PDP-1 cũng xuất hiện trong thời kỳ này.

Giai đoạn này chứng kiến sự ra đời của máy tính cá nhân, đặc biệt là hệ thống IBM PC với hệ điều hành MS-DOS và sau này là Windows Đồng thời, các hệ điều hành tương tự Unix như Linux cũng phát triển mạnh mẽ trên nhiều nền tảng khác nhau Bắt đầu từ đầu thập niên 90, sự phát triển của hệ điều hành mạng và hệ điều hành phân tán cũng trở nên đáng chú ý.

1.7.5 Câu hỏi củng cố bài học

1 Hệ điều hành là gì?

2 Có mấy loại hệ điều hành ? Việc phân loại này dựa trên những tiêu chuẩn nào ?

3 Nêu các thành phần chính của hệ điều hành và chức năng của mỗi thành phần này

4 So sánh các cấu trúc khác nhau của hệ điều hành Ƣu khuyết điểm củ mỗi loại cấu trúc

5 Quá trình phát triển của hệ điều hành phụ thuộc vào những yếu tố nào

1 Hệ điều hành là : a Một chương trình b Một chương trình hay hệ chương trình c Một thiết bị d ROM-BIOS

2 Một hệ điều hành bao gồm : a Hệ thống quản lý ttin, I/O b Hệ thống quản lý ttrình, bộ nhớ c a và b d a, b, c đều sai

3 Hệ điều hành MS-DOS có cấu trúc : a Đơn thể b Hạt nhân c Lớp d Máy ảo

Các mô hình xử lý đồng hành

NHU CẦU XỬ LÝ ĐỒNG HÀNH

Có 2 động lực chính khiến cho các hệ điều hành hiện đại thường hỗ trợ môi trường đa nhiệm (multitask) trong đó chấp nhận nhiều tác vụ thực hiện đồng thời trên cùng một máy tính :

2.1.1 Tăng hiệu suất sử dụng CPU

Hầu hết các tác vụ khi thực hiện đều trải qua nhiều chu kỳ xử lý CPU và chu kỳ nhập xuất với các thiết bị nhập xuất một cách xen kẽ.

Khi chỉ có một tiến trình duy nhất trong hệ thống, CPU sẽ không hoạt động trong các chu kỳ IO của tác vụ Để tối ưu hóa hiệu suất CPU, cần tăng cường số lượng tác vụ trong hệ thống; khi tác vụ 1 đang xử lý IO, CPU có thể được sử dụng để thực hiện tác vụ 2.

2.1.2 Tăng tốc độ xử lý

Một số bài toán có thể xử lý song song sẽ tiết kiệm thời gian nếu được chia thành nhiều module hoạt động đồng thời.

Ví dụ : Xét bài toán tính giá trị biểu thức kq = a*b + c*d Nếu tiến hành tính đồng thời

Việc xử lý song song các phép toán như (a*b) và (c*d) sẽ tiết kiệm thời gian hơn so với việc thực hiện tuần tự Để đạt được điều này, cần có một mô hình xử lý đồng hành phù hợp Máy tính với nhiều CPU hỗ trợ xử lý song song (multiprocessing) sẽ cải thiện đáng kể hiệu quả hoạt động của hệ thống Khái niệm tiến trình (Process) và mô hình đa tiến trình (multiprocess) là cần thiết để hỗ trợ đa chương, cho phép thực hiện nhiều tác vụ đồng thời Tuy nhiên, việc điều khiển nhiều hoạt động song song ở cấp độ phần cứng gặp nhiều khó khăn Do đó, các nhà thiết kế hệ điều hành đã phát triển mô hình song song giả lập, cho phép chuyển đổi bộ xử lý giữa các chương trình, tạo cảm giác như nhiều hoạt động được thực hiện đồng thời.

Trong mô hình hệ thống, phần mềm được tổ chức thành các tiến trình, mỗi tiến trình là một chương trình đang hoạt động với con trỏ lệnh, tập thanh ghi và biến Để thực hiện nhiệm vụ, tiến trình cần sử dụng nhiều tài nguyên như CPU, bộ nhớ chính, tập tin và thiết bị nhập/xuất.

Chương trình và tiến trình là hai khái niệm khác nhau cần được phân biệt Chương trình là một thực thể thụ động, chứa các chỉ thị điều khiển máy tính để thực hiện một tác vụ Khi các chỉ thị này được thực hiện, chương trình trở thành tiến trình, là một thực thể hoạt động với con trỏ lệnh xác định chỉ thị tiếp theo và kèm theo tập tài nguyên cần thiết cho hoạt động của tiến trình.

Mỗi tiến trình có thể được coi là sở hữu một bộ xử lý ảo riêng, nhưng thực tế chỉ có một bộ xử lý vật lý duy nhất hoạt động và chuyển đổi giữa các tiến trình Quá trình chuyển đổi nhanh chóng này được gọi là đa chương (multiprogramming) Hệ điều hành quản lý việc này thông qua một thuật toán điều phối, quyết định thời điểm dừng tiến trình hiện tại để phục vụ tiến trình khác và lựa chọn tiến trình tiếp theo Bộ phận thực hiện chức năng này trong hệ điều hành được gọi là bộ điều phối.

Khái niệm tiến trình(thread) và mô hình đa tiến trình(multithread)

Trong hầu hết các hệ điều hành, mỗi tiến trình hoạt động trong một không gian địa chỉ riêng và chỉ có một dòng xử lý Tuy nhiên, người dùng thường muốn nhiều dòng xử lý chia sẻ cùng một không gian địa chỉ để hoạt động song song, tương tự như các tiến trình phân biệt nhưng với ưu điểm là chia sẻ không gian địa chỉ.

Một server quản lý tập tin cần tự khóa để chờ các thao tác truy xuất đĩa hoàn tất Khi server có nhiều dòng xử lý, hệ thống có khả năng xử lý các yêu cầu mới ngay cả khi một dòng xử lý đang bị khóa, từ đó nâng cao hiệu quả thực hiện chương trình Việc này không thể đạt được nếu tạo hai tiến trình server riêng biệt, vì cần phải chia sẻ cùng một vùng đệm, do đó bắt buộc phải chia sẻ không gian địa chỉ.

Chính vì các tình huống tương tự, người ta cần có một cơ chế xử lý mới cho phép có nhiều dòng xử lý trong cùng một tiến trình

Ngày nay đã có nhiều hệ điều hành cung cấp một cơ chế nhƣ thế và gọi là tiểu trình(threads)

Một tiểu trình là đơn vị xử lý cơ bản trong hệ thống, thực hiện tuần tự đoạn mã của nó và sở hữu con trỏ lệnh, tập các thanh ghi cùng với vùng nhớ stack riêng Các tiểu trình chia sẻ CPU giống như các tiến trình, trong đó một tiểu trình đang hoạt động trong khi các tiểu trình khác chờ đến lượt.

Các tiến trình có khả năng tạo ra các tiến trình con và nhận các trạng thái khác nhau giống như một tiến trình thực sự Mỗi tiến trình có thể sở hữu nhiều tiểu trình.

Các tiến trình là những thực thể độc lập, mỗi tiến trình có tài nguyên và môi trường riêng, bao gồm con trỏ lệnh, Stack, các thanh ghi và không gian địa chỉ Chúng hoàn toàn độc lập và chỉ có thể giao tiếp thông qua các cơ chế thông tin mà hệ điều hành cung cấp Ngược lại, các tiểu trình trong cùng một tiến trình chia sẻ không gian địa chỉ chung, cho phép chúng truy cập các biến toàn cục và thậm chí cả stack của nhau Cấu trúc này không yêu cầu cơ chế bảo vệ, vì các tiểu trình thuộc cùng một chủ sở hữu và được tạo ra với mục đích hợp tác.

Các tiểu trình trong cùng một tiểu trình

Phân bổ thông tin lưu trữ

Cấu trúc mô tả tiến trình và tiểu trình

2.2.2 Kernel thread và user thread

Tiểu trình là khái niệm quan trọng trong kernel của hệ điều hành, nơi mà đơn vị cơ bản sử dụng CPU để xử lý là tiểu trình Hệ điều hành có nhiệm vụ phân phối CPU cho các tiểu trình này.

Trong hệ thống có 35 tiểu trình, nhưng một số hệ điều hành chỉ hỗ trợ tiểu trình như một đối tượng người dùng, với các thao tác tiểu trình được thực hiện qua thư viện xử lý trong chế độ người dùng không đặc quyền Do đó, hệ điều hành chỉ nhận diện khái niệm tiến trình, dẫn đến việc cần có cơ chế để liên kết các tiểu trình thuộc cùng một tiến trình với tiến trình cha Đối tượng này thường được gọi là LWP (lightweight process).

Tóm tắt và bài tập

Tiến trình là một chương trình đang hoạt động Để sử dụng hiệu quả CPU, sự đa chương cần được đưa vào hệ thống

Sự đa chương cho phép lưu trữ nhiều tiến trình trong bộ nhớ đồng thời, đồng thời điều phối CPU để chuyển đổi giữa các tiến trình trong hệ thống.

Mô hình đa tiểu trình cho phép các tiến trình thực hiện nhiều dòng xử lý đồng thời trong cùng một không gian địa chỉ, từ đó nâng cao hiệu quả thực hiện tác vụ trong một số tình huống nhất định.

Các câu hỏi cần trả lời đƣợc sau bài học này :

1 Tại sao các hệ điều hành hiện đại hỗ trợ môi trường đa nhiệm ?

2 Phân biệt multitask, multiprogramming và multiprocessing

3 Khái niệm tiến trình đƣợc xây dựng nhằm mục đích gì ?

4 Sự khác biệt, mối quan hệ giữa tiến trình và tiểu trình ?

Bài 1 Nhiều hệ điều hành không cho phép xử lý đồng hành Thảo luận về các phức tạp phát sinh khi hệ điều hành cho phép đa nhiệm ?

Tìm một số ứng dụng thích hợp với mô hình đa tiến trình; và một số ứng dụng thích hợp với mô hình đa tiểu trình

Quản lý tiến trình

Tổ chức quản lý tiến trình

3.1.1 Các trạng thái của tiến trình

Trạng thái của tiến trình tại một thời điểm được xác định bởi hoạt động hiện tại của nó Trong suốt quá trình hoạt động, tiến trình có thể thay đổi trạng thái do nhiều nguyên nhân, chẳng hạn như chờ đợi một sự kiện xảy ra, đợi thao tác nhập/xuất hoàn tất, hoặc dừng hoạt động do hết thời gian xử lý Tại mỗi thời điểm, một tiến trình có thể ở trong một số trạng thái nhất định.

Mới tạo : tiến trình đang đƣợc tạo lập

Running : các chỉ thị của tiến trình đang đƣợc xử lý

Blocked : tiến trình chờ đƣợc cấp phát một tài nguyên, hay chờ mộtsự kiện xảy ra Ready : tiến trình chờ đƣợc cấp phát CPU để xử lý

Kết thúc : tiến trình hoàn tất xử lý

Hình 2.2 Sơ đồ chuyển trạng thái giữa các tiến trình

Chỉ có một tiến trình duy nhất có thể ở trạng thái chạy (running) trên mỗi bộ xử lý tại một thời điểm, trong khi đó, nhiều tiến trình có thể đồng thời ở trạng thái bị chặn (blocked).

38 ready.Các cung chuyển tiếp trong sơ đồ trạng thái biễu diễn sáu sự chuyển trạng thái có thể xảy ra trong các điều kiện sau :

3.1.2 Tiến trình mới tạo được đưa vào hệ thống

Bộ điều phối cấp phát cho tiến trình một khoảng thời gian sử dụng CPU Tiến trình kết thúc

Tiến trình yêu cầu một tài nguyên nhưng chưa được đáp ứng do tài nguyên chưa sẵn sàng để cấp phát, hoặc tiến trình phải chờ đợi một sự kiện hoặc thao tác nhập/xuất.

Bộ điều phối chọn một tiến trình khác để cho xử lý

Tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát ; hay sự kiện hoặc thao tác nhập/xuất tiến trình đang đợi hoàn tất.

Chế độ xử lý của tiến trình

Để đảm bảo hoạt động chính xác của hệ thống, hệ điều hành cần được bảo vệ khỏi sự xâm phạm của các tiến trình, đồng thời các tiến trình và dữ liệu cũng phải được bảo vệ để tránh ảnh hưởng sai lệch lẫn nhau Một giải pháp là phân chia hai chế độ xử lý: chế độ không đặc quyền và chế độ đặc quyền, nhờ cơ chế phần cứng Tập lệnh CPU được chia thành lệnh đặc quyền và lệnh không đặc quyền, với cơ chế phần cứng chỉ cho phép thực hiện lệnh đặc quyền trong chế độ đặc quyền Thông thường, chỉ hệ điều hành hoạt động trong chế độ đặc quyền, trong khi các tiến trình người dùng hoạt động trong chế độ không đặc quyền, không thể thực hiện lệnh đặc quyền có thể ảnh hưởng đến hệ thống Khi một tiến trình người dùng thực hiện lời gọi hệ thống, tiến trình của hệ điều hành sẽ hoạt động trong chế độ đặc quyền, và sau khi hoàn tất, quyền điều khiển sẽ được trả về cho tiến trình người dùng trong chế độ không đặc quyền.

Hình vẽ 2.3 Hai chế độ xử lýCấu trúc dữ liệu khối quản lý tiến trình

Hệ điều hành quản lý tiến trình thông qua khối quản lý tiến trình (PCB), là vùng nhớ lưu trữ thông tin mô tả cho tiến trình PCB bao gồm các thành phần chính, trong đó có định danh của tiến trình, giúp phân biệt các tiến trình khác nhau trong hệ thống.

Trạng thái tiến trình (2): xác định hoạt động hiện hành của tiến trình

Ngữ cảnh của tiến trình (3) liên quan đến việc mô tả các tài nguyên đang được sử dụng trong tiến trình, nhằm phục vụ cho hoạt động hiện tại hoặc làm cơ sở để phục hồi hoạt động của tiến trình Các thông tin này bao gồm những dữ liệu cần thiết để đảm bảo sự hoạt động hiệu quả và liên tục của tiến trình.

Trạng thái CPU bao gồm các thanh ghi, trong đó con trỏ lệnh IP giữ địa chỉ của câu lệnh tiếp theo mà tiến trình sẽ xử lý Việc lưu trữ thông tin này là cần thiết khi xảy ra ngắt, giúp phục hồi hoạt động của tiến trình đúng như trước khi bị gián đoạn.

Bộ xử lý: dùng cho máy có cấu hình nhiều CPU, xác định số hiệu CPU mà tiến trình đang sử dụng

Bộ nhớ chính: danh sách các khối nhớ đƣợc cấp cho tiến trình

Tài nguyên sử dụng là danh sách các tài nguyên hệ thống mà tiến trình hiện tại đang sử dụng, trong khi tài nguyên tạo lập là danh sách các tài nguyên mà tiến trình đã tạo ra.

Thông tin giao tiếp (4): phản ánh các thông tin về quan hệ của tiến trình với các tiến trình khác trong hệ thống :

Tiến trình cha: tiến trình tạo lập tiến trình này

Tiến trình con là các tiến trình được tạo ra bởi một tiến trình cha Độ ưu tiên của tiến trình giúp bộ điều phối có thông tin cần thiết để lựa chọn tiến trình nào sẽ được cấp CPU.

Thông tin thống kê (5) cung cấp cái nhìn tổng quan về hoạt động của tiến trình, bao gồm thời gian sử dụng CPU và thời gian chờ Những dữ liệu này có thể hữu ích cho việc phân tích hiệu suất và tối ưu hóa hoạt động của hệ thống.

40 cho công việc đánh giá tình hình hệ thống và dự đoán các tình huống tương lai.

Hình vẽ 2.4 Khối mô tả tiến trình

3.2.1 Thao tác trên tiến trình

Hệ điều hành cung cấp các thao tác chủ yếu sau đây trên một tiến trình :

 Tạo lập tiến trình (create)

 Kết thúc tiến trình (destroy) tạm dừng tiến trình (suspend) tái kích hoạt tiến trình (resume) thay đổi độ ƣu tiên tiến trình a Tạo lập tiến trình

Trong quá trình xử lý, một tiến trình có thể tạo ra nhiều tiến trình mới thông qua lời gọi hệ thống Tiến trình thực hiện lời gọi này được gọi là tiến trình cha, trong khi các tiến trình được tạo ra sẽ được gọi là tiến trình con Mỗi tiến trình con cũng có khả năng tạo ra các tiến trình mới, từ đó hình thành một cấu trúc giống như cây tiến trình.

Hình vẽ 2.5 Một cây tiến trình trong hệ thống UNIX

Các công việc hệ điều hành cần thực hiện khi tạo lập tiến trình bao gồm :

 định danh cho tiến trình mới phát sinh

 đƣa tiến trình vào danh sách quản lý của hệ thống

 xác định độ ƣu tiên cho tiến trình

 tạo PCB cho tiến trình

 cấp phát các tài nguyên ban đầu cho tiến trình

Khi một tiến trình tạo ra tiến trình con, hệ điều hành có thể trực tiếp cấp phát tài nguyên cho tiến trình con hoặc cho phép tiến trình con thừa hưởng một số tài nguyên từ tiến trình cha.

Khi một tiến trình tạo tiến trình mới, tiến trình ban đầu có thể xử lý theo một trong hai khả năng sau :

 Tiến trình cha tiếp tục xử lý đồng hành với tiến trình con

 Tiến trình cha chờ đến khi một tiến trình con nào đó, hoặc tất cả các tiến trình con kết thúc xử lý

Các hệ điều hành khác nhau có thể chọn lựa các cài đặt khác nhau để thực hiện thao tác tạo lập một tiến trình b Kết thúc tiến trình

Khi một tiến trình hoàn tất chỉ thị cuối cùng, nó sử dụng lời gọi hệ thống để yêu cầu hệ điều hành hủy bỏ chính nó Đôi khi, một tiến trình cũng có thể yêu cầu hệ điều hành kết thúc một tiến trình khác Khi một tiến trình bị hủy, hệ điều hành thực hiện các công việc như thu hồi tài nguyên hệ thống đã cấp phát và loại bỏ tiến trình khỏi tất cả các danh sách quản lý, bao gồm cả việc hủy bỏ PCB của tiến trình đó.

Hầu hết các hệ điều hành không cho phép tiến trình con tồn tại khi tiến trình cha đã kết thúc, dẫn đến việc hệ điều hành tự động thực hiện các thao tác kết thúc cho tiến trình con.

3.2.2 Cấp phát tài nguyên cho tiến trình

Khi nhiều người cùng sử dụng hệ thống, hệ điều hành phải phân phối tài nguyên theo yêu cầu của từng người Do tài nguyên hệ thống thường hạn chế và không thể chia sẻ hoàn toàn, nên không phải lúc nào cũng có thể đáp ứng tất cả yêu cầu đồng thời Do đó, cần nghiên cứu phương pháp chia sẻ tài nguyên hữu hạn giữa nhiều tiến trình người dùng Hệ điều hành quản lý nhiều loại tài nguyên như CPU, bộ nhớ chính và thiết bị ngoại vi, mỗi loại đều cần cơ chế và chiến lược cấp phát hiệu quả Tài nguyên được biểu diễn qua cấu trúc dữ liệu, mặc dù chi tiết khác nhau cho từng loại, nhưng đều chứa các thông tin cơ bản cần thiết.

Trạng thái tài nguyên cung cấp thông tin chi tiết về tình hình sử dụng tài nguyên trong hệ thống, bao gồm phần tài nguyên đã được cấp phát cho tiến trình và phần tài nguyên còn lại có thể sử dụng.

Hàng đợi trên một tài nguyên : danh sách các tiến trình đang chờ đƣợc cấp phát tài nguyên tương ứng

Bộ cấp phát là đoạn mã chịu trách nhiệm phân bổ tài nguyên cụ thể Một số tài nguyên, như CPU, bộ nhớ chính và hệ thống tập tin, yêu cầu các thuật toán đặc biệt để quản lý, trong khi các tài nguyên khác, chẳng hạn như thiết bị nhập/xuất, có thể sử dụng các thuật toán cấp phát và giải phóng tổng quát hơn.

Hình 2.6 Khối quản lý tài nguyên

3.2.4 Các mục tiêu của kỹ thuật cấp phát :

Để đảm bảo hiệu quả trong việc quản lý tài nguyên, cần duy trì một số lượng hợp lý các tiến trình truy xuất đồng thời đến các tài nguyên không thể chia sẻ Việc cấp phát tài nguyên cho các tiến trình yêu cầu cần được thực hiện trong khoảng thời gian trì hoãn chấp nhận được nhằm tối ưu hóa sự sử dụng tài nguyên Để đạt được những mục tiêu này, cần giải quyết các vấn đề phát sinh khi nhiều tiến trình đồng thời yêu cầu một tài nguyên không chia sẻ.

Điều phối tiến trình

Liên lạc giữa các tiến trình và vấn đề đồng bộ hóa

Các giải pháp đồng bộ hóa

Tắc nghẽn (Deadlock)

Quản lý bộ nhớ

Bộ nhớ ảo

Hệ thống quản lý tập tin

Các phương pháp cài đặt hệ thống quản lý tập tin

Giới thiệu một số hệ thống tập tin

Hệ thống quản lý nhập-xuất

Giới thiệu một số hệ thống I-O

Bảo vệ an toàn hệ thống

Hệ điều hành windowns NT

Hệ điều hành Linux -Giới thiệu

Ngày đăng: 20/12/2021, 07:32

HÌNH ẢNH LIÊN QUAN

Hình 1.1. Cấu trúc của MS-DOS - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 1.1. Cấu trúc của MS-DOS (Trang 23)
Hình vẽ 2.4 Khối mô tả tiến trình - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình v ẽ 2.4 Khối mô tả tiến trình (Trang 41)
Hình vẽ 2.5 Một cây tiến trình trong hệ thống UNIX - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình v ẽ 2.5 Một cây tiến trình trong hệ thống UNIX (Trang 42)
Hình 2.6 Khối quản lý tài nguyên - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 2.6 Khối quản lý tài nguyên (Trang 44)
Hình 2.9 Các danh sách điều phối - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 2.9 Các danh sách điều phối (Trang 49)
Hình 2.11 Cấp độ điều phối trung gianCác chiến lƣợc điều phối - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 2.11 Cấp độ điều phối trung gianCác chiến lƣợc điều phối (Trang 51)
Hình 3.13 Monitor và các biến điều kiện - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 3.13 Monitor và các biến điều kiện (Trang 84)
Hình 3.16 Cấu trúc tiến trình yêu cầu tài nguyên trong giải pháp message - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 3.16 Cấu trúc tiến trình yêu cầu tài nguyên trong giải pháp message (Trang 87)
Hình 3.18 Bữa ăn tối của các triết gia - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 3.18 Bữa ăn tối của các triết gia (Trang 97)
Hình 3.19 Đồ thị cấp phát tài nguyên - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 3.19 Đồ thị cấp phát tài nguyên (Trang 99)
Hình 4.17 Mô hình phân đoạn bộ nhớ - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 4.17 Mô hình phân đoạn bộ nhớ (Trang 111)
Hình 4.18 Cơ chế phần cứng hổ trợ kĩ thuật phân đoạn - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 4.18 Cơ chế phần cứng hổ trợ kĩ thuật phân đoạn (Trang 112)
Hình 4.19 Hệ thống phân đoạn - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 4.19 Hệ thống phân đoạn (Trang 113)
Hình 4.20 Sử dụng STBR, STLR và bảng phân đoạn - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 4.20 Sử dụng STBR, STLR và bảng phân đoạn (Trang 114)
Hình 4.21 Chia sẻ code trong hệ phân đoạn - Giáo trình Hệ điều hành  Trường ĐH Phan Thiết
Hình 4.21 Chia sẻ code trong hệ phân đoạn (Trang 115)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w