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

Bài giảng học phần Nguyên lý Hệ điều hành (Chương 4: Quản lý hệ thống file) do TS. Phạm Đăng Hải (Bộ môn Khoa học Máy tính, Viện Công nghệ Thông tin & Truyền thông – Trường Đại học Bách khoa Hà Nội, liên hệ qua email: haipd@soict.vn) biên soạn và cập nhật ngày 17 tháng 4 năm 2019. Trong chương trình đào tạo đại học và sau đại học ngành Công nghệ Thông tin và Khoa học Máy tính, học phần đóng vai trò là khối kiến thức cơ sở ngành cốt lõi, cung cấp các nền tảng kiến trúc hạ tầng phần mềm trung gian giữa người dùng, tiến trình và thiết bị phần cứng.

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

  • Hiểu rõ bản chất trừu tượng hóa của hệ thống lưu trữ ngoài (đĩa từ, băng từ, đĩa quang).
  • Nắm vững cấu trúc hai thành phần độc lập của một hệ thống file: tập hợp các file dữ liệu và cấu trúc thư mục chứa siêu dữ liệu (metadata).
  • Nắm chắc cơ chế vận hành của các lời gọi hệ thống (system calls) tương tác trực tiếp với file và thư mục.
  • Hiểu được các phương pháp cài đặt hệ thống file, thuật toán cấp phát không gian lưu trữ, kỹ thuật quản lý vùng nhớ tự do và kiểm soát truy nhập an toàn.

Giáo trình được tiếp cận theo phương pháp phân tầng logic, đi từ khái niệm trừu tượng tầng người dùng đến cơ chế cài đặt vật lý dưới tầng hạt nhân hệ điều hành. Toàn bộ chương gồm 108 trang bài giảng, phân định thành các khối kiến thức tuần tự: Hệ thống file, Cài đặt hệ thống file, Tổ chức thông tin trên đĩa từ và Cấu trúc Hệ thống Bảng Cấp phát Tập tin (FAT). Điểm đặc sắc của tài liệu là việc mô hình hóa trực quan trạng thái bộ nhớ ngoài, bảng thư mục và sự biến đổi của các con trỏ truy xuất qua từng thao tác ghi, đọc, định vị và giải phóng dữ liệu.


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

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

Cấu trúc chương trình học phần và nội dung trọng tâm trong Chương 4 bao gồm 4 chủ đề lớn:

Chương 4: Quản lý hệ thống file (108 trang)

