Tổng quan về giáo trình

Tài liệu bài giảng học phần Hệ điều hành — chuyên đề "Chương 5: Quản lý vào ra" do TS. Phạm Đăng Hải biên soạn (Bộ môn Khoa học Máy tính, Viện Công nghệ Thông tin & Truyền thông, ngày 21 tháng 8 năm 2015), đóng vai trò là khối kiến thức cơ sở ngành quan trọng trong chương trình đào tạo Kỹ sư và Cử nhân ngành Công nghệ Thông tin, Khoa học Máy tính và Kỹ thuật Máy tính.

Mục tiêu học tập của tài liệu tập trung vào việc trang bị cho người học:

  • Hiểu rõ bản chất phần cứng và tầng giao tiếp của các thiết bị ngoại vi trong cấu trúc máy tính.
  • Nắm vững cơ chế vận hành của bộ điều khiển thiết bị (Device Controller) và trình điều khiển (Device Driver).
  • Phân tích cơ chế xử lý ngắt (Interrupts) và kỹ thuật thăm dò (Polling).
  • Làm chủ nguyên lý xây dựng hệ thống vùng đệm (Buffer), kỹ thuật ảo hóa thiết bị ngoại vi trực tuyến (SPOOL) và kiểm soát lỗi vào ra.
  • Đánh giá và tính toán định lượng hiệu năng các thuật toán điều phối truy nhập đĩa từ (Disk Scheduling Algorithms).

Tài liệu được cấu trúc thành 43 slide bài giảng tiêu chuẩn, tiếp cận theo mô hình phân tầng từ phần cứng vật lý, tầng trung gian hệ điều hành đến các giải thuật tối ưu hóa lưu trữ. Điểm đặc thù của bài giảng là sự chuẩn hóa các khái niệm kỹ thuật, kết hợp song song giữa lý thuyết điều khiển hệ thống và ví dụ tính toán số học tường minh, phản ánh sát cấu trúc vận hành của các hệ điều hành kinh điển như Unix/Linux và kiến trúc máy tính IBM-PC.


Nội dung kiến thức cốt lõi

Các chương và chủ đề chính

Tài liệu tổ chức nội dung xoay quanh ba phân vùng kiến thức trọng tâm:

                                                         C-SCAN, LOOK, C-LOOK)

1. Nguyên tắc quản lý chung

  • Phân loại thiết bị ngoại vi:
    • Quan điểm kỹ thuật: Hệ thống gồm vi xử lý, motor và các linh kiện điện tử.
    • Quan điểm lập trình: Giao diện phần mềm tiếp nhận lệnh, thực thi và trả kết quả.
    • Thiết bị khối (Block Device): Đĩa từ, băng từ; dữ liệu lưu trữ theo khối kích thước cố định với địa chỉ riêng; cho phép đọc/ghi độc lập từng khối; hỗ trợ thao tác định vị (seek).
    • Thiết bị ký tự (Character Device): Máy in, bàn phím, chuột; xử lý luồng ký tự liên tục, không tổ chức dạng khối và không hỗ trợ thao tác định vị.
    • Thiết bị khác: Bộ định thời/đồng hồ hệ thống (Clock).
  • Bộ điều khiển thiết bị (Device Controller - DC): Đóng vai trò cầu nối trung gian giữa CPU và thiết bị ngoại vi thông qua các khe cắm (slot) bo mạch chủ; xử lý tín hiệu mức thấp (như phân tách Sector = 512 bytes = 4096 bits); giao tiếp với CPU qua các thanh ghi điều khiển và cổng vào ra (I/O ports).
  • Trình điều khiển thiết bị (Device Driver): Đoạn mã trong nhân (kernel) cung cấp giao diện chuẩn hóa:
    • Mức cao: Giao tiếp với nhân qua các lời gọi hệ thống chuẩn (open(), close(), read(), write()); thiết lập luồng điều khiển tạm nghỉ (sleep) khi chờ I/O.
    • Mức thấp: Đóng vai trò thủ tục xử lý ngắt (Interrupt Service Routine - ISR), nhận/xuất khối dữ liệu và đánh thức luồng mức cao khi hoàn tất.
  • Cơ chế giao tiếp:
    • Ngắt (Interrupts): Tín hiệu IRQ kích hoạt bộ quản lý ngắt, ánh xạ qua bảng vector ngắt để gọi ISR.
    • Thăm dò (Polling): Hệ điều hành kiểm tra chu kỳ thanh ghi trạng thái của thiết bị.
    • Phương pháp kết hợp: Áp dụng cho thiết bị mạng băng thông cao (ngắt cho gói tin đầu tiên, thăm dò các gói tiếp theo đến khi vùng đệm rỗng).
  • Phân loại và quy trình xử lý ngắt:
    • Phân loại: Ngắt trong/ngoài, ngắt cứng/mềm, ngắt che được/không che được, ngắt yêu cầu/báo cáo.
    • Quy trình 5 bước: (1) Ghi nhận đặc trưng sự kiện gây ngắt vào ô nhớ cố định $\rightarrow$ (2) Lưu trạng thái tiến trình bị ngắt $\rightarrow$ (3) Nạp địa chỉ ISR từ bảng vector ngắt vào con trỏ lệnh $\rightarrow$ (4) Thực thi ISR $\rightarrow$ (5) Khôi phục tiến trình bị ngắt.

