Hệ điều hành là gì? Vai trò của nó với người lập trình

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

Bạn mở trình duyệt, nghe nhạc, chạy trình soạn thảo code cùng lúc mà máy vẫn mượt. Đó là nhờ hệ điều hành, người điều phối âm thầm đứng giữa phần cứng và ứng dụng. Với lập trình viên, hiểu vai trò của nó là kiến thức nền rất đáng giá.

Hệ điều hành làm gì?

Hệ điều hành (operating system, OS) là phần mềm quản lý tài nguyên phần cứng và cung cấp dịch vụ cho các chương trình khác. Nếu không có nó, mỗi ứng dụng phải tự biết cách điều khiển ổ đĩa, bàn phím, card mạng của hàng nghìn loại máy khác nhau. Các nhiệm vụ chính:

  • Quản lý tiến trình: quyết định chương trình nào được dùng CPU và trong bao lâu.
  • Quản lý bộ nhớ: cấp phát RAM, ngăn chương trình này đọc trộm dữ liệu của chương trình khác.
  • Quản lý file: tổ chức dữ liệu thành tệp và thư mục.
  • Quản lý thiết bị: giao tiếp với chuột, máy in, USB qua driver.
  • Bảo mật và người dùng: phân quyền ai được làm gì.
  • Giao diện: đồ họa hoặc dòng lệnh để người dùng tương tác.

Kernel: trái tim của hệ điều hành

Kernel (nhân) là phần cốt lõi luôn chạy trong bộ nhớ, có đặc quyền cao nhất để truy cập phần cứng. Ứng dụng thông thường chạy ở "chế độ người dùng" và chỉ làm việc với phần cứng thông qua system call (lời gọi hệ thống). Ví dụ khi bạn gọi open("a.txt"), thực chất thư viện sẽ nhờ kernel mở file hộ.

Tiến trình và luồng

Một tiến trình (process) là chương trình đang chạy, có vùng nhớ riêng. Trong tiến trình có thể có nhiều luồng (thread) chia sẻ cùng vùng nhớ và chạy xen kẽ hoặc song song. Hệ điều hành dùng cơ chế chia sẻ thời gian: mỗi tiến trình được dùng CPU một lát rất ngắn rồi nhường cho tiến trình khác, nhanh đến mức ta thấy mọi thứ chạy đồng thời.

import os
print("PID của tiến trình này:", os.getpid())
print("Thư mục hiện tại:", os.getcwd())
print("Hệ điều hành:", os.name)

Các hệ điều hành phổ biến

Hệ điều hànhĐặc điểm thường gặp
WindowsPhổ biến trên máy tính để bàn, nhiều phần mềm và game
macOSDùng trên máy Mac, cần thiết để lập trình ứng dụng iOS
LinuxMã nguồn mở, rất phổ biến trên máy chủ
Android, iOSHệ điều hành di động

Android dựa trên nhân Linux, còn macOS có nguồn gốc từ họ Unix. Nhờ vậy nhiều lệnh dòng lệnh như ls, cd, grep dùng giống nhau trên Linux và macOS.

Vì sao lập trình viên cần biết?

  1. Triển khai: phần lớn máy chủ chạy Linux, bạn sẽ phải làm việc với dòng lệnh.
  2. Gỡ lỗi: hiểu lỗi quyền truy cập, đường dẫn file, biến môi trường.
  3. Hiệu năng: biết khi nào chương trình bị chậm do CPU, RAM hay đọc ghi đĩa.
  4. Tính tương thích: đường dẫn Windows dùng dấu gạch chéo ngược, Linux dùng gạch chéo xuôi; ký tự xuống dòng cũng khác nhau.

Vài lệnh dòng lệnh nên biết

  • pwd: xem thư mục hiện tại.
  • ls (Windows: dir): liệt kê file.
  • cd thu_muc: chuyển thư mục.
  • mkdir, rm, cp, mv: tạo, xóa, sao chép, di chuyển.
  • cat tep: xem nội dung file.

Thực hành: làm quen quản lý tiến trình

Thay vì chỉ đọc lý thuyết, hãy quan sát tiến trình thật trên máy:

  1. Mở Task Manager (Windows) hoặc Activity Monitor (macOS), hoặc gõ top trên Linux, và xem tiến trình nào đang dùng nhiều CPU và RAM nhất.
  2. Viết một vòng lặp vô tận ngắn rồi chạy nó: while True: pass. Bạn sẽ thấy một nhân CPU bị dùng gần hết. Dừng bằng Ctrl+C.
  3. Chạy chương trình tạo danh sách thật lớn và quan sát RAM tăng lên.
import subprocess
import sys

kq = subprocess.run([sys.executable, "-c", "print('xin chào từ tiến trình con')"],
                    capture_output=True, text=True)
print(kq.stdout.strip())
print("Mã thoát:", kq.returncode)

Đoạn code khởi động một tiến trình con và đọc kết quả của nó. Mã thoát 0 theo quy ước nghĩa là thành công, khác 0 là có lỗi. Quy ước này là nền tảng để các script, hệ thống triển khai biết lệnh chạy có thành công hay không.

Kết luận

Hệ điều hành là lớp trung gian giúp ứng dụng chạy an toàn trên phần cứng đa dạng. Bạn không cần là chuyên gia, nhưng nên quen dòng lệnh và hiểu khái niệm tiến trình, file, quyền truy cập. Một mẹo hay là cài thử Linux trong máy ảo hoặc WSL để làm quen mà không ảnh hưởng máy chính.

Bạn có thể tiếp tục hành trình với những khóa học lập trình trên codebem.com, học theo tốc độ của riêng mình.

author_photo
Nguyễn Đình Cường

0 comment