Hệ điều hành: Chuyện đời trong môn học

Có nhiều bạn sinh viên than phiền hoặc sợ hãi môn Hệ Điều Hành - Operating System (gọi tắt là OS) là môn hóc búa, khó nhau, ... rối rắm. Điều này cũng có lý của nó, nhưng nếu tinh ý thì bạn sẽ thấy nó rất giống với cuộc đời thực khi chúng ta đang phải hành động và xử lý công việc y như hệ điều hành.

I. Giới thiệu:
Có thể nói môn OS là một môn căn bản, nền tảng cho dân học CNTT, tôi viết bài giới thiệu này để giúp các bạn có cái nhìn thông thoáng hơn và qua đó hiểu sâu hơn, biết cách học tốt môn này hơn và quan trọng nhất là sẽ cảm thấy yêu thích môn học này để làm nền tảng kiến thức vững chắc dấn thân sâu hơn vào các môn khác của ngành CNTT.

"Điều tuyện vời của môn Hệ điều hành đó là có sự tương đồng giữa lý thuyết hệ điều hành với những vấn đề trong thực tế. Nó giúp bạn hiểu những vấn đề trong đời sống thực tốt hơn. Tuy nhiên, máy tính thì ngu ngốc hơn con người rất nhiều." (Giáo sư Anthony D. Joseph, Đại Học Berkeley) [1]  (Great thing about OS’s – analogy between problems in OS and problems in real life.  It helps you understand real life problems better. But, computers are much stupider than people.) 

II. Hệ điều hành: 
Thực chất OS giống như một hình thức tổ chức chính quyền của một xã hội, nhà nước. OS giống như một cơ quan công quyền của một thành phố, hay một quốc gia. OS thiết lập các quy tắc ứng xử, quản lý tài nguyên của xã hội đó, và tạo điều kiện thuận lợi nhất để các cá nhân có thể tham gia mọi hoạt động của mình một an toàn nhất có thể.


Nhà nước
Hệ điều hành
Tài nguyên: Đất đai,
đường sá, nước, ...
CPU, RAM, HDD,...
Pháp luật  Policy  
Cá nhân, doanh nghiệp    Các tiến trình, threads 
 Quy tắc giao tiếp   Protocols 

Nếu đã là một xã hội, thì cần phải có những quy tắc giao tiếp, hệ thống pháp luật để làm sao đảm bảo cho mọi công dân, doanh nghiệp trong xã hội đó được hoạt động và phát huy hết năng lực của họ. Tuy nhiên, trong máy tính, thì tài nguyên hạn chế hơn nhiều so với ngoài đời, cho nên nhiệm vụ của OS là làm sao cho các tài nguyên đó được cấp phát một cách nhanh chóng kịp thời và đúng mực cho những tiến trình cần đến. Khi các tiến trình kết thúc đi, các tài nguyên đó phải được trả lại cho OS để OS có thể tiếp tục cấp phát cho các tiến trình khác.

1. Bộ xử lý trung tâm - CPU 
Khi nói đến tài nguyên hệ thống, nhiều bạn nghĩ ngay đến RAM, HDD mà ít ai nói đến CPU. Thực chất CPU (bộ vi xử lý trung tâm) là tài nguyên quan trọng nhất. Nó giống như bộ não của con người. Nó cung cấp năng lực xử lý cần thiết cho các tiến trình. Mà thông thường các hệ thống máy tính đều có một số lượng hạn chế các CPU, hay nói nôm na là số lượng CPU thường ít hơn các tiến trình.

Rắc rối cuộc đời đến từ việc là luôn có nhiều việc cần phải xử lý hơn là số lượng đầu óc để giải quyết công việc. Ví dụ như một giáo viên phải tại UIT phải làm các công việc: giảng dạy, nghiên cứu khoa học, hướng dẫn đề tài, họp hành, về nhà lại là một thành viên trong một gia đình, hay ra xã hội là một công dân. Một cái đầu thôi, nhưng phải xử lý rất nhiều công việc. Thế thì phải xử trí ra sao?

Thông thường, con người phân chia thời gian theo từng timeslot, sáng từ mấy giờ đến mấy giờ làm việc gì, ... Máy tính cũng thế, OS điều khiển CPU xử lý cho quá trình/tiến trình này một ít, tiến trình khác một ít. Sao cho các tiến trình cảm giác như nó được xử lý đồng thời với các tiến trình khác.