Nội dung được phát triển theo một chuỗi logic chặt chẽ:

  • Khái niệm và Cấu trúc File: Định nghĩa file là đơn vị lưu trữ cơ bản của hệ điều hành trên bộ nhớ ngoài, gồm chuỗi bits, bytes, dòng hoặc bản ghi. Cấu trúc file phân loại theo loại hình: file văn bản (chuỗi ký tự tổ chức thành dòng), file đối tượng (các bytes tổ chức thành khối để trình liên kết linker nhận diện), và file thực thi (chuỗi mã lệnh có thể nạp trực tiếp vào bộ nhớ để CPU thực thi).
  • Thuộc tính File và Bản ghi File: Xác lập 7 thuộc tính cơ bản của file: Tên (Name - đảm bảo tính độc lập giữa tiến trình và người dùng, hỗ trợ chỉnh sửa đa nền tảng như Windows/Linux), Định danh (Identifier - thẻ định danh duy nhất), Kiểu (Type - hỗ trợ HĐH kích hoạt đúng trình xử lý), Vị trí (Position - con trỏ trỏ tới thiết bị và địa chỉ), Kích thước (Size - kích thước hiện tại và tối đa), Bảo vệ (Protection - ma trận quyền đọc/ghi), và Thời gian (Time - mốc tạo lập, chỉnh sửa, truy cập). Toàn bộ thuộc tính được lưu trong cấu trúc dữ liệu Bản ghi file (File Record, kích thước từ vài byte đến kilobyte), tập hợp lại trong Thư mục file (Directory Table, dung lượng có thể đạt megabytes và được nạp từng phần vào RAM khi cần thiết).
  • Các thao tác cơ bản trên File: Phân tích chi tiết quy trình xử lý của các lời gọi hệ thống:
    1. Create(): Tìm kiếm vùng trống trong không gian lưu trữ và tạo một phần tử mới trong thư mục để lưu tên, vị trí cùng thuộc tính.
    2. Write(): Tìm file trong thư mục, xác định vị trí thực tế, sử dụng con trỏ ghi (write pointer - wp) để ghi dữ liệu tuần tự và dịch chuyển con trỏ sau mỗi thao tác.
    3. Read(): Nhận tham số tên file và bộ đệm (Buf), tìm kiếm vị trí lưu trữ, dùng con trỏ đọc (read pointer - rp) để trích xuất dữ liệu vào buffer và tịnh tiến con trỏ. HĐH có thể hợp nhất thành một con trỏ file (file pointer) chung cho cả đọc và ghi.
    4. Seek(): Duyệt thư mục để thay đổi giá trị của con trỏ file đến vị trí mong muốn mà không sinh ra thao tác I/O vật lý.
    5. Delete(): Thu hồi vùng nhớ xác định bởi vị trí và kích thước file, xóa phần tử trong thư mục, phân biệt giữa xóa logic (đánh dấu xóa) và xóa vật lý.
    6. Truncate(): Giải phóng không gian dữ liệu bằng cách đặt kích thước về 0 nhưng giữ nguyên các thuộc tính của file trong thư mục.
    7. Các thao tác bổ trợ: Append, đổi tên file, sao chép file (tổ hợp từ chuỗi Create $\rightarrow$ Read $\rightarrow$ Write).
  • Cài đặt và Tổ chức Lưu trữ: Khảo sát mô hình thiết bị lưu trữ dạng mảng khối nhớ, các phương pháp cung cấp không gian, quản lý danh sách khối tự do đảm bảo tính trong suốt (transparency) với người dùng.
  • Hệ thống FAT và Hệ thống File Phân tán: Nghiên cứu cấu trúc Bảng Cấp phát Tập tin FAT, giải quyết bài toán truy cập tệp từ xa qua mạng, bảo vệ tính toàn vẹn và chống truy nhập bất hợp lệ trong môi trường phân tán.

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

  • Nguyên lý trừu tượng hóa phần cứng: Chuyển đổi mô hình vật lý phức tạp của thiết bị lưu trữ ngoài thành không gian tên phẳng hoặc cây thư mục có cấu trúc.
  • Phân tách Dữ liệu và Siêu dữ liệu: Phân lập rõ ràng giữa nội dung tập tin người dùng và siêu dữ liệu trong bản ghi file/thư mục.
  • Nguyên lý toàn vẹn và kiểm soát truy nhập: Xây dựng cơ chế cấp phép phân quyền (Protection) nhằm loại bỏ các hành vi truy nhập trái phép.

Kỹ năng phát triển

  • Kỹ năng phân tích kiến trúc: Phân tích chi phí I/O, đánh giá hiệu năng giữa thao tác đọc/ghi tuần tự và định vị ngẫu nhiên qua con trỏ file (Seek).
  • Kỹ năng lập trình hệ thống: Áp dụng chính xác các system call tầng thấp (open, read, write, lseek, unlink) trên các nền tảng hệ điều hành POSIX/Linux và Windows.
  • Kỹ năng thiết kế cấu trúc dữ liệu tệp: Xây dựng mô hình bảng thư mục và giải thuật quản lý khối nhớ tự do trên bộ nhớ phụ.

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

Tài liệu sử dụng phương pháp giảng dạy diễn dịch trực quan hóa (visual trace execution). Thay vì chỉ trình bày định nghĩa trừu tượng, bài giảng diễn giải chi tiết từng bước chuyển đổi trạng thái của hệ thống thông qua các slide minh họa liên tiếp.

