Chương 2: Cấu trúc HĐH

Các thành phần HĐH (7 thành phần)

◼ Quản lý tiến trình

◼ Quản lý bộ nhớ chính

◼ Quản lý file

◼ Quản lý hệ thống lưu trữ thứ cấp

◼ Hệ thống bảo vệ

◼ Hệ thống thông dịch lệnh

Để hoàn thành công việc, một tiến trình cần:

  • CPU
  • Bộ nhớ
  • File
  • Thiết bị I/O,...

Nhiệm vụ

Tạo và hủy tiến trình

Tạm dừng/ thực thi tiếp tiến trình

Cung cấp các cơ chế

  • Đồng bộ hoạt động các tiến trình
  • Giao tiếp giữa các tiến trình
  • Khống chế tắc nghẽn

Bộ nhớ chính là trung tâm của các thao tác, xử lý

Để nâng cao hiệu suất sử dụng CPU, hệ điều hành cần quản lý bộ nhớ thích hợp

Các nhiệm vụ chính:

  • Theo dõi, quản lý các vùng nhớ trống và đã cấp phát
  • Quyết định sẽ nạp chương trình nào khi có vùng nhớ trống
  • Cấp phát và thu hồi các vùng nhớ khi cần thiết

Các dịch vụ chính:

  • Tạo và xóa file/ thư mục
  • Các thao tác xử lý file/ thư mục
  • “Ánh xạ” file/ thư mục vào thiết bị thứ cấp tương ứng
  • Sao lưu và phục hồi dữ liệu

Gồm: Files và thư mục

◼ Quản lý hệ thống I/O

Che dấu sự khác biệt của các thiết bị I/O trước người dùng

Có chức năng:

  • Cơ chế: buffering, caching, spooling
  • Cung cấp giao diện chung đến các trình điều khiển thiết bị
  • Bộ điều khiển các thiết bị phần cứng

Bộ nhớ chính: kích thước nhỏ, là môi trường chứa thông tin không bền vững
=> Cần hệ thống lưu trữ thứ cấp để lưu trữ bền vững các dữ liệu, chương trình

Lưu trữ thông dụng: đĩa từ, đĩa quang

Nhiệm vụ của hệ điều hành trong quản lý đĩa

  • Quản lý không gian trống trên đĩa (free space management)
  • Cấp phát không gian lưu trữ (storage allocation)
  • Định thời họat động cho đĩa (disk scheduling)

Kiểm soát tiến trình người dùng đăng nhập/ xuất và sử dụng hệ thống

Kiểm soát việc truy cập các tài nguyên trong hệ thống

Bảo đảm những user/process chỉ được phép sử dụng các tài nguyên dành cho nó

Các nhiệm vụ của hệ thống bảo vệ:

  • Cung cấp cơ chế kiểm soát đăng nhập/ xuất
  • Phân định được sự truy cập tài nguyên hợp pháp và bất hợp pháp
  • Phương tiện thi hành các chính sách (enforcement of policies) (ví dụ: cần bảo vệ dữ liệu của ai đối với ai)

Là giao diện chủ yếu người dùng và OS

Khi user login:

  • command line interpreter (shell) chạy, chờ nhận lệnh từ người dùng, thực thi lệnh và trả kết quả về.
  • Các lệnh -> bộ điều khiển lệnh -> hệ điều hành
  • Các lệnh chủ yếu:
    ◼Tạo, hủy và quản lý tiến trình, hệ thống
    ◼Kiểm soát I/O
    ◼Quản lý bộ lưu trữ thứ cấp
    ◼Quản lý bộ nhớ chính
    ◼Truy cập hệ thống file và cơ chế bảo mật

Các dịch vụ HĐH cung cấp

Thực thi chương trình

Thực hiện các thao tác I/O theo yêu cầu của chương trình

Các thao tác trên hệ thống file

Trao đổi thông tin giữa các tiến trình (qua hai cách)

Chia sẻ bộ nhớ (Shared memory)

Chuyển thông điệp (Message passing)

Phát hiện lỗi

Chức năng khác

Cấp phát tài nguyên

Kế toán (lưu vết user để tính phí / thống kê)

Bảo vệ

An ninh

Lời gọi hệ thống

Giao diện dùng để giao tiếp giữa tiến trình và hệ điều hành

Cung cấp giao diện giữa tiến trình và hệ điều hành
Ví dụ: open, read, write file

Thông thường ở dạng thư viện nhị phân (binary libraries) hay giống như các lệnh hợp ngữ

Trong các ngôn ngữ lập trình cấp cao, một số thư viện lập trình được xây dựng dựa trên các thư viện hệ thống

Ba phương pháp truyền tham số khi sử dụng system call

Thanh ghi

Vùng nhớ

Stack

Chương trình hệ thống

  • Quản lý hệ thống file: như create, delete, rename, list
  • Thông tin trạng thái: như date, time, dung lượng bộ nhớ trống
  • Soạn thảo file: như file editor
  • Hỗ trợ ngôn ngữ lập trình: như compiler, assembler, interpreter
  • Nạp, thực thi, giúp tìm lỗi chương trình: như loader, debugger
  • Giao tiếp: như email, talk, web browser

Người dùng chủ yếu làm việc thông qua các system program

Cấu trúc HĐH

Cấu trúc Monolithic - Original UNIX

Cấu trúc Layered Approach

Cấu trúc Microkernels

Cấu trúc Modules

Cấu trúc Hybrid Systems

Gồm hai phần

Nhân (cung cấp file system, CPU scheduling, memory
management, và một số chức năng khác)

System program

Linux dựa theo cấu trúc monolithic được thiết kế theo dạng môđun

 Lớp dưới cùng: hardware

 Lớp trên cùng là giao tiếp với user

 Lớp trên chỉ phụ thuộc lớp dưới

 Một lớp chỉ có thể gọi các hàm của lớp dưới và các hàm của nó được gọi bởi lớp trên

◼ Phân chia module theo microkernel (CMU Mach OS, 1980)

◼ Chuyển một số chức năng của OS từ kernel space sang user space

◼ Thu gọn kernel => microkernel, microkernel chỉ bao gồm các chức năng tối thiểu như quản lý tiến trình, bộ nhớ và cơ chế giao tiếp giữa các tiến trình

◼ Giao tiếp giữa các user module qua cơ chế truyền thông điệp

Nhiều hệ điều hành hiện đại triển khai các loadable kernel modules (LKMs)
 Sử dụng cách tiếp cận hướng đối tượng
 Mỗi core thành phần là tách biệt nhau
 Trao đổi thông qua các interfaces
 Mỗi module như là một phần của nhân

Nhìn chung, cấu trúc Modules giống với cấu trúc Layer nhưng phức tạp hơn

Hầu hết các hệ điều hành hiện đại không theo một cấu trúc
thuần túy nào mà lai giữa các cấu trúc với nhau

Cấu trúc lai là sự kết hợp nhiều cách tiếp cận để giải quyết các nhu cầu về hiệu suất, bảo mật, nhu cầu sử dụng

Nhân Linux và Solaris theo cấu trúc kết hợp không gian địa chỉ kernel, cấu trúc monolithic và modules

Nhân Windows hầu như theo cấu trúc liền khối, cộng với cấu trúc vi nhân cho các hệ thống cá nhân khác nhau