Hệ điều hành là gì?
Hệ điều hành (operating system, OS) là phần mềm quản lý phần cứng của máy tính và chạy mọi chương trình khác, chia sẻ bộ xử lý, bộ nhớ và ổ lưu trữ giữa chúng, đồng thời cung cấp tệp, mạng, đầu vào và đầu ra. Windows, macOS, Linux, Android và iOS đều là hệ điều hành.
Cập nhật 24 tháng 9, 2026
Nhấn một phím khi đang mở trình soạn thảo văn bản. Bàn phím gửi đi một tín hiệu điện, và một driver bên trong hệ điều hành đọc tín hiệu đó. Hệ điều hành xác định cửa sổ nào đang ở phía trước, chuyển phím đến chương trình đó, và trình soạn thảo vẽ ra chữ cái. Trình soạn thảo không hề nói chuyện với bàn phím. Lưu tệp, phát âm thanh hay tải trang web cũng diễn ra như vậy: chương trình đưa ra yêu cầu, còn hệ điều hành làm việc với phần cứng.
Hệ điều hành làm những gì
Hệ điều hành có một vài nhiệm vụ, và mọi chương trình trên máy tính đều dựa vào tất cả các nhiệm vụ đó:
- Chạy chương trình (quản lý tiến trình). Một laptop có 8 nhân CPU có thể chạy vài trăm chương trình và dịch vụ nền cùng lúc. Bộ lập lịch của hệ điều hành cho mỗi chương trình những lượt ngắn trên một nhân, chuyển đổi nhiều lần mỗi giây, nên trông như tất cả đều chạy cùng lúc.
- Quản lý bộ nhớ. Mỗi chương trình có không gian địa chỉ riêng. Khi một chương trình đọc vùng nhớ không thuộc về nó, hệ điều hành sẽ dừng nó lại; trong C đây chính là lỗi segmentation fault nổi tiếng.
- Lưu trữ tệp. Hệ điều hành biến ổ đĩa, vốn chỉ lưu các khối byte được đánh số, thành thư mục và tệp có tên, một ví dụ kinh điển về trừu tượng hóa. Định dạng này gọi là hệ thống tệp: NTFS trên Windows, APFS trên macOS, ext4 trên phần lớn hệ thống Linux.
- Giao tiếp với phần cứng. Driver làm cầu nối giữa hệ điều hành và từng thiết bị: card đồ họa, chip Wi-Fi, máy in, webcam.
- Mạng. Hệ điều hành cài đặt TCP/IP, nên một chương trình có thể mở kết nối đến máy chủ mà không cần biết gì về card mạng.
- Bảo mật và người dùng. Tài khoản, mật khẩu và quyền truy cập tệp quyết định ai được đọc hay thay đổi cái gì.
- Giao diện người dùng. Màn hình desktop, cửa sổ và thanh tác vụ, hoặc một shell dòng lệnh như Bash hay PowerShell.
Kernel và system call
Phần lõi của hệ điều hành là kernel (nhân). Kernel chạy với toàn quyền điều khiển phần cứng, còn các chương trình thông thường chạy ở chế độ hạn chế và không thể chạm trực tiếp vào thiết bị. Khi một chương trình cần gì đó, nó thực hiện một system call (lời gọi hệ thống): một yêu cầu gửi đến kernel như "mở tệp này", "gửi các byte này" hay "khởi động một tiến trình mới".
Phần lớn thời gian bạn không thấy system call vì ngôn ngữ lập trình đã bọc chúng lại. open() và print() của Python cuối cùng đều gọi đến kernel. Module os cho phép bạn gọi chúng gần như trực tiếp:
ID tiến trình và số nhân phụ thuộc vào máy; dòng cuối luôn in ra File size: 23 bytes. os.open trả về một file descriptor, một số nhỏ mà kernel dùng để theo dõi tệp đang mở, và os.write gửi 23 byte vào đó. Trong C, các yêu cầu này trông gần như y hệt, vì những hàm này chỉ là lớp bọc mỏng bên ngoài các system call:
int fd = open("note.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
write(fd, "saved by a system call\n", 23);
close(fd);
Trên Linux, bạn có thể xem mọi system call mà một chương trình thực hiện bằng strace python3 script.py.
Ví dụ và các loại hệ điều hành
| Hệ điều hành | Chạy ở đâu | Kernel |
|---|---|---|
| Windows 11 | Phần lớn máy tính để bàn và laptop | Windows NT |
| macOS | Máy tính Mac của Apple | XNU (Darwin) |
| Linux (Ubuntu, Fedora, Debian và các bản khác) | Phần lớn máy chủ và máy trên cloud, một số máy tính để bàn | Linux |
| Android | Phần lớn điện thoại thông minh trên thế giới | Linux |
| iOS | iPhone | XNU (Darwin) |
| ChromeOS | Chromebook | Linux |
Ngoài các hệ điều hành đa dụng này còn có hệ điều hành thời gian thực như FreeRTOS và Zephyr, chạy trên vi điều khiển trong đồ gia dụng, cảm biến và máy móc công nghiệp, đảm bảo phản hồi trong một khoảng thời gian cố định. Nhiều thiết bị nhỏ chạy các hệ thống nhúng được xây dựng cho một mục đích duy nhất.
Bảng trên cho thấy một kernel có thể vận hành những sản phẩm rất khác nhau. Android và ChromeOS đều dùng kernel Linux với phần mềm riêng ở bên trên, còn iOS dùng chung kernel với macOS.
Vì sao hệ điều hành quan trọng khi bạn lập trình
Một chương trình đã biên dịch được build cho một hệ điều hành cụ thể. Tệp .exe của Windows không chạy trực tiếp trên Linux, kể cả trên cùng một máy tính, vì định dạng tệp và các system call khác nhau. Đó là lý do các trang tải xuống có nhiều phiên bản riêng, và cũng là lý do các môi trường thực thi như JVM, Node.js và CPython tồn tại: chúng được build một lần cho mỗi hệ điều hành để code của bạn không phải làm việc đó. Xem môi trường thực thi.
Dù vậy, một vài khác biệt nhỏ vẫn lọt qua. Chạy đoạn này rồi so sánh với một người bạn dùng hệ điều hành khác:
Trên Linux và macOS, kết quả là:
Path separator: '/'
Line ending: '\n'
projects/notes/todo.txt
Trên Windows, ký tự phân cách là '\\' (một dấu gạch chéo ngược), ký tự xuống dòng là '\r\n', và đường dẫn trở thành projects\notes\todo.txt. Dùng os.path.join (hoặc pathlib) thay vì tự gõ / chính là cách giữ cho script chạy được trên cả ba hệ điều hành.
Những hiểu lầm phổ biến
- "Linux là một hệ điều hành." Nói chính xác, Linux là một kernel. Một bản phân phối Linux như Ubuntu bổ sung shell, công cụ hệ thống, trình quản lý package và thường là cả giao diện desktop để tạo thành một hệ điều hành hoàn chỉnh. Trong cách nói hằng ngày, cả hai đều được gọi là Linux.
- "BIOS là một phần của hệ điều hành." Firmware BIOS hoặc UEFI nằm trên bo mạch chủ. Nó kiểm tra phần cứng rồi nạp hệ điều hành từ ổ đĩa, và sau đó nhiệm vụ chính của nó đã xong.
- "Màn hình desktop chính là hệ điều hành." Desktop chỉ là một chương trình chạy bên trên kernel. Máy chủ thường chạy hoàn toàn không có desktop, chỉ được điều khiển qua shell dòng lệnh.
- "Ứng dụng giao tiếp trực tiếp với phần cứng." Các chương trình thông thường không được phép làm vậy. Mỗi lần đọc tệp, mỗi gói tin mạng và mỗi điểm ảnh trên màn hình đều đi qua hệ điều hành, đó là lý do một ứng dụng bị treo thường không kéo theo cả máy tính.
Đọc tiếp
Hệ điều hành là lớp dưới cùng; môi trường thực thi nằm giữa nó và code của bạn. Cơ chế bảo vệ bộ nhớ là thứ tạo ra lỗi segmentation fault, còn trang byte giải thích đơn vị mà hệ điều hành dùng cho tệp và bộ nhớ. Để điều khiển hệ điều hành từ shell dòng lệnh, hãy thử khóa học terminal.
Câu hỏi thường gặp
Máy tính có chạy được mà không cần hệ điều hành không?
Có, nhưng chỉ với các thiết bị đơn giản, chuyên một việc. Một vi điều khiển như trên bo mạch Arduino chạy trực tiếp một chương trình trên phần cứng, hoàn toàn không có hệ điều hành. Một máy tính đa dụng cần hệ điều hành để chạy nhiều chương trình, quản lý tệp và dùng driver cho phần cứng.
5 hệ điều hành phổ biến nhất là gì?
Windows, macOS và Linux trên máy tính, Android và iOS trên điện thoại và máy tính bảng. Android có số thiết bị lớn nhất thế giới, Windows dẫn đầu trên máy tính để bàn và laptop, còn Linux chạy phần lớn máy chủ và máy trên cloud.
Có những loại hệ điều hành chính nào?
Sách giáo khoa phân loại theo nhiều cách. Các nhóm thường gặp là hệ điều hành máy tính để bàn, di động, máy chủ, thời gian thực (đảm bảo phản hồi trong một khoảng thời gian cố định, như FreeRTOS), nhúng (tích hợp trong thiết bị) và hệ phân tán trải công việc ra nhiều máy tính. Các danh sách cũ hơn còn có hệ xử lý theo lô và hệ chia sẻ thời gian.
Làm sao kiểm tra mình đang dùng hệ điều hành nào?
winver. Trên Mac, mở menu Apple và chọn Giới thiệu về máy Mac này. Trên Linux, chạy cat /etc/os-release trong terminal, còn uname -r cho biết phiên bản kernel.Nói đơn giản, hệ điều hành là gì?
Đó là chương trình vận hành máy tính thay cho mọi chương trình khác. Các ứng dụng nhờ nó lưu tệp, hiện cửa sổ hay kết nối internet, và nó làm việc đó với phần cứng. Nó là phần mềm, được nạp từ ổ đĩa khi máy tính khởi động.