Tóm tắt chương 2: Dịch vụ của hệ điều hành
1. Giao diện người dùng (User Interface):
* Giao diện người dùng là cầu nối giữa người dùng và hệ điều hành.
* Có hai loại giao diện chính:
* Giao diện dòng lệnh (CLI): Người dùng tương tác bằng cách nhập lệnh văn bản.
* Giao diện đồ họa người dùng (GUI): Người dùng tương tác thông qua các biểu tượng,
cửa sổ và chuột.
* Giao diện màn hình cảm ứng: Tương tác bằng thao tác chạm trên màn hình.
2. Lời gọi hệ thống (System Calls):
* Lời gọi hệ thống là cách chương trình ứng dụng yêu cầu dịch vụ từ hệ điều hành.
* API (Application Programming Interface) là tập hợp các hàm và thủ tục mà hệ điều
hành cung cấp.
* Các API phổ biến bao gồm Win32 API (Windows), POSIX API (Unix, Linux) và Java
API.
* Lời gọi hệ thống hoạt động bằng cách truyền tham số cho hệ điều hành thông qua các
thanh ghi hoặc bảng trong bộ nhớ.
* Các loại lời gọi hệ thống rất đa dạng, bao gồm:
* Quản lý tiến trình: Tạo, hủy, quản lý tiến trình.
* Quản lý tập tin: Tạo, đọc, ghi, xóa tập tin.
* Quản lý thiết bị: Yêu cầu và giải phóng thiết bị.
* Duy trì thông tin: Lấy thời gian, ngày tháng, thông tin hệ thống.
* Giao tiếp: Truyền dữ liệu giữa các tiến trình hoặc hệ thống.
* Bảo vệ: Kiểm soát truy cập tài nguyên.
3. Các dịch vụ hệ thống (System Services):
* Hệ điều hành cung cấp nhiều dịch vụ hệ thống để hỗ trợ phát triển và thực thi chương
trình.
* Các dịch vụ này bao gồm:
* Quản lý tập tin: Tạo, xóa, sao chép, đổi tên tập tin và thư mục.
* Thông tin trạng thái: Cung cấp thông tin về trạng thái hệ thống, tài nguyên.
* Sửa đổi tập tin: Các trình soạn thảo văn bản và công cụ xử lý tập tin.
* Hỗ trợ ngôn ngữ lập trình: Các trình biên dịch, trình thông dịch.
* Tải và thực thi chương trình.
* Giao tiếp: Hỗ trợ giao tiếp giữa các tiến trình và hệ thống.
* Các dịch vụ nền: Các tiến trình chạy ẩn để thực hiện các tác vụ hệ thống.
* Chương trình ứng dụng: Các ứng dụng hệ thống như trình duyệt web, trình phát nhạc.
* Cấp phát tài nguyên: Phân phối tài nguyên hệ thống cho các tiến trình.
* Ghi nhật ký: Ghi lại các sự kiện và lỗi hệ thống.
* Bảo vệ và an ninh: Kiểm soát truy cập và bảo vệ hệ thống khỏi các mối đe dọa.
4. Liên kết và tải (Linkers and Loaders):
* Trình liên kết (linker) kết hợp các mô-đun đối tượng thành một file thực thi.
* Trình tải (loader) tải file thực thi vào bộ nhớ để thực thi.
5. Tại sao ứng dụng phụ thuộc vào hệ điều hành:
* Các ứng dụng phụ thuộc vào hệ điều hành vì sự khác biệt về lời gọi hệ thống, định
dạng file và các yếu tố khác.
* ABI (Application Binary Interface) định nghĩa giao diện nhị phân giữa ứng dụng và hệ
điều hành.
6. Thiết kế và triển khai hệ điều hành:
* Các mục tiêu thiết kế hệ điều hành bao gồm mục tiêu người dùng (dễ sử dụng, nhanh
chóng) và mục tiêu hệ thống (hiệu quả, bảo mật).
* Chính sách (policy) và cơ chế (mechanism) là hai khía cạnh quan trọng trong thiết kế
hệ điều hành.
* Hệ điều hành có thể được triển khai bằng nhiều ngôn ngữ lập trình, chẳng hạn như C,
C++ và assembly.
7. Cấu trúc hệ điều hành:
* Có nhiều cấu trúc hệ điều hành khác nhau, bao gồm:
* Cấu trúc đơn giản (Monolithic): Tất cả các thành phần nằm trong một nhân.
* Cấu trúc phân lớp (Layered): Các thành phần được tổ chức thành các lớp.
* Microkernel: Chỉ chứa các chức năng cơ bản, các chức năng khác được triển khai
dưới dạng tiến trình người dùng.
* Module: Nhân có khả năng thêm bớt các chức năng khi cần thiết.
* Hybrid: Kết hợp các ưu điểm của các cấu trúc khác.
* Các ví dụ về hệ điều hành: MS-DOS, UNIX, Linux, Mach, Mac OS X, iOS, Android.
8. Gỡ lỗi hệ điều hành (Operating-System Debugging):
* Gỡ lỗi hệ điều hành là quá trình tìm và sửa lỗi trong hệ điều hành.
* Các công cụ và kỹ thuật gỡ lỗi bao gồm theo dõi hiệu năng, gdb, perf, tcpdump, BCC,
DTrace.
9. Dịch các lệnh Command Line:
* CLI cho phép người dùng nhập lệnh trực tiếp.
* Shell là một trình thông dịch dòng lệnh, dịch các lệnh người dùng nhập thành các lời
gọi hệ thống.