2. Dịch vụ vào ra của hệ thống

  • Vùng đệm (Buffer): Khắc phục sự chênh lệch tốc độ giữa CPU và ngoại vi; giảm số lượng thao tác vào ra bằng cách gom khối, cho phép thực hiện song song và đọc trước (prefetching).
    • Phân loại theo hướng dữ liệu: Vùng đệm vào (thực hiện đọc trước dữ liệu, ví dụ đọc đĩa) và Vùng đệm ra (lưu tạm dữ liệu xuất, đẩy ra thiết bị khi đầy).
    • Phân loại theo phạm vi: Gắn với thiết bị (tạo khi open, hủy khi close) và Gắn với hệ thống (tồn tại liên tục, đóng vai trò tài nguyên găng cần điều độ).
    • Cấu trúc tổ chức: Vùng đệm trung chuyển và Vùng đệm vòng tròn (Circular Buffer) gồm ba phân vùng: đệm vào, đệm ra và đệm xử lý.
  • Quản lý lỗi I/O: Hệ thống chịu trách nhiệm kiểm soát lỗi thông qua cơ chế kiểm tra chẵn/lẻ (Parity check) hoặc tổng kiểm tra (Checksum); thực hiện thử lại (retry) nhiều lần hoặc phân tích mã trả về (return code) để khôi phục dữ liệu.
  • Kỹ thuật SPOOL (Simultaneous Peripheral Operations On-Line): Ảo hóa thiết bị vào ra tuần tự (như máy in) thành các tiến trình nền; sử dụng tiến trình dịch vụ (Printer daemon) và máy in ảo (Virtual printer) để phục vụ đồng thời nhiều tiến trình người dùng ($P_1, P_2$).

3. Hệ thống vào ra đĩa

  • Cấu trúc đĩa từ: Mô hình hóa thành mảng một chiều các khối logic (Logical block). Ánh xạ liên tiếp theo trật tự: $\text{Sector} \rightarrow \text{Header} \rightarrow \text{Track/Cylinder}$ (với Khối 0 là sector đầu, mặt 0, cylinder ngoài cùng) nhằm hạn chế tối đa dịch chuyển đầu từ vật lý.
  • Các thành phần thời gian truy nhập đĩa:
    • Thời gian định vị ($\text{Seek time}$): Thời gian dịch chuyển đầu đọc tới cylinder mục tiêu (chiếm tỷ trọng lớn nhất).
    • Độ trễ quay ($\text{Rotational latency}$): Thời gian chờ đĩa quay sector cần đọc đến dưới đầu từ.
    • Băng thông đĩa: Tỷ số giữa tổng số byte trao đổi và tổng thời gian từ lúc yêu cầu đến khi hoàn tất.
  • Các thuật toán điều phối đĩa:
    • FCFS (First-Come First-Served), SSTF (Shortest Seek Time First), SCAN, C-SCAN (Circular SCAN), LOOK và C-LOOK.

Kiến thức nền tảng được xây dựng