Ví dụ quy trình thực thi thao tác Write(SoNT.dat, ...) theo từng bước:
1. Nhận lời gọi Write(SoNT.dat, data)
2. Tra cứu "SoNT.dat" trong Bảng Thư mục File -> Tìm ra vị trí lưu trữ
3. Định vị con trỏ ghi (wp) trên Thiết bị lưu trữ
4. Ghi dữ liệu tuần tự: wp = 17 -> wp = 19 -> wp = 23 -> wp = 29
5. Cập nhật vị trí con trỏ ghi mới và cập nhật kích thước file trong thư mục
  • Bài tập và Case Studies: Bài giảng lồng ghép các tình huống thực tế về tính độc lập dữ liệu giữa các môi trường hệ điều hành:
    • Case study 1: Tiến trình A tạo file mã nguồn hello.c bằng trình soạn thảo Notepad trên Windows, tiến trình B mở và sửa file đó bằng Emacs trên Linux thông qua việc đồng nhất nhận diện tên và cấu trúc byte.
    • Case study 2: Cơ chế ánh xạ kiểu file (Type) với trình ứng dụng xử lý (ví dụ: nháy đúp chuột vào file .doc sẽ kích hoạt Word Processor; tệp mã nguồn thay đổi yêu cầu biên dịch lại file thực thi tương ứng).
  • Thực hành mô phỏng: Thực hiện bài toán ghi dãy số nguyên tố (17, 19, 23, 29) vào tệp SoNT.dat, theo dõi sự thay đổi của biến con trỏ ghi wp và vùng đệm Buf trong bộ nhớ RAM khi gọi hàm Read().
  • Phương pháp đánh giá: Đánh giá thông qua bài tập kiểm tra trắc nghiệm/tự luận về thuật toán quản lý thư mục, phân tích sự khác nhau giữa xóa logic và xóa vật lý, tính toán overhead của bản ghi file và lập trình mô phỏng các thuật toán cấp phát FAT.
  • Hướng dẫn tự học: Sinh viên cần đọc tuần tự slide bài giảng, đối chiếu giữa sơ đồ lý thuyết và việc viết chương trình thực tế trên ngôn ngữ C/C++ để quan sát sự thay đổi giá trị con trỏ file sau mỗi lệnh đọc/ghi.

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

  • Tính chuẩn hóa học thuật: Nội dung bài giảng được chuẩn hóa bởi Bộ môn Khoa học Máy tính thuộc Viện Công nghệ Thông tin & Truyền thông (SoICT) – đơn vị đào tạo hàng đầu về công nghệ thông tin tại Việt Nam. Toàn bộ thuật ngữ được chuẩn hóa song ngữ Anh - Việt (File Record, Directory Structure, Write Pointer, Read Pointer, Truncate, FAT).
  • Tính thực tiễn và mô hình hóa chi tiết: Điểm nổi bật là việc tách nhỏ từng thao tác nghiệp vụ thành các bước thực thi vi mô rõ ràng, giúp sinh viên nắm bắt được sự tương tác giữa bảng thư mục trong bộ nhớ RAM và các block nhớ trên đĩa vật lý.
  • Cập nhật kiến trúc phân tán: Bên cạnh các hệ thống file cục bộ truyền thống trên đĩa từ, bài giảng tích hợp nội dung mở rộng về hệ thống file phân tán (Distributed File Systems), đặt ra bài toán truy cập tệp từ xa và bảo đảm tính toàn vẹn dữ liệu trong môi trường mạng máy tính.
  • Gắn liền tiêu chuẩn công nghiệp: Phản ánh chính xác cơ chế hoạt động của các hệ thống tệp thông dụng đang được ứng dụng trong thực tế như FAT (File Allocation Table) và các hệ thống tệp tương thích tiêu chuẩn POSIX.

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

  • Sinh viên chuyên ngành: Tài liệu phục vụ trực tiếp cho sinh viên năm thứ hai và năm thứ ba thuộc các chuyên ngành Khoa học Máy tính, Kỹ thuật Máy tính, Công nghệ Thông tin, Kỹ thuật Phần mềm và An toàn Thông tin.
  • Kiến thức tiên quyết (Prerequisites):
    • Kiến trúc Máy tính (nguyên lý hoạt động của CPU, bộ nhớ chính RAM, cấu trúc sector/track của bộ nhớ ngoài).
    • Cấu trúc Dữ liệu & Giải thuật (mảng, danh sách liên kết, cây thư mục, bảng băm).
    • Ngôn ngữ lập trình C/C++ (thao tác quản lý con trỏ, cấp phát bộ nhớ động).
  • Giảng viên giảng dạy: Sử dụng bộ slide 108 trang làm tài liệu khung để xây dựng bài giảng lý thuyết, bài tập trên lớp và bài tập lớn môn học Nguyên lý Hệ điều hành.
  • Kỹ sư hệ thống và người tự học: Lập trình viên hệ thống, kỹ sư phần mềm nhúng, chuyên viên DevOps cần nghiên cứu sâu về cơ chế I/O tầng thấp và nguyên lý tổ chức dữ liệu của hệ điều hành.

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ế cho sinh viên đại học, học viên cao học chuyên ngành Công nghệ Thông tin và các kỹ sư phần mềm cần nắm vững nguyên lý hoạt động nội tại của hệ điều hành.

