Quay lại
THCN://LESSON/HE-DIEU-HANH-LAM-GI

Chặng 1, Bài 2: Hệ điều hành làm gì khi bạn không nhìn

113%
~7 phút đọc
0/4
Chặng 1 · Bài 2
he-dieu-hanh-lam-gi.mdquiz.tsnotes.md
Chặng 1 · Bài 2+10 XP
Dễ

Chặng 1, Bài 2: Hệ điều hành làm gì khi bạn không nhìn

Trước khi viết dòng mã đầu tiên, bạn cần biết ai đang thật sự chạy nó.

7 phút đọc

4 câu quiz

Chưa bắt đầu

Điều kiện hoàn thành & nhận XP

  • Đọc hết 100% nội dung bài
  • Hoàn thành "Kiểm tra nhanh" (0/4 câu)
Tài Tài· mẹo tự động cho bài này
Tự động

Video bài giảng trực quanMinh họa trực quan

Bài học này hỗ trợ xem video minh họa trực quan trên YouTube.

Xem video bài giảng trên YouTube

Vì sao bài này quan trọng

Gần như mọi lỗi khó chịu của người mới học lập trình - "máy tôi chạy được mà máy bạn thì không", "cài xong rồi mà gõ lệnh vẫn báo không tìm thấy", "file đâu mất rồi" - đều là câu hỏi về hệ điều hành chứ không phải về ngôn ngữ. Hiểu hệ điều hành làm gì giúp bạn đọc được thông báo lỗi thay vì dán nó lên Google và hy vọng.

Chế độ Feynman (Giải thích siêu đơn giản)

Tài Tài giải thích bài học này theo cách dễ nhớ nhất cho học sinh lớp 5!

Bắt đầu bằng một câu hỏi

Bạn mở cùng lúc trình duyệt, trình soạn thảo và một chương trình đang tính toán nặng. Máy chỉ có 8 lõi CPU nhưng có tới 300 tiến trình đang chạy. Điều gì đang xảy ra?

Có một câu hỏi mà gần như không ai đặt ra trước khi học lập trình: khi bạn bấm chạy một chương trình, ai là người thật sự chạy nó? Câu trả lời không phải là "máy tính" - quá chung chung để hữu ích. Câu trả lời là hệ điều hành, và cụ thể hơn là một phần lõi của nó tên là nhân (kernel).

Ba việc hệ điều hành làm

Bỏ qua giao diện đồ hoạ, cửa sổ và biểu tượng - đó là lớp trang trí. Phần cốt lõi của một hệ điều hành làm đúng ba việc, và cả ba đều là chia một tài nguyên khan hiếm cho nhiều bên cùng đòi.
  • Chia thời gian bộ xử lý: quyết định tiến trình nào được chạy trong vài mili giây tới.
  • Chia bộ nhớ: cấp vùng nhớ cho từng tiến trình và ngăn tiến trình này đọc vùng của tiến trình kia.
  • Đứng giữa mọi yêu cầu tới phần cứng: đọc tệp, gửi gói tin, vẽ lên màn hình đều phải đi qua nhân.

Vì sao phải đi qua nhân

Nếu chương trình được phép ra lệnh thẳng cho ổ đĩa, thì một chương trình lỗi - hoặc một chương trình độc hại - có thể xoá sạch dữ liệu của bạn mà không ai ngăn được. Bắt mọi yêu cầu đi qua một cửa duy nhất là cách hệ điều hành giữ quyền kiểm soát.

Tiến trình, luồng và ảo giác song song

Máy của bạn có thể có 8 lõi và đang chạy 300 tiến trình. Không có phép màu nào ở đây: bộ lập lịch cắt thời gian thành lát cỡ vài mili giây, trao lát ấy cho một tiến trình, rồi cắt ngang và chuyển sang tiến trình khác. Việc chuyển đó xảy ra hàng nghìn lần mỗi giây, nhanh hơn nhiều so với ngưỡng con người nhận ra, nên bạn thấy mọi thứ chạy cùng lúc.

Tiến trình

