GIÁO TRÌNH NGUYÊN LÝ CÁC HỆ ĐIỀU HÀNH
- Tác giả: PGS. Hà Quang Thụy
- Nhà xuất bản: Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội
- Thông tin xuất bản: Chịu trách nhiệm xuất bản: TS. Phạm Văn Diễn; Biên tập: ThS. Nguyễn Huy Tiến; Sửa bài: Ngọc Linh; Trình bày bìa: Xuân Dũng. Xuất bản và nộp lưu chiểu Quý III năm 2009. Khổ sách: $16 \times 24\text{ cm}$.
1. Tổng quan về giáo trình
Giáo trình Nguyên lý các Hệ điều hành do PGS. Hà Quang Thụy biên soạn là tài liệu học tập chính quy dành cho sinh viên và học viên chuyên ngành Công nghệ Thông tin và Khoa học Máy tính tại các trường đại học, học viện. Trong khung chương trình đào tạo kỹ sư và cử nhân công nghệ thông tin, học phần này giữ vị trí kiến thức cơ sở ngành bắt buộc, làm cầu nối trung gian giữa khối kiến thức phần cứng (Kiến trúc máy tính, Kỹ thuật vi xử lý) và khối kiến thức phần mềm ứng dụng, hệ thống thông tin.
Mục tiêu học tập của giáo trình nhằm trang bị cho người học:
- Bản chất và các nguyên lý cơ bản điều khiển tài nguyên của hệ thống máy tính (bộ nhớ trong, bộ xử lý trung tâm, thiết bị ngoại vi, tệp tin).
- Các cấu trúc dữ liệu hệ thống cùng thuật toán điều phối quá trình, quản lý bộ nhớ thực và bộ nhớ ảo, cơ chế phân xử tranh chấp và kiểm soát bế tắc (Deadlock).
- Cơ chế hoạt động của các hệ điều hành đơn chương trình, đa chương trình, hệ thống đa xử lý tập trung và phân tán.
Cấu trúc giáo trình tiếp cận từ nguyên lý trừu tượng đến hiện thực hóa kỹ thuật thông qua các cấu trúc dữ liệu cụ thể (như bảng mô tả phân khu PDT, khối điều khiển bộ nhớ MCB, khối điều khiển quá trình PCB). Điểm đặc sắc của công trình là sự gắn kết giữa lý thuyết hệ điều hành với việc mô hình hóa toán học (đồ thị định hướng phi chu trình DAG cho thuật toán song song) và cấu phần nghiên cứu tình huống (Case-study) thiết kế nhân hệ điều hành thực nghiệm KMOS.
2. Nội dung kiến thức cốt lõi
KIẾN TRÚC NỘI DUNG GIÁO TRÌNH
Các chương và chủ đề chính
-
Chương 3: Điều khiển bộ nhớ
Khảo sát toàn diện các phương thức quản lý không gian địa chỉ vật lý và bộ nhớ ảo. Nội dung bắt đầu từ các khái niệm địa chỉ tuyệt đối và địa chỉ tương đối (sử dụng thanh ghi cơ sở CS, DS, SS, ES và thanh ghi chỉ số trong chế độ địa chỉ [BX+SI+4]), quản lý bộ nhớ đơn chương trình thông qua khối MCB (Memory Control Block) trong vùng nhớ TPA (Transient Program Area) của MS-DOS/PC-DOS. Tiếp đó, chương phân tích các chiến lược phân phối bộ nhớ liên tục theo cơ chế giới hạn tĩnh (MFT với bảng PDT) và giới hạn động (MVT); giải thuật quản lý vùng nhớ rỗi bằng phương pháp kề cận nhị phân (Buddy system) và kề cận tổng quát Fibonacci; các kỹ thuật Overlay, Swapping; kết thúc bằng cơ chế quản lý bộ nhớ gián đoạn thông qua phân đoạn (Segmentation), phân trang (Paging với các giải thuật thay thế trang FIFO, LRU, LFU) và cơ chế trộn Segment - Trang với bộ ba chỉ số $(s, p, i)$.
-
Chương 4: Điều khiển CPU, điều khiển quá trình
Trình bày bản chất của quá trình (Process) theo quan niệm của D. Parnas (1974), phân biệt giữa chương trình tĩnh và quá trình động, giữa trạng thái CPU bài toán (User mode) và trạng thái kiểm tác (Supervisor mode). Chương mô tả mô hình 3 trạng thái cơ bản của quá trình (Sử dụng/Running, Chuẩn bị/Ready, Chờ đợi/Blocked), cấu trúc khối điều khiển quá trình PCB (Process Control Block) hoặc TCB (Task Control Block). Phân định rõ chức năng giữa bộ điều phối chính (khởi tạo, kết thúc, quản lý CPU ảo) và bộ điều phối mức dưới (cấp phát CPU thực). Phân tích các nguyên tắc điều phối như FCFS (First-Come First-Served), cơ chế đồng bộ hóa tiến trình bằng biến Semaphore với các toán tử nguyên tử $P$ và $V$; các điều kiện sinh ra bế tắc (Deadlock), phương pháp phòng ngừa, phát hiện và bẻ gãy bế tắc dựa trên các ma trận $ALLOCATED$, $AVAILABLE$, $REQUESTED$.
-
Chương 5: Hệ điều hành đa xử lý
Phân loại hệ thống đa xử lý theo vị trí địa lý (tập trung và phân tán) và theo phân loại Flynn (SISD, SIMD, MISD, MIMD; mở rộng sang SPMD, MPSD, MPMD trong tính toán cụm Cluster Computing). Phân tích các mô hình phần cứng điển hình: ILLIAC-IV ($64$ bộ xử lý cấu trúc ma trận $8 \times 8$ điều khiển bởi máy tính B6500) và CRAY-1 (xử lý vector dây chuyền tốc độ $80\text{--}140\text{ MIPS}$). Trình bày lý thuyết thuật toán song song thông qua mô hình đồ thị định hướng phi chu trình (DAG), phương pháp sắp xếp tô-pô, xác định chiều cao (thời gian tính toán) và bề rộng (số CPU tối thiểu). Chương cũng mở rộng sang hệ điều hành phân tán với mô hình Client/Server, vấn đề bảo đảm tính nhất quán dữ liệu và cơ chế lưu trữ kép.
-
Progression logic (Logic phát triển nội dung):
Giáo trình xây dựng tiến trình nhận thức đi từ mức vi mô đến vĩ mô: từ quản lý không gian nhớ của một tiến trình đơn nhiệm $\rightarrow$ phân phối đa nhiệm trên hệ thống đơn xử lý $\rightarrow$ điều phối thời gian CPU và giải quyết tranh chấp tài nguyên giữa nhiều tiến trình $\rightarrow$ mở rộng lên kiến trúc song song đa CPU tập trung và hệ thống phân tán diện rộng.
Kiến thức nền tảng được xây dựng
- Lý thuyết không gian địa chỉ và ánh xạ địa chỉ: Hệ thống hóa quá trình chuyển dịch từ Không gian tên logic $\rightarrow$ Không gian địa chỉ ảo (do trình dịch thiết lập) $\rightarrow$ Không gian địa chỉ thực vật lý (do hệ điều hành và phần cứng ánh xạ).
- Lý thuyết quá trình và chuyển trạng thái: Mô hình hóa vòng đời tiến trình, phân biệt vai trò giữa CPU thực và CPU ảo, quản trị ngữ cảnh thông qua cấu trúc PCB.
- Nguyên lý đồng bộ hóa và điều khiển tài nguyên: Nền tảng toán học về miền tương hỗ loại trừ, cấu trúc Semaphore của Dijkstra, giải thuật đồ thị và ma trận trạng thái để kiểm soát hiện tượng bế tắc hệ thống.
- Lý thuyết tính toán song song: Biểu diễn thuật toán dưới dạng cấu trúc đa tầng, xác định quan hệ phụ thuộc dữ liệu và giới hạn tối ưu của việc song song hóa thuật toán số học (như biến đổi Fourier nhanh FFT, nhân ma trận).
Kỹ năng phát triển
- Kỹ năng kỹ thuật (Technical skills): Nắm vững quy trình chuyển đổi địa chỉ ảo sang địa chỉ thực trên các kiến trúc phân đoạn, phân trang và kết hợp; giải mã và thao tác trên cấu trúc bảng mô tả hệ thống (PDT, MCB, bản đồ trang/đoạn).
- Kỹ năng phân tích (Analytical skills): Đo lường và đánh giá hiệu năng của các giải thuật thay thế trang bộ nhớ ảo (so sánh số lần lỗi trang giữa FIFO và LRU); phân tích định lượng thời gian chờ trung bình của các thuật toán điều phối CPU; phát hiện khả năng bế tắc thông qua các điều kiện ràng buộc tài nguyên.
- Năng lực thực tế (Practical competencies): Vận dụng ngôn ngữ lập trình cấp cao (như Pascal, C) và Hợp ngữ để mô phỏng cơ chế cấp phát bộ nhớ rỗi; lập trình đồng bộ tiến trình thông qua biến cờ/Semaphore; tiếp cận quy trình thiết kế mã nguồn cho nhân hệ điều hành đa nhiệm thực nghiệm KMOS.
3. Phương pháp giảng dạy và học tập
KHUNG THỜI LƯỢNG GIẢNG DẠY
Giáo trình được thiết kế tương thích với khung thời lượng đào tạo chuẩn gồm 30 đến 33 tiết giảng dạy lý thuyết trên lớp và 01 đơn vị học trình dành riêng cho hoạt động thực hành, nghiên cứu trường hợp riêng (Case-study).
Phương pháp tiếp cận sư phạm kết hợp giữa thuyết giảng nguyên lý và thảo luận chuyên đề:
-
Tổ chức nghiên cứu tình huống (Case-study):
Hoạt động được tiến hành trong 3 đến 4 buổi học. Sinh viên thành lập nhóm từ 2 đến 3 người, chủ động lựa chọn hoặc được phân công các chủ đề chuyên sâu trích xuất từ các tài liệu kinh điển quốc tế:
- Khảo sát kiến trúc hệ điều hành MS-DOS (dựa theo Chương 8 tài liệu Modern Operating Systems).
- Khảo sát kiến trúc hệ điều hành UNIX (dựa theo Chương 7 tài liệu Modern Operating Systems).
- Quy trình thiết kế và hoàn thiện nhân hệ điều hành đa bài toán KMOS (Kernel for Multiprogramming Operating System - Chương 11 tài liệu Operating System: Concepts and Design).
Nhiệm vụ của mỗi nhóm bao gồm dịch thuật tài liệu, biên tập nội dung, thuyết trình trước lớp và bảo vệ quan điểm học thuật thông qua giải đáp câu hỏi của giảng viên cùng tập thể sinh viên.
-
Hệ thống bài tập thực hành (Practical exercises):
Cuối mỗi chương, giáo trình cung cấp hệ thống bài tập đa dạng nhằm củng cố năng lực tính toán và lập trình:
- Bài tập lập trình: Viết chương trình Pascal quản lý mảng $2^n$ bit nhị phân để mô phỏng thuật toán cấp phát và phân phối vùng nhớ rỗi cho một tiến trình; lập trình quản lý khối nhớ Overlay.
- Bài tập vết giải thuật: Thực hiện mô phỏng quá trình chuyển dịch địa chỉ ảo $(s, d)$ sang địa chỉ vật lý dựa trên bảng Segment tổng thể; tính toán chính xác số lần tráo đổi trang của các giải thuật FIFO và LRU dựa trên chuỗi truy cập trang bộ nhớ cho trước.
- Bài tập phân tích cơ chế: Mô tả chi tiết biến trạng thái Semaphore và hoạt động của hàng đợi tiến trình kết khối qua chuỗi 14 trạng thái đồng bộ; giải thích cơ chế ngắt
Ctrl-Break trong môi trường MS-DOS.
-
Phương pháp đánh giá và hướng dẫn tự học:
Đánh giá kết quả học tập của sinh viên dựa trên tổng hòa các điểm số: bài tập tính toán định lượng cá nhân, chất lượng bản báo cáo biên tập và năng lực thuyết trình của nhóm trong các buổi hội thảo Case-study, cùng bài thi kết thúc học phần. Người học được hướng dẫn tự nghiên cứu bằng cách đối chiếu mã nguồn hệ thống mẫu, vẽ sơ đồ chuyển trạng thái và tự cài đặt lại các cấu trúc dữ liệu quản lý bộ nhớ rỗi trên môi trường máy vi tính.
4. Điểm nổi bật và cập nhật
-
Minh họa trên các hệ thống phần cứng và hệ điều hành thực tế:
Giáo trình phân tích cấu trúc bộ nhớ và cơ chế điều khiển của các hệ thống máy tính thực: từ kiến trúc máy vi tính 16-bit (phân đoạn địa chỉ Segment/Offset với các thanh ghi CS, DS, SS, ES), vi xử lý Intel 80386 trở đi cho phép vận hành chế độ bảo vệ đa nhiệm (Protected mode), đến việc phân định xử lý giữa CPU chính 80x86 và bộ đồng xử lý toán học dấu phẩy động 80x87.
-
Tích hợp các trường phái siêu máy tính và tính toán hiệu năng cao:
Bên cạnh các hệ điều hành thông dụng (PC-DOS, MS-DOS, UNIX), giáo trình đưa vào phân tích chuyên sâu kiến trúc tính toán của các siêu máy tính kinh điển:
- ILLIAC-IV: Hệ thống SIMD gồm 64 bộ xử lý 64-bit sắp xếp theo ma trận $8 \times 8$, mỗi bộ xử lý có 2048 từ nhớ riêng, đạt hiệu năng 100–200 MIPS dưới sự điều phối của máy chủ Burroughs B6500.
- CRAY-1: Hệ thống MISD/Vector đạt hiệu năng 80–140 MIPS với 12 thiết bị chức năng trung tâm làm việc đồng thời theo nguyên lý dây chuyền.
- Xu hướng tính toán cụm (Cluster Computing): Khái quát hóa các mô hình SPMD, MPSD, MPMD phục vụ xử lý song song các bài toán khoa học kỹ thuật quy mô lớn.
-
Khai thác hệ thống tài liệu tham khảo chuẩn quốc tế:
Nội dung giáo trình được biên soạn dựa trên sự tổng hợp có chọn lọc từ các giáo trình và công trình nghiên cứu uy tín trên thế giới:
- Modern Operating Systems của Andrew S. Tanenbaum.
- Distributed Operating Systems and Algorithms của Randy Chow và Theodore Johnson (1997).
- Operating System: Concepts and Design của Milan Milenković.
- Giáo trình chuẩn mã môn CS260: Operating Systems của Khoa Khoa học Máy tính - Đại học RMIT (1997).
- Chương trình đào tạo ngành Khoa học Thông tin và Máy tính niên khóa 1998–1999 của Đại học California, Irvine (UC Irvine).
5. Đối tượng sử dụng giáo trình
-
Sinh viên chuyên ngành:
Giáo trình được thiết kế cho sinh viên đại học năm thứ hai hoặc năm thứ ba thuộc các ngành: Công nghệ Thông tin, Khoa học Máy tính, Kỹ thuật Phần mềm, Mạng máy tính và Truyền thông dữ liệu, Hệ thống Thông tin. Ngoài ra, học viên cao học chuyên ngành Khoa học Máy tính có thể sử dụng cuốn sách làm tài liệu ôn tập và đào sâu các mô hình lý thuyết tính toán song song, phân tán.
-
Yêu cầu kiến thức nền tảng (Prerequisites):
Để tiếp thu tốt nội dung giáo trình, người học cần hoàn thành các học phần tiên quyết:
- Kiến trúc máy tính & Hợp ngữ (Assembly): Hiểu rõ cấu trúc thanh ghi, chu kỳ lệnh, ngăn xếp (Stack), địa chỉ hóa bộ nhớ và các cơ chế ngắt phần cứng.
- Cấu trúc dữ liệu và Giải thuật: Nắm vững các cấu trúc danh sách liên kết, mảng, ngăn xếp, hàng đợi và các thuật toán đồ thị cơ bản.
- Kỹ năng lập trình cơ sở: Thành thạo một ngôn ngữ lập trình có cấu trúc (như C hoặc Pascal) để thực hiện các bài tập lập trình mô phỏng.
-
Ứng dụng đối với giảng viên:
Tài liệu cung cấp đề cương bài giảng lý thuyết chi tiết theo từng đề mục chuẩn mực, đi kèm hệ thống câu hỏi, sơ đồ kỹ thuật và định hướng phân chia nhóm sinh viên thực hiện bài tập lớn/Case-study trong 3–4 buổi seminar chuyên đề.
-
Tham khảo tự học và nghiên cứu:
Kỹ sư phát triển phần mềm nhúng, lập trình viên hệ thống và các nhà nghiên cứu cần tra cứu nguyên lý cấu trúc phân vùng bộ nhớ, giải thuật điều phối hàng đợi và cơ chế phân chia tài nguyên trong các hệ thống tính toán lớn.
6. Câu hỏi thường gặp
1. Giáo trình này phù hợp với đối tượng nào?
Giáo trình phục vụ giảng dạy chính quy cho sinh viên đại học, học viên cao học ngành Công nghệ Thông tin, Khoa học Máy tính và các kỹ sư phần mềm cần nắm vững nguyên lý hoạt động của hệ điều hành.
2. Cần trang bị những kiến thức nền tảng nào trước khi học?
Người học cần có kiến thức cơ bản về Kiến trúc máy tính, ngôn ngữ Hợp ngữ (đặc biệt là chế độ địa chỉ trên dòng vi xử lý Intel x86), Cấu trúc dữ liệu và Giải thuật, cùng kỹ năng lập trình bằng ngôn ngữ C hoặc Pascal.
3. Điểm khác biệt của giáo trình này so với các tài liệu khác là gì?
Tài liệu kết hợp chặt chẽ giữa việc mô tả cấu trúc dữ liệu cụ thể (như bản ghi MCB 16-byte, bảng PDT, cấu trúc 3 trường của bảng Segment) với việc mô hình hóa toán học cho tính toán song song (đồ thị DAG, sắp xếp tô-pô) và dành trọn 01 đơn vị học trình cho hoạt động nghiên cứu trường hợp thiết kế nhân KMOS.
4. Phương pháp tự học giáo trình như thế nào để đạt hiệu quả cao?
Người học nên đọc song song lý thuyết từng chương với việc giải các bài tập vết giải thuật (thuật toán thay thế trang FIFO/LRU, chuyển đổi địa chỉ), đồng thời tự viết mã nguồn mô phỏng các giải thuật phân phối bộ nhớ rỗi và quản lý Semaphore bằng ngôn ngữ lập trình bậc cao.
5. Có tài liệu bổ trợ nào kèm theo giáo trình?
Giáo trình dẫn chiếu trực tiếp đến các tài liệu nghiên cứu chuyên sâu gồm: tài liệu thiết kế nhân KMOS (Operating System: Concepts and Design), các chương tình huống về MS-DOS/UNIX trong Modern Operating Systems, giáo trình chuyên đề Mạng và các hệ phân tán, cùng các chương trình môn học chuẩn từ Đại học RMIT và UC Irvine.
7. Kết luận
Giáo trình Nguyên lý các Hệ điều hành của PGS. Hà Quang Thụy cung cấp nền tảng tri thức toàn diện về kiến trúc và cơ chế điều hành tài nguyên hệ thống máy tính. Toàn bộ nội dung được trình bày tường minh thông qua hệ thống định nghĩa chuẩn mực, cấu trúc dữ liệu cụ thể, sơ đồ khối kỹ thuật và mô hình toán học giải thuật.
Lộ trình học tập đề xuất:
- Nắm vững bản chất quản lý bộ nhớ thực và ảo (Chương 3).
- Làm chủ nguyên lý điều phối tiến trình và kiểm soát bế tắc (Chương 4).
- Thực hành thiết kế nhân hệ điều hành thực nghiệm KMOS và phân tích trường hợp MS-DOS/UNIX.
- Mở rộng nghiên cứu sang kiến trúc tính toán song song và hệ điều hành phân tán (Chương 5).
Để mở rộng kiến thức, người học nên tiếp tục tham khảo giáo trình chuyên đề Mạng và các hệ phân tán cùng các công trình học thuật chuẩn quốc tế của Randy Chow, Theodore Johnson và Andrew S. Tanenbaum.