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.

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:

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:

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:

Hệ thống phân cấp các loại bộ nhớ -GeekforGeeks-

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.

  1. User Mode (Mode bit = 1): Chế độ hạn chế, dành cho ứng dụng người dùng.
  2. 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

7. Các môi trường điện toán hiện đại

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


← Quay lại trang chủ