Giáo trình xây dựng ba trụ cột lý thuyết nền tảng:

  1. Lý thuyết phân tầng kiến trúc I/O: Tách biệt rõ ràng giữa phần cứng thiết bị, bộ điều khiển phần cứng (Device Controller), trình điều khiển trong nhân (Device Driver), hệ thống con I/O độc lập thiết bị (I/O Subsystem) và không gian người dùng.
  2. Nguyên lý đồng bộ và bất đồng bộ trong xử lý ngắt: Mô hình hóa tương tác giữa CPU và phần cứng thông qua tín hiệu ngắt phần cứng, hàng đợi I/O và chuyển đổi ngữ cảnh tiến trình.
  3. Mô hình tối ưu hóa tài nguyên thứ cấp: Thiết lập hàm mục tiêu tối thiểu hóa tổng hành trình dịch chuyển đầu từ ($\sum |\text{cylinder}{i} - \text{cylinder}{i-1}|$) trên không gian đĩa từ vật lý.

Kỹ năng phát triển

Thông qua nội dung bài giảng, người học phát triển các kỹ năng chuyên môn:

  • Kỹ năng kỹ thuật: Phân biệt và cấu hình các giao tiếp điều khiển thiết bị chuẩn (ANSI, IEEE, ISO); hiểu cơ chế hoạt động của cổng vào ra và các thanh ghi trạng thái/lệnh.
  • Kỹ năng phân tích hệ thống: Đánh giá chi phí chuyển đổi ngữ cảnh giữa cơ chế ngắt và cơ chế thăm dò; xác định giải pháp phù hợp theo đặc tính lưu lượng dữ liệu (đơn lẻ hay băng thông cao).
  • Kỹ năng tính toán giải thuật: Lập bảng mô phỏng, tính toán chính xác tổng quãng đường dịch chuyển của đầu đọc đĩa từ theo từng giải thuật điều phối cụ thể.

Phương pháp giảng dạy và học tập

Phương pháp sư phạm

Bài giảng áp dụng phương pháp sư phạm cấu trúc hóa (Structured Pedagogical Approach), đi từ trừu tượng hóa phần cứng đến hiện thực hóa thuật toán phần mềm. Mỗi chủ đề đều được đặt vấn đề từ hạn chế vật lý (tốc độ thiết bị cơ khí chậm hơn nhiều so với tốc độ điện tử của CPU) để dẫn dắt tới các giải pháp kiến trúc của hệ điều hành (bộ đệm, xử lý bất đồng bộ qua ngắt, và giải thuật lập lịch).

Bài tập và bài toán tình huống (Case Studies)

Tài liệu tích hợp các bài toán định lượng cụ thể để người học rèn luyện tư duy tính toán:

Vị trí đầu đọc ban đầu: Cylinder 53
Hàng đợi yêu cầu truy nhập: [98, 183, 37, 122, 14, 124, 65, 67]
Giới hạn Cylinder: 0 đến 199
  • Mô phỏng thuật toán FCFS:

    • Quỹ đạo dịch chuyển: $53 \rightarrow 98 \rightarrow 183 \rightarrow 37 \rightarrow 122 \rightarrow 14 \rightarrow 124 \rightarrow 65 \rightarrow 67$
    • Chi tiết từng bước dịch chuyển: $$|53 - 98| = 45$$ $$|98 - 183| = 85$$ $$|183 - 37| = 146$$ $$|37 - 122| = 85$$ $$|122 - 14| = 108$$ $$|14 - 124| = 110$$ $$|124 - 65| = 59$$ $$|65 - 67| = 2$$
    • Tổng số cylinder dịch chuyển: $$\sum = 45 + 85 + 146 + 85 + 108 + 110 + 59 + 2 = 630 \text{ cylinders}$$
    • Đánh giá hiệu năng: Thuật toán FCFS dẫn đến hiện tượng đầu đọc dao động liên tục trên toàn bộ bề mặt đĩa, gây suy giảm nghiêm trọng băng thông hệ thống.
  • Phân tích thuật toán SSTF:

    • Ưu tiên chọn cylinder gần vị trí hiện tại của đầu đọc nhất để giảm thiểu thời gian định vị cục bộ.
    • Tình huống phân tích: Nguy cơ xảy ra hiện tượng đói tài nguyên (Starvation) đối với các yêu cầu ở xa nếu liên tục xuất hiện các yêu cầu mới nằm gần vị trí hiện thời của đầu đọc (tương tự hiện tượng xảy ra trong giải thuật điều độ CPU SJF - Shortest Job First).