2. Cần kiến thức nền nào để học tốt chương này?

Người học cần có kiến thức cơ bản về Kiến trúc Máy tính (đặc biệt là cơ chế hoạt động của bộ nhớ trong và bộ nhớ ngoài), Cấu trúc Dữ liệu (mảng, danh sách liên kết) và kỹ năng lập trình thao tác con trỏ với ngôn ngữ C.

3. Điểm khác biệt của tài liệu này so với các tài liệu khác là gì?

Tài liệu sử dụng chuỗi slide minh họa trực quan từng bước thay đổi trạng thái của con trỏ đọc/ghi (rp/wp), bảng thư mục và các khối dữ liệu vật lý khi thực hiện các hàm hệ thống Create, Write, Read, Seek, Delete, Truncate.

4. Làm sao để tự học hiệu quả với bài giảng này?

Người học nên kết hợp đối chiếu slide lý thuyết với việc viết các đoạn mã C sử dụng các lời gọi hệ thống chuẩn POSIX (open, read, write, lseek, truncate) để quan sát trực tiếp hành vi quản lý con trỏ file của hệ điều hành.

5. Có tài liệu bổ trợ nào kèm theo nội dung này?

Người học có thể tham khảo thêm các giáo trình chuẩn quốc tế như Operating System Concepts (Silberschatz, Galvin, Gagne), Modern Operating Systems (Andrew S. Tanenbaum) cùng tài liệu đặc tả kỹ thuật hệ thống tệp FAT của Microsoft.


Kết luận

Bài giảng Nguyên lý Hệ điều hành - Chương 4: Quản lý hệ thống file của TS. Phạm Đăng Hải (Viện CNTT&TT - SoICT) là tài liệu học thuật mô tả hệ thống và toàn diện các nguyên lý cốt lõi của hệ thống tệp. Lộ trình học tập hiệu quả bắt đầu từ việc nắm bắt khái niệm file và cấu trúc bảng thư mục (Phần 1), tiếp tục qua các thuật toán cài đặt hệ thống file (Phần 2), phân tích cơ chế vật lý trên đĩa từ (Phần 3), và hoàn thiện với việc khảo sát kiến trúc hệ thống FAT (Phần 4). Để mở rộng kiến thức, người học nên kết hợp tham khảo các tài liệu chuẩn quốc tế và thực hành lập trình hệ thống trên môi trường Linux/Unix.