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