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ó.
Đ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)
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.
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?
Ba việc hệ điều hành làm
- 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
Tiến trình, luồng và ảo giác song song
Tiến trình
Luồng
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
- 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.
- 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.
- 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ớ.
- 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.
- 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.
Dừng & Kiểm tra
Điểm giữa bàiBộ nhớ ảo (virtual memory) giải quyết vấn đề gì?
Vì sao điều này quan trọng với bạn ngay bây giờ
$ uname -a # nhân hệ điều hành và kiến trúc máy
Linux may-hoc 6.8.0 x86_64 GNU/Linux
$ uptime # đã chạy bao lâu, tải trung bình 1/5/15 phút
09:12:03 up 3 days, 2:41, 1 user, load average: 0.42, 0.31, 0.28
$ free -h # bộ nhớ: phần "available" mới là phần còn dùng được
total used free shared buff/cache available
Mem: 15Gi 5.1Gi 1.2Gi 312Mi 9.2Gi 9.8GiBài tậpKhông bắt buộc
Tự làm bộ lập lịch chia lát thời gian
Phần này dành cho ai muốn thử tự viết code. Bỏ qua cũng không sao - bài vẫn được tính là xong khi bạn đọc hết và làm quiz.
Thử làm bộ lập lịch của hệ điều hành
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.
Ví dụ thực tế · Máy của bạn