Page 208 - Hướng Dẫn Cách Phòng Thủ Và Khắc Phục Sự Cố Máy Tính
P. 208
8. TÌM HIỂU NHÂN CỦA HỆ ĐIỂU HÀNH LINUX
Nhân (kernel) của Linux gồm 5 tiểu hệ thống chính:
Bộ phân thời cho tiến trình (Process Scheduler-SCHED)
Như bạn biết về cơ bản PC vẫn là một hệ thổhg xử lý
đơn tức là chỉ có một lệnh thực thi tại một thòi điểm. Tuy
nhiên các hệ điều hành đa nhiệm (multi-task) như
Windows, Linux v.v đều cho phép nhiều chương trình chạy
cùng một lúc. Làm sao chúng làm được như vậy? Bằng
cách chuyển quyền thực thi qua lại giữa các chương trình
thật nhanh làm cho chúng ta có cảm giác các chương trình
chạy cùng lúc vói nhau. Ví dụ bạn vừa đánh Winword vừa
chơi Winamp thì thật ra SCHED sẽ chạy Winword 5,10
lệnh xong chuyển qua Winamp 5,10 lệnh rồi chuyển lại v.v
Việc này cực kì nhanh nên bạn không có cảm giác gì.
Hệ điều hành MSDOS ngày xưa thật sự là hệ điều
hành đơn nhiệm, tuy nhiên bạn vẫn có thể bảy ngắt iCh
(hook interrupt) để giả lập đa nhiệm. Interrupt iCh thực
chất được Timer IRQ (6 hay 8 gì quên mất rồi) gọi. Timer
IRQ là một ngắt cứng tức là tín hiệu do bộ phát xung gởi
tối CPU. Mặc định là 1/13 giây 1 lần bộ phát xung này gởi
một tín hiệu IRQ đến CPU. Khi đó CPU sẽ ngưng lệnh
đang thi hành chuyển qua xử lý ngắt. Timer IRQ sau đó sẽ
gọi ngắt iCh. Nếu bạn viết một chương trình con hook int
iCh, thì bạn sẽ có cảm tưởng nó chạy song song vối chương
trình chính (thật ra l/13s nó mới chạy một lần), ứng dụng
cái này tôi có viết một chương trình chạy banner trong
màn hình DOS, hay chương trình ping pong gồm một hay
nhiều trái tim chạy va đập vào các cạnh của màn hình,
trong khi vẫn chạy DOS.
Các hệ điều hành đa nhiệm sau này đều sử dụng
nguyên tắc này để làm SCHED. Tuy nhiên l/13s thì không
209