1.2.1. Định nghĩa Hệ điều hành
1.2.1.1. Các quan điểm khác nhau về Hệ điều hành
Hệ điều hành (HĐH) có thể được định nghĩa thông qua các góc độ khác nhau tùy thuộc vào nhu cầu của từng đối tượng:
- Người sử dụng coi HĐH là một hệ thống chương trình giúp khai thác hệ thống máy tính một cách dễ dàng.
- Người quản lý nhìn nhận HĐH là chương trình giúp quản lý và tối ưu hóa tài nguyên của hệ thống máy tính.
- Quan điểm kỹ thuật mô tả HĐH như một hệ thống chương trình phát triển cho máy tính với những nguồn tài nguyên và năng lực mới.
- Quan điểm hệ thống xem HĐH là một cơ chế mô phỏng hoạt động của máy tính, người dùng và người điều khiển, nhằm tạo môi trường thuận lợi cho việc sử dụng máy tính và quản lý tài nguyên một cách tối ưu.
1.2.1.2. Hệ điều hành từ góc độ hệ thống
Theo quan điểm hệ thống, HĐH là một cấu trúc mô phỏng ba thành phần quan trọng: máy tính, người dùng và người thao tác. Để đáp ứng nhu cầu của các thành phần này, HĐH sử dụng ba loại ngôn ngữ:
- Ngôn ngữ máy: HĐH giao tiếp với máy tính thông qua ngôn ngữ máy tính, ngôn ngữ mà tất cả các ngôn ngữ khác đều phải chuyển đổi về.
- Ngôn ngữ tác vụ: Hệ điều hành cung cấp các lệnh điều khiển để thực hiện công việc, chẳng hạn như các lệnh trong DOS và Unix.
- Ngôn ngữ người dùng: HĐH tương tác với người dùng qua các ngôn ngữ lập trình và chương trình dịch.
1.2.2. Phân loại Hệ điều hành
1.2.2.1. Hệ thống xử lý theo lô đơn chương trình
- Thực hiện các chương trình một cách tuần tự theo chỉ thị trước đó.
- Tự động chuyển qua chương trình tiếp theo khi một công việc hoàn thành mà không cần sự can thiệp.
- Cần có một bộ giám sát công việc và hàng đợi để quản lý các công việc xử lý.
- Vấn đề phát sinh khi các công việc yêu cầu truy cập thiết bị vào/ra, có thể dẫn đến thời gian chờ đợi không cần thiết.
1.2.2.2. Hệ thống xử lý theo lô đa chương trình
- Cho phép thực hiện nhiều chương trình đồng thời bằng cách nạp phần mã và dữ liệu vào bộ nhớ.
- Khi một chương trình cần truy cập thiết bị, bộ xử lý sẽ được chuyển cho chương trình khác đang sẵn sàng thực hiện.
- Giúp tiết kiệm bộ nhớ và giảm thời gian trống của bộ xử lý nhưng đồng thời cần một cơ chế để quản lý khả năng chia sẻ bộ nhớ giữa các chương trình.
1.2.2.3. Hệ thống phân chia thời gian
- Chia sẻ thời gian của bộ xử lý cho các chương trình đang sẵn sàng thực hiện, với thời gian hoán đổi giữa các tiến trình ngắn.
- Các điều phối của hệ điều hành sẽ quyết định việc phân phối tài nguyên bộ xử lý.
- Được gọi là hệ điều hành đa nhiệm, ví dụ như Windows và Linux.
1.2.2.4. Hệ thống xử lý thời gian thực
- Thường sử dụng trong các ứng dụng điều khiển, yêu cầu kết quả chính xác trong khoảng thời gian nhất định (deadline).
- Đòi hỏi sự tương tác cao giữa phần cứng và phần mềm.
- Ví dụ: RTLinux, VxWorks.
1.2.2.5. Hệ thống song song
- Thiết kế cho các hệ thống với nhiều vi xử lý nhằm tốc độ xử lý cao hơn và độ tin cậy tốt hơn.
- Có hai mô hình đa xử lý: đối xứng (SMP) và không đối xứng (ASMP), mỗi mô hình có những cách phân phối công việc và tài nguyên khác nhau.
1.2.2.6. Hệ thống phân tán
- Các bộ xử lý có bộ nhớ riêng và giao tiếp với nhau qua các kênh truyền thông.
- Mục tiêu là chia sẻ tài nguyên, tăng tốc độ tính toán và đảm bảo an toàn cho hệ thống.
1.2.3. Các khái niệm trong Hệ điều hành
1.2.3.1. Tiến trình và luồng
Tiến trình (process)
Tiến trình là một chương trình đang hoạt động, bao gồm:
- Mã lệnh thực hiện (code)
- Dữ liệu (data)
- Ngăn xếp, con trỏ ngăn xếp và thanh ghi
- Các thông tin hỗ trợ việc thực thi
Luồng (thread)
Là một chuỗi lệnh thực hiện trong tiến trình, bao gồm mã, dữ liệu và các thanh ghi riêng. Một tiến trình có thể có nhiều luồng, giúp thực hiện song song và chia sẻ các biến toàn cục.
1.2.3.2. Tài nguyên hệ thống
Tài nguyên hệ thống bao gồm tất cả những gì cần thiết cho một tiến trình hoạt động, ví dụ như không gian lưu trữ và thời gian thực hiện. Tài nguyên có thể là vật lý (thiết bị) hoặc logic (biến nhớ).
1.2.3.3. Bộ xử lý lệnh Shell
Là tiến trình trung gian giữa người dùng và hệ điều hành, nhận và thực hiện lệnh của người dùng trong cả môi trường đơn nhiệm và đa nhiệm.
1.2.3.4. Lời gọi hệ thống (System calls)
Lời gọi hệ thống tạo cầu nối giữa chương trình người dùng và hệ điều hành, cho phép yêu cầu các dịch vụ từ hệ điều hành thông qua các câu lệnh hoặc giao thức đặc biệt điển hình như API trên Windows.
source: viblo