Có vùng nhớ riêng. Hai tiến trình muốn trao đổi dữ liệu phải nhờ hệ điều hành làm trung gian, nên chậm hơn nhưng an toàn: một tiến trình sập không kéo tiến trình kia theo.

Luồng

Nằm bên trong một tiến trình và dùng chung vùng nhớ với các luồng anh em. Trao đổi dữ liệu gần như tức thì, đổi lại hai luồng cùng ghi vào một chỗ là lỗi rất khó tìm.

Từ vựng bạn sẽ gặp lại suốt khoá học

Đây là những từ xuất hiện trong hầu hết thông báo lỗi bạn sẽ đọc

01
NhânKernel
Phần lõi của hệ điều hành, chạy ở chế độ đặc quyền và là bên duy nhất được nói chuyện trực tiếp với phần cứng.
02
Tiến trìnhProcess
Một chương trình đang chạy, kèm vùng nhớ được cấp riêng và một mã số định danh gọi là PID.
03
LuồngThread
Một mạch thực thi bên trong tiến trình. Nhiều luồng của cùng tiến trình dùng chung vùng nhớ.
04
Bộ lập lịchScheduler
Bộ phận quyết định tiến trình nào được dùng CPU trong lát thời gian kế tiếp.
05
Bộ nhớ ảoVirtual memory
Bản đồ riêng của mỗi tiến trình, ánh xạ địa chỉ nó nhìn thấy sang địa chỉ RAM thật.

Vì sao điều này quan trọng với bạn ngay bây giờ

Bạn chưa viết dòng mã nào, nhưng ba khái niệm trên đã đủ để đọc hiểu phần lớn Incident của người mới. Chương trình "đứng im" thường là đang chờ ổ đĩa hoặc mạng chứ không phải đang tính toán. Máy chậm khi mở nhiều tab thường là hết RAM chứ không phải yếu CPU. Và "máy tôi chạy được" gần như luôn là câu chuyện về môi trường - phiên bản công cụ, Environment Variable, thư viện hệ thống - chứ không phải về Source Code.

Hệ điều hành không phải thứ bạn sẽ viết. Nó là thứ bạn sẽ liên tục nhờ vả, và mọi thông báo lỗi khó hiểu đều là nó đang trả lời bạn.

Bài tiếp theo đi vào phần bạn chạm vào nhiều nhất: cách hệ điều hành sắp xếp tệp, và vì sao đường dẫn lại là thứ làm hỏng nhiều buổi học đầu tiên đến vậy.

Dừng & Kiểm tra

Điểm giữa bài

Bộ nhớ ảo (virtual memory) giải quyết vấn đề gì?

Sơ đồ trực quan
01Chương trình của bạn xin tài nguyên
02Hệ điều hành nhận và xếp hàng yêu cầu
03Nhân (kernel) nói chuyện với CPU, RAM, ổ đĩa
04Kết quả trả ngược về chương trình

Ví dụ thực tế · Máy của bạn

Mở Task Manager trên Windows hoặc Activity Monitor trên macOS ngay lúc này. Cột phần trăm CPU không bao giờ cộng lại thành 100% chia đều cho từng chương trình - nó nhảy liên tục, vì mỗi lần bạn nhìn là một ảnh chụp của việc chia lát thời gian đang diễn ra hàng nghìn lần mỗi giây.

Luyện tập ngay

Bạn mở Activity Monitor và thấy một tiến trình chiếm 180% CPU trên máy 8 lõi. Con số vượt quá 100% nghĩa là gì?

Đổ não 60 giây

Viết ra trước khi xem đáp án - nhớ lại khó hơn nhận ra, và đó là lý do nó hiệu quả

Không cuộn lên xem lại. Trong 60 giây, viết ra mọi thứ bạn còn nhớ từ bài này - gạch đầu dòng, sai chính tả, thiếu ý đều không sao.

Góp ý bài học

Bài học này thế nào? Đánh giá giúp chúng mình cải thiện nội dung nhé!

Cuộn xuống để làm quiz →

Câu 1 / 4

Nhân (kernel) của hệ điều hành khác phần còn lại của hệ điều hành ở điểm nào?

Các câu hỏi