Hệ điều hành

Hệ điều hành là một phần mềm chạy trên máy tính và các thiết bị di động, dùng để điều hành, quản lý các thiết bị phần cứng và các tài nguyên phần mềm trên máy tính, và các thiết bị di động.
Hệ điều hành đóng vai trò trung gian trong việc giao tiếp giữa người sử dụng và phần cứng máy tính, cung cấp một môi trường cho phép người sử dụng phát triển và thực hiện các ứng dụng của họ một cách dễ dàng.

Giới thiệu

Các máy tính ban đầu không có hệ điều hành (xem Lịch sử hệ điều hành). Người điều hành sẽ tải và chạy chương trình một cách thủ công. Khi chương trình được thiết kế để tải và chạy chương trình khác, nó đã thay thế công việc của con người.
Thuật ngữ "hệ điều hành" được dùng gần đây chỉ tới một phần mềm cần thiết để người dùng quản lý hệ thống và chạy các phần mềm ứng dụng khác trên hệ thống. Nó không chỉ có nghĩa là "phần lõi" tương tác trực tiếp với phần cứng mà còn cả các thư viện cần thiết để các chương trình quản lý và điều chỉnh hệ thống.
Không có sự phân biệt rõ ràng giữa phần mềm ứng dụng và hệ điều hành. Tuy nhiên, đôi khi vấn đề này cũng được tranh cãi. Thí dụ trường hợp Bộ Tư pháp Mỹ và Microsoft tranh cãi Internet Explorer có phải là một phần của Windows không.
Cấp thấp nhất của hệ điều hành là phần lõi (còn gọi là nhân), lớp phần mềm đầu tiên được tải vào hệ thống khi khởi động. Các phần mềm được tải tiếp theo phụ thuộc vào nó sẽ cung cấp các dịch vụ cốt lõi cho hệ thống. Những dịch vụ phổ biến là truy xuất đĩa, quản lý bộ nhớ, định thời, và truy xuất tới thiết bị phần cứng. Có nhiều tranh cãi về những thành phần nào tạo nên phần lõi, như hệ thống tập tin có được đưa vào phần lõi không.

Chức năng chủ yếu của hệ điều hành

Theo nguyên tắc, hệ điều hành cần thỏa mãn hai chức năng chính yếu sau:

Quản lý chia sẻ tài nguyên

Tài nguyên của hệ thống (CPU, bộ nhớ, thiết bị ngoại vi,...) vốn rất giới hạn, nhưng trong các hệ thống đa nhiệm, nhiều người sử dụng có thể đồng thời yêu cầu nhiều tài nguyên. Để thỏa mãn yêu cầu sử dụng chỉ với tài nguyên hữu hạn và nâng cao hiệu quả sử dụng tài nguyên, hệ điều hành cần phải có cơ chế và chiến lược thích hợp để quản lý việc phân phối tài nguyên.
Ngoài yêu cầu dùng chung tài nguyên để tiết kiệm chi phí, người sử dụng còn cần phải chia sẻ thông tin (tài nguyên phần mềm) lẫn nhau, khi đó hệ điều hành cần đảm bảo việc truy xuất đến các tài nguyên này là hợp lệ, không xảy ra tranh chấp, mất đồng nhất,...

Hàm hệ thống

System Call
Hàm hệ thống là một tập giao diện của hạt nhân đến ứng dụng, thông qua hàm hệ thống ứng dụng thực hiện được các công việc của mình. Hạt nhân trừu tượng các chức năng của phần cứng thành hàm hệ thống, và quản lý điều phối cho ứng dụng thông qua hàm hệ thống.

Phân loại và thuật ngữ

Khái niệm hệ điều hành được tách thành ba thành phần: giao diện người dùng (bao gồm giao diện đồ họa và/hoặc thông dịch dòng lệnh, còn gọi là "shell"), tiện ích hệ thống cấp thấp, và phần lõi—trái tim của hệ điều hành.
Phần cứng <-> Phần lõi <-> Shell <-> Ứng dụng 
  |  |
  +-----------+
 1  2  3
Trong một số hệ điều hành, phần lõi và shell nằm tách rời hoàn toàn, do đó cho phép kết hợp nhiều phần lõi và shell với nhau (như hệ điều hành UNIX), trong hệ điều hành khác thì điều này chỉ là khái niệm.