Thử thách của một hệ điều hành tốt là làm sao chăm sóc các tiến trình khỏi đói CPU, tiến trình này không chiếm quá nhiều CPU của hệ thống: dùng đến 100% CPU của hệ thống khiến nó không còn đủ sức phục vụ các tiến trình khác ==> Dẫn đến hệ thống bị treo. Hoặc sau một hồi chuyển qua chuyển lại giữa các tiến trình, CPU nóng quá dẫn đến bị chết /reboot :-)


2. Bộ nhớ chính là tờ giấy nháp - Random Access Memory  

Bộ nhớ thực chất là một tờ giấy nháp trong khi làm toán vậy! Thật vậy khi các bạn giải toán, để ra được đáp số đúng, chúng ta không thể ngay một lúc mà đoán hoặc nhẩm ra đáp số. Chúng ta cần phải có 1 tờ giấy nháp để lưu giữ các phép toán, giá trị trung gian. Nếu như năng lực CPU đủ mạnh, đủ rộng thì không cần đến RAM để làm nháp. Nhưng thực tế, các chương trình ngày càng phức tạp nên RAM là luôn cần thiết.

Thử tưởng tượng như RAM là một tờ giấy nháp lớn cho cả lớp 100 sinh viên trong cùng một lớp (cùng một hệ thống) cùng làm bài. Thế là bao rắc rối của cuộc đời xuất phát từ đây:

  • Làm sao đảm bảo học sinh A được quyền đọc ghi vào tờ giấy nháp mà không ghi đè lên các vùng của học sinh B,C,...Z,... 
  • Làm sao những thông tin của A không bị các học sinh khác copy lén. 
  • Làm sao vùng nháp của A ghi vào lại không bị học sinh B lén sửa thông tin khiến A bị sai. 
  • Ngoài ra, tờ giấy nháp đó cũng được dùng chung cho giám thị, giáo viên, (cấp hệ thống). Làm sao đảm bảo không học sinh nào được ghi xoá sửa trong vùng nháp quan trọng đó. Thực tế, có những vùng nhớ chia sẻ dùng cho điều khiển thiết bị, ngắt, ... nếu bị thay đổi thì thảm hoạ rất dễ xảy ra: Sụp đổ toàn bộ hệ thống (Blue screen example) 

3. Starvation & Deadlock 
Trong cuộc đời, đôi khi chúng ta cũng gặp những tình huống kẹt cứng, dở khóc dở cười. Đi cũng dở mà ở cũng không xong thì trong OS cũng có những tình huống tương tự.
Một ví dụ nổi tiếng trong các sách OS đều có đó là bài toán 5 triết gia và 5 chiết đũa ngồi ăn trong nhà hàng tồi tàn. Như chúng ta cũng biết là phải có 2 chiếc đũa mới gắp thức ăn được. Tình huống là 5 ông cùng cầm một chiếc đũa thì không ai gắp được hết ==> Deadlock.
Để giải quyết, phải có 1 ông nhượng bộ bỏ đũa xuống để nhường cho bạn ăn. Trong OS, giải quyết deadlock cũng là một bài toán đầy thử thách.

(... to be continued...)

III. Kết luận 

Tóm lại, nhờ học HĐH, ta sẽ hiểu hơn về cuộc sống, đồng thời kiến thức từ cuộc sống cũng giúp ta giải quyết các bài toán trong hệ điều hành được tốt hơn. Hơn thế nữa, nếu bạn có kiến thức xã hội tốt, thì sẽ thấy môn HĐH là một môn học rất thú vị, sinh động và đầy thử thách. Bởi vì, những cách giải quyết vấn đề phức tạp đôi khi lại hết sức đơn giản đến mức ngây ngô nhưng lại hiệu quả. Chúc các bạn có được một học kỳ đầy thắng lợi.

(... to be continued...)

[1] Operating System, CS162, UC Berkeley,  http://inst.eecs.berkeley.edu/~cs162
[2] Bài giảng của Giáo sư Anthony trên iTunes, https://itunes.apple.com/au/itunes-u/computer-science-162-001-spring/id596646529?mt=10

Nhận xét