Hệ điều hành (Part 1): Introduction to Operating System
Ngày đăng: 2026-03-19
Lời nói đầu
Hệ điều hành (Operating System) là môn học nền tảng của các sinh viên thuộc khối ngành Computer Science, nó bao gồm tập hợp các khái niệm rất cơ bản và nền tảng về cách mà Operating System (từ giờ mình sẽ gọi tắt là OS) điều phối phần cứng hữu hạn đáp ứng nhu cầu của rất nhiều phần mềm khác nhau để phục vụ người dùng.
Đây sẽ là bài viết đầu tiên trong chuỗi bài viết về OS. Với mục tiêu là giải thích khái niệm hệ điều hành và các vấn đề rất cơ bản về các thành phần của máy tính có liên quan đến OS. Qua bài viết này mình mong đọc giả sẽ có cái nhìn tổng quan về Hệ điều hành.
Lưu ý: Mình hiện tại thì cũng chỉ là một sinh viên đang học môn hệ điều hành và mình muốn chia sẻ nó lên đây chủ yếu để ôn tập và giới thiệu cho mọi người về môn học nền tảng này. Nếu bạn thấy có điều gì chưa đúng hay muốn góp ý thì xin hãy vui lòng liên hệ email của mình ở bên dưới.
1. Hệ điều hành là gì?
Về bản chất, hệ điều hành (Operating System - OS) là một chương trình đóng vai trò trung gian giữa người dùng và phần cứng máy tính.
Hãy tưởng tượng OS giống như một "người phục vụ từ A đến Z" trong một ngôi nhà (máy tính). OS sẽ là người thức dậy (khởi động) sớm nhất, chuẩn bị mọi thứ cho bạn (User) có thể sinh hoạt và làm việc mà không cần bận tâm về việc dọn dẹp nhà cửa, cắt tỉa cây cối, mở cửa phòng, nấu ăn,... Bạn chỉ cần có nhu cầu thì OS sẽ tận dụng mọi công cụ, tài nguyên trong ngôi nhà để phục vụ bạn. Khi bạn cần làm việc (mở ứng dụng), hãy gọi OS và bảo: "Tôi cần làm việc" thì ngay lập tức OS sẽ chuẩn bị một bàn làm việc sạch sẽ với đầy đủ các công cụ cần thiết cho bạn vào làm và OS cũng sẽ giải quyết mọi vấn đề khi bạn đang làm việc.
- Mục tiêu chính: Giúp người dùng thực thi các chương trình dễ dàng hơn, làm cho việc sử dụng máy tính trở nên thuận tiện và quản lý phần cứng một cách hiệu quả nhất.
- Góc độ hệ thống: OS là một Resource Allocator (bộ điều phối tài nguyên) – nó quản lý mọi tài nguyên (CPU, bộ nhớ, I/O) và giải quyết các xung đột khi có quá nhiều chương trình cùng muốn sử dụng một thứ.
- Góc độ điều khiển: OS là một Control Program giúp ngăn chặn các lỗi và việc sử dụng máy tính không đúng cách.
Sự thật thú vị: Không có một định nghĩa duy nhất hoàn hảo cho OS, nhưng có một thành phần luôn luôn chạy trên máy tính từ lúc bật đến lúc tắt, đó chính là Kernel (Nhân).
2. Cấu trúc và Hoạt động của Hệ thống
Một hệ thống máy tính không chỉ có phần cứng và phần mềm, nó được chia thành 4 thành phần chính:
- Phần cứng (CPU, bộ nhớ, thiết bị I/O): cung cấp các tài nguyên để phục vụ tính toán.
- Hệ điều hành: điều khiển và phân phát tài nguyên hệ thống tức là phần cứng cho các ứng dụng và người dùng khắp hệ thống.
- Chương trình ứng dụng: là các đoạn code quy định cách sử dụng phần cứng để tính toán, giải quyết và đáp ứng theo nhu cầu của người dùng.
- Người dùng: ở đây không chỉ là con người mà bao gồm cả các thiết bị ngoại vi như bàn phím, chuột,... Các loại máy móc cần sự điều khiển của máy tính như máy in, robot,.. Thậm chí một chiếc máy tính khác cũng được xem là User. Thứ gì sử dụng máy tính cũng được coi là User.
Làm sao để máy tính khởi động?
Khi bạn nhấn nút nguồn, một chương trình nhỏ gọi là Bootstrap program (nằm trong ROM hoặc Firmware) sẽ được nạp đầu tiên. Nhiệm vụ của nó là kiểm tra phần cứng, khởi tạo hệ thống và quan trọng nhất là khởi chạy Kernel để bắt đầu điều hành.
Cơ chế "Ngắt" (Interrupts) - Trái tim của sự tương tác
OS là một hệ thống Interrupt-driven (điều khiển bởi ngắt). - Khi phần cứng hoàn thành một việc (như đọc xong file), nó sẽ gửi một "ngắt" đến CPU. - Nếu phần mềm gây ra lỗi (như chia cho số 0) hoặc yêu cầu dịch vụ từ OS, nó tạo ra một loại ngắt đặc biệt gọi là Trap hoặc Exception.
3. Hệ thống lưu trữ
Dữ liệu (bao gồm các tập tin, chương trình, hệ điều hành,...) cần phải được đưa vào RAM, nơi có tốc độ truy xuất lớn và có thể được CPU truy cập trực tiếp vào và xử lý. Dĩ nhiên là mọi người sẽ muốn lưu mọi loại dữ liệu vào trong RAM vì lí do trên nhưng có 2 vấn đề cần giải quyết:
- Thứ nhất, RAM thường có dung lượng hạn chế, thường là 16gb/32gb so với hàng trăm cho đến hàng ngàn gb dữ liệu cần được lưu trữ và giá thành cao.
- Thứ hai, RAM có tính chất "bay hơi" (volatile): Dữ liệu chỉ được lưu tạm thời khi có điện (bật máy tính) và sẽ mất đi nếu không được cấp điện (khi tắt máy tính).
Bạn sẽ không muốn mỗi khi bật máy tính là ta sẽ phải tải lại các tập tin và chương trình để làm việc để rồi phải xóa chúng đi khi mở chương trình khác do RAM không đủ dung lượng để chứa nhiều tập tin và chương trình cùng một lúc.
Vì thế nên ngoài loại bộ nhớ Volatile tốc độ cao, có thể được truy xuất trực tiếp bởi CPU nhưng dung lượng thấp, giá thành cao và mất dữ liệu mỗi khi tắt thì ta còn có loại bộ nhớ non-volatile với các đặc tính hoàn toàn trái ngược: dung lượng cao, giá rẻ, dữ liệu không bị "bốc hơi" nhưng tốc độ chậm => không thể được truy xuất trực tiếp bỏi CPU. Ví dụ như HDD, SSD,... Và các secondary memory (tên gọi khác của non-volatile memory) sẽ được dùng như một thành phần mở rộng của main memory dùng để lưu các files, chương trình,...
Khi bật máy tính lên thì OS sẽ được Bootstrap program thứ được lưu trong non-volatile memory như ROM, load vào RAM và bắt đầu các hoạt động của mình. Khi người dùng gọi một chương trình lưu trong HDD thì OS sẽ load nó vào RAM để từ đó nó có thể truy xuất trực tiếp đến CPU và thực hiện công việc của mình. Khi đã được load vào RAM rồi thì các program sẽ được gọi là một process (tiến trình).
Quá trình này có thể được xem như là một ví dụ của cơ chế Caching, sao chép dữ liệu từ nơi chậm (HDD) lên nơi nhanh hơn (RAM) để CPU xử lý nhanh hơn. Đây một cơ chế rất quan trọng để máy tính hiện đại có thể làm việc. Mình sẽ giới thiệu về nó trong các bài viết sau cùng với cả process nữa.
Ngoài các loại bộ nhớ trên thì ta còn rất nhiều loại bộ nhớ khác nằm trong 2 nhóm volatile và non-volatile với các mục đích khác nhau có tốc độ, dung lượng, chi phí được sắp xếp từ trên xuống ở trong bảng sau:
4. Các loại Hệ điều hành (Types of Operating Systems)
Tuy chỉ có tài nguyên hữu hạn nhưng trong thực tế thì hiếm khi một chương trình có thể khiến cho CPU hay các thiết bị nhập xuất (I/O devices) hoặt động liên tục được. Khi một chương trình được cấp CPU và thực hiện tính toán thì các I/O devices sẽ nghỉ và ngược lại thì khi nhập xuất thì CPU sẽ nghỉ, các khoảng nghỉ này sẽ tạo ra một sự lãng phí và không hiệu quả khi ta có một loạt các chương trình chạy liên tiếp nhau. Chúng ta có thể tối ưu điều này bằng cách cho một chương trình ở trước tận dụng các CPU hoặc I/O devices đang nghỉ này để tối ưu thời gian và hệ điều hành cũng được thiết kế như thế. Hệ điều hành như vậy được gọi là hệ điều hành đa chương (Multiprogramming).
Trong hệ điều hành đa chương thì ta sẽ nạp nhiều chương trình vào RAM cùng một lúc và sắp xếp các công việc của chúng (code và data) sao cho CPU và I/O devices không có thời gian nghỉ. Khi máy tính đang xử lý một chuỗi các chương trình với nhiều công việc khác nhau thì nhiều người sẽ muốn mở thêm một chương trình khác để làm việc nhưng lúc này thì nó sẽ được đưa vào hàng chờ chứ người dùng không thể tương tác gì với nó. Điều này dẫn đến sự ra đời của một cấu trúc hệ điều hành mới phổ biến hơn là hệ điều hành đa nhiệm (Multitasking hoặc Time-sharing).
Multitasking OS là sự mở rộng của Multiprogramming OS khi nó vẫn giữ được cơ chế tối ưu và sắp xếp công việc nhưng nó sẽ cho phép người dùng mở chương trình mới và tương tác với máy tính trong lúc nó đang xử lý một chuỗi chương trình có sẵn. Hệ điều hành làm được điều này nhờ vào khả năng chuyển đổi qua lại giữa các công việc cực kì nhanh và liên tục của CPU.
Hệ điều hành đa nhiệm chính là mô hình (hoặc cơ chế) hệ điều hành tiêu chuẩn được áp dụng trên hầu hết các hệ điều hành hiện đại dùng trong máy tính cá nhân ngày nay như Windows, Linux, macOS, Android, iOS,...
5. Chế độ hoạt động kép (Dual-Mode Operation)
Hệ điều hành thì cũng là một ứng dụng được nạp vào RAM và chạy. Khi người dùng mở một ứng dụng của họ mà nó bị lỗi thì cũng có thể kéo theo lỗi hệ điều hành nếu nó gọi đến các chức năng của nó. Để bảo vệ hệ điều hành thì phần cứng sẽ phân biệt giữa chế độ người dùng User Mode và chế độ nhân Kernel Mode và cho chúng hoạt động song song với nhau.
Các lệnh đặc quyền có nguy cơ ảnh hưởng đến hệ thống chỉ được phép thực thi trong Kernel mode. Các chương trình người dùng muốn thực thi chúng thì phải thực hiện một lời gọi hệ thống (System call) để chuyển từ User mode sang Kernel mode. Bên cạnh đó thì đa phần các hệ thống máy tính đều có một bộ định thời (timer) tích hợp trong phần cứng máy tính dúng để ngắt hệ thống theo chu kỳ, ngăn chặn việc một chương trình chiếm dụng CPU vô thời hạn.
- User Mode (Mode bit = 1): Chế độ hạn chế, dành cho ứng dụng người dùng.
- Kernel Mode (Mode bit = 0): Chế độ "toàn năng", dành cho OS.
6. Các chức năng quản lý cốt lõi
-
Quản lý tiến trình (Process Management): Một chương trình nằm trên đĩa chỉ là thực thể thụ động, nhưng khi được nạp vào bộ nhớ và thực thi, nó trở thành một tiến trình (process - thực thể động). OS có nhiệm vụ tạo, xóa, tạm dừng, tiếp tục, đồng bộ hóa và xử lý giao tiếp giữa các tiến trình.
-
Quản lý bộ nhớ (Memory Management): OS theo dõi dung lượng nhớ đang được sử dụng, quyết định tiến trình nào được cấp phát bộ nhớ, và thu hồi bộ nhớ khi cần. Hệ thống cũng áp dụng bộ nhớ ảo (Virtual memory) cho phép chạy các tiến trình có kích thước lớn hơn bộ nhớ vật lý.
-
Quản lý lưu trữ và tệp (Storage & File-System Management): OS trừu tượng hóa các thiết bị vật lý thành các tệp (files) và thư mục (directories). Nó thao tác tạo, xóa, điều khiển truy cập, và lập lịch sử dụng không gian ổ đĩa.
-
Hệ thống I/O: Cung cấp giao diện chuẩn để che giấu sự khác biệt của các phần cứng cụ thể, bao gồm bộ nhớ đệm (buffering, spooling) và các trình điều khiển thiết bị (device drivers).
7. Các môi trường điện toán hiện đại
- Mobile Computing: Với các tính năng như GPS, Gyroscope và thực tế ảo tăng cường (AR).
- Hệ thống phân tán (Distributed systems): Mô hình Client-Server và Peer-to-Peer
- Ảo hóa (Virtualization): Cho phép một máy vật lý chạy nhiều OS khác nhau cùng lúc thông qua VMM (Virtual Machine Manager).
- Cloud Computing: Cung cấp tài nguyên qua Internet với các mô hình như SaaS, PaaS, IaaS.
- Real-time Embedded Systems: Hệ thống nhúng với các ràng buộc thời gian cực kỳ khắt khe (ví dụ: hệ thống điều khiển phanh ô tô).
Lời kết
Hy vọng bài viết này giúp bạn có cái nhìn tổng quan đầu tiên về OS. Ở phần sau, chúng ta sẽ đi sâu vào cấu trúc bên trong của một Hệ điều hành nhé!
Tài liệu tham khảo
- Abraham Silberschartz, Peter Baer Galvin, Greg Gagne, Operating System Concepts, 9th Edition.
- GeekforGeeks, Storage Structure in Operating Systems
← Quay lại trang chủ