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
   203   204   205   206   207   208   209   210   211   212   213