Phương pháp đánh giá và hướng dẫn tự học

  • Phương pháp đánh giá: Đánh giá dựa trên khả năng giải bài tập định lượng lập lịch đĩa, phân tích quy trình xử lý ngắt 5 bước và thiết kế kiến trúc bộ đệm vòng tròn.
  • Hướng dẫn tự học: Người học cần đối chiếu kiến trúc thanh ghi của bộ điều khiển với bảng vector ngắt phần cứng; vẽ sơ đồ phân luồng dữ liệu của kỹ thuật SPOOL; và tự lập trình mô phỏng các thuật toán SCAN, C-SCAN, LOOK, C-LOOK dựa trên tập dữ liệu mẫu đã cung cấp.

Điểm nổi bật và cập nhật

  • Tính chuẩn xác và hệ thống: Bài giảng trình bày chi tiết các thông số kỹ thuật tiêu chuẩn của phần cứng lưu trữ, xác định rõ kích thước một Sector vật lý chuẩn gồm $512 \text{ bytes} = 4096 \text{ bits}$, giúp sinh viên nắm bắt bản chất của quá trình đọc/ghi dữ liệu nhị phân trước khi gom cụm thành khối logic.
  • Giải pháp tiếp cận hiện đại trong xử lý I/O: Đưa ra phân tích kỹ thuật về cơ chế kết hợp giữa Ngắt và Thăm dò trên các thiết bị mạng băng thông cao (High-bandwidth Network Interface Cards). Việc kích hoạt ngắt ở gói tin đầu tiên và chuyển sang thăm dò liên tục cho đến khi vùng đệm trống giúp triệt tiêu chi phí phụ (overhead) do ngắt liên tục gây tràn hàng đợi xử lý.
  • Minh họa lịch sử và kiến trúc thực tế: Trích dẫn các ví dụ thực tiễn từ nền tảng máy tính IBM-PC, vi xử lý Intel 486 và hệ điều hành Windows 98, tạo sự liên hệ trực tiếp giữa lý thuyết quản lý lỗi, quản lý ngắt và phần cứng máy tính trong quá trình phát triển công nghệ.

Đối tượng sử dụng giáo trình

Nhóm đối tượng Yêu cầu điều kiện tiên quyết (Prerequisites) Mục đích sử dụng
Sinh viên Đại học
(Năm 2 - Năm 3 ngành CNTT, KTPM, KHMT, KTMT)
- Kiến trúc Máy tính và Hợp ngữ
- Cấu trúc Dữ liệu và Giải thuật
- Ngôn ngữ lập trình C / C++
Học tập học phần Hệ điều hành; nắm vững cơ chế quản lý phần cứng, lập trình giao tiếp mức nhân và tính toán giải thuật lập lịch.
Học viên Cao học - Hệ điều hành nâng cao
- Hệ thống phân tán
Nghiên cứu sâu về cơ chế quản lý thiết bị lưu trữ, tối ưu hóa I/O trong môi trường ảo hóa và điện toán đám mây.
Giảng viên - Chuyên môn Khoa học Máy tính Sử dụng làm khung bài giảng chuẩn, xây dựng ngân hàng câu hỏi thi tự luận và bài tập tính toán hiệu năng đĩa.
Kỹ sư Hệ thống / Embedded - Kiến trúc Vi điều khiển
- Nhân hệ điều hành Linux
Tra cứu tài liệu nền tảng khi phát triển Device Driver, tối ưu hóa vùng đệm và xử lý ngắt trong hệ thống nhúng.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với ai?

Tài liệu được thiết kế chuyên biệt cho sinh viên đại học khối ngành Công nghệ Thông tin, Kỹ thuật Máy tính và Khoa học Máy tính thuộc hệ đào tạo kỹ sư/cử nhân, đồng thời là tài liệu tham khảo kỹ thuật cho các kỹ sư phát triển phần mềm hệ thống và trình điều khiển thiết bị (Device Driver).

2. Cần kiến thức nền nào trước khi tiếp cận tài liệu?

Người học cần hoàn thành các học phần nền tảng: Kiến trúc Máy tính (hiểu về CPU, Bus, Khe cắm, Thanh ghi và Cổng I/O), Nguyên lý Hệ điều hành cơ bản (khái niệm Tiến trình, Luồng, Quản lý Bộ nhớ) và kỹ năng lập trình ngôn ngữ C/C++ để hiểu cách thức vận hành của các lời gọi hệ thống (open, read, write, close).

3. Điểm khác biệt cốt lõi giữa cơ chế Ngắt và Thăm dò trong bài giảng là gì?

  • Ngắt (Interrupt-driven I/O): Thiết bị ngoại vi chủ động gửi tín hiệu IRQ đến bộ quản lý ngắt khi hoàn thành tác vụ hoặc gặp lỗi. CPU không phải chờ đợi mà có thể thực thi tiến trình khác cho đến khi nhận được tín hiệu ngắt.
  • Thăm dò (Polling): CPU chủ động thực hiện vòng lặp định kỳ đọc thanh ghi trạng thái của thiết bị điều khiển để kiểm tra trạng thái hoàn thành. Phương pháp này gây lãng phí chu kỳ xử lý của CPU nếu thiết bị thực hiện thao tác vào ra không thường xuyên.

4. Tại sao thuật toán điều phối đĩa SSTF có thể gây ra hiện tượng đói tài nguyên (Starvation)?

Thuật toán SSTF (Shortest Seek Time First) luôn ưu tiên phục vụ yêu cầu có khoảng cách cylinder gần nhất so với vị trí hiện tại của đầu đọc nhằm cực tiểu hóa thời gian định vị ($\text{Seek time}$). Do đó, nếu hệ thống liên tục tiếp nhận các yêu cầu truy nhập mới nằm cục bộ xung quanh vị trí đầu đọc, các yêu cầu ở các cylinder xa sẽ bị hoãn vô hạn định và không bao giờ được phục vụ.

5. Cấu trúc đĩa từ được ánh xạ như thế nào để giảm thời gian định vị?

Đĩa từ được mô hình hóa thành mảng một chiều các khối logic (Logical Blocks) với đơn vị trao đổi nhỏ nhất là khối logic. Các khối được ánh xạ liên tiếp theo thứ tự ưu tiên: $\text{Sector} \rightarrow \text{Header} \rightarrow \text{Track/Cylinder}$, bắt đầu từ Khối 0 tại sector đầu của mặt 0 trên cylinder ngoài cùng. Trật tự ánh xạ này đảm bảo khi hệ điều hành đọc các sector kế tiếp nhau, đầu đọc không phải chuyển đổi cylinder vật lý, giảm thiểu tối đa $\text{Seek time}$.


Kết luận

Bài giảng "Chương 5: Quản lý vào ra" của TS. Phạm Đăng Hải (Viện CNTT&TT) cung cấp cấu trúc kiến thức chuẩn xác, cô đọng về cơ chế tương tác phần cứng - phần mềm trong hệ thống máy tính. Nội dung bài giảng làm sáng tỏ bản chất của các kỹ thuật nền tảng: từ điều khiển cổng I/O, cấu trúc phân tầng của Device Driver, quy trình 5 bước xử lý ngắt, cơ chế bộ đệm vòng tròn, giải pháp ảo hóa SPOOL đến các thuật toán lập lịch đĩa từ.

Để nắm vững toàn diện chuyên đề, người học nên tiếp cận tuần tự theo lộ trình: nghiên cứu nguyên tắc quản lý chung $\rightarrow$ phân tích các dịch vụ hệ thống $\rightarrow$ giải bài tập tính toán định lượng các giải thuật điều phối đĩa (FCFS, SSTF, SCAN, C-SCAN, LOOK, C-LOOK). Đồng thời, người học có thể đối chiếu nội dung bài giảng với các giáo trình quốc tế tiêu chuẩn như Operating System Concepts (Silberschatz, Galvin, Gagne) và Modern Operating Systems (Andrew S. Tanenbaum) để mở rộng kiến thức thực hành trên nhân hệ điều hành thực tế.