Chương 3 Quản lý bộ nhớ Dẫn nhập: °. Bộ nhớ chính là thiết bị lưu trữ duy nhất thông qua đó CPU có thể trao đối thông tin với môi trường ngoài ° _ Bộ nhớ chính được tổ chức như một mảng một chiều các từ nhớ (word), môi từ nhớ có một địa chỉ °Ò _ Hầu hết các hệ điều hành hiện đại đều cho phép chế độ đa nhiệm => có nhiều process trong bộ nhớ tại một thời điểm => cần vai trò quản lý bộ nhớ của OS Chức năng quản lý bộ nhớ của OS Sự tương ứng giữa địa chỉ logic và địa chỉ vật lý (physic) : làm cách nào để chuyển đổi một địa chỉ tượng trưng (symbolic) trong chương trình thành một địa chỉ thực trong bộ nhớ chính? Quản lý bộ nhớ vật lý: làm cách nào để mở rộng bộ nhớ có sẵn nhằm lưu trữ được nhiêu tiễn trình đồng thời? Chia sẻ thông tin: làm thế nào để cho phép hai tiến trình có thể chia sẻ thông tin trong bộ nhớ? Bảo vệ: làm thế nào để ngăn chặn các tiến trình xâm phạm đến vùng nhớ được cấp phát cho tiến trình khác? Địa chỉ và chuyển đổi địa chỉ (1) ¢ Địa chỉ — Logic => không gian địa chỉ logic — Vật lý => không gian địa chỉ vật lý ©Ò Chuyển đổi địa chỉ logic => vật lý — 3 thời điểm chuyển đổi ° Được thực hiện bởi ai? *© Ưu nhược điểm ? Địa chỉ và chuyển đổi địa chỉ (2) rà 0 500 Test.cpp 2000 Bộ nhớ chính Địa chỉ và chuyển đổi địa chỉ (4) Process 1 base reg = SOOK length = 350K 330H ——_ --- oO Ssok Process 2 base reg = 200K length => 300F ok — — — —— — =— — — =— -$OOI-= Process 1°s Sook logical address space ————_— OK 200K Process 2's logical address space ok The computer's physical address space Địa chỉ và chuyển đổi địa chỉ (3) © Các bước chuyển đổi chương trình [€ program: test.c h [= —b ia __ Executable: test.exe — C Memory | Các loại địa chỉ m Dịa chỉÍosic còn gọi là địa chỉ ảo, là tất cả các địa chi do bộ xử lý tạora m Dịa chỉ physic - là địa chỉ thực tế mà trình quản lý bộ nhớ nhìn thấy và thao tác a Không gian địa chỉ là tập hợp tất cả các địa chỉ ảo phát sinh bởi một chương trình a Không gian vật lý là tập hợp tất cả các địa chỉ vật lý tương ứng với các địa chỉ ảo Chuyển đổi địa chỉ (1) - Việc chuyển đổi địa chỉ logic -> địa chỉ vật lý có thể thực hiện vào một trong 3 thời điểm — compile time — load time — execution time ° Nhận xét — Compile time : -Ổ Thực hiện vào thời điểm biên dịch © Phải biết trước vi tri nap tiến trình trong bộ nhớ -> biêndịchlại cho những lần nạp sau Chuyển đổi địa chỉ (2) ° Nhận xét ¢ loadtime — Thựchiện bởi bộ loader, khi nạp vào bộ nhớ —_ Khi có sự thay đổi vị trí của tiến trình (sau đó) cần load lại để tính toán lại địa chỉ °. execution time — Nếu trong quá trình thực thi tiến trình có di chuyển vị trí tiến trình thì thời điểm chuyển đổi địa chỉ là run time — Cần dùng cơ chế phần cứng đặc biệt Chuyển đổi địa chỉ (3) ¢ MMU (memory-management unit)— phan cứng giúp chuyển đổi địa chỉ vào thời điểm run-time physical Address logical adliress 14B CPU mammary MiMUI Các yêu cầu quản lý bộ nhớ Tăng hiệu suất sử dung CDU Cần hỗ trợ Multiprogramming „ _ Lưutrữcùng lúenhiều tiến trình trong BNC ?
Tổng quan về giáo trình
Giáo trình thuộc môn học Hệ điều hành (Operating Systems) – một học phần cơ sở ngành bắt buộc trong khung chương trình đào tạo trình độ đại học và sau đại học của các ngành Khoa học Máy tính, Kỹ thuật Phần mềm, Kỹ thuật Máy tính và Hệ thống Thông tin. Trong cấu trúc khối kiến thức ngành, học phần này giữ vị trí mắt xích kết nối giữa các môn học về phần cứng (Kiến trúc máy tính, Hợp ngữ) và các môn học về phần mềm ứng dụng (Lập trình hệ thống, Cơ sở dữ liệu, Mạng máy tính). Giáo trình cung cấp cơ sở lý thuyết và mô hình kỹ thuật nhằm làm rõ cách thức phần mềm hệ thống điều phối, kiểm soát tài nguyên phần cứng của 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 các kiến thức và kỹ năng:
- Hiểu rõ bản chất tổ chức của bộ nhớ chính dưới dạng mảng một chiều các từ nhớ (word), mỗi từ nhớ gắn liền với một địa chỉ vật lý cụ thể, và vai trò của hệ điều hành trong việc phân bổ tài nguyên này khi hỗ trợ môi trường đa nhiệm (multiprogramming).
- Nắm vững cơ chế phân biệt giữa không gian địa chỉ logic (địa chỉ ảo do CPU phát sinh) và không gian địa chỉ vật lý (địa chỉ thực tế trên bộ nhớ chính).
- Phân tích và tính toán được cơ chế chuyển đổi địa chỉ qua ba thời điểm: biên dịch (compile time), nạp (load time), và thực thi (execution time).
- Vận hành, đánh giá và so sánh hiệu quả giữa các mô hình cấp phát bộ nhớ liên tục (Fixed Partitioning, Dynamic Partitioning) và không liên tục (Segmentation, Paging).
- Phân tích hiện tượng phân mảnh nội (internal fragmentation), phân mảnh ngoại (external fragmentation), giải pháp dồn bộ nhớ (memory compaction) và nguyên lý mở rộng không gian bằng kỹ thuật phân trang đa cấp, bảng trang nghịch đảo và bộ nhớ ảo (virtual memory).
Cấu trúc tài liệu được thiết kế theo phương pháp diễn dịch kỹ thuật, đi từ các nguyên tắc quản lý bộ nhớ nền tảng, các ràng buộc phần cứng (thanh ghi Base, thanh ghi Bound, bộ quản lý bộ nhớ MMU) cho đến các thuật toán phân bổ cụ thể và cấu trúc dữ liệu bảng quản lý bộ nhớ. Điểm đặc trưng của tài liệu là sự tích hợp chặt chẽ giữa các định nghĩa hình thức, mô hình phần cứng trực quan và các bài tập tính toán số học cụ thể đối với từng cơ chế chuyển đổi địa chỉ.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Mạch nội dung trong chương quản lý bộ nhớ được phân chia thành các chủ đề kỹ thuật nối tiếp nhau theo tiến trình nâng dần mức độ trừu tượng:
- Dẫn nhập và các yêu cầu quản lý bộ nhớ: Xác lập bản chất bộ nhớ chính là thiết bị lưu trữ duy nhất trao đổi trực tiếp với CPU. Khi hệ điều hành vận hành chế độ đa nhiệm, bộ nhớ phải đồng thời lưu trữ nhiều tiến trình. Hệ điều hành cần đáp ứng năm yêu cầu cấu trúc: Tái định vị (Relocation), Bảo vệ (Protection), Chia sẻ (Sharing), Tổ chức logic (Logical Organization), và Tổ chức vật lý (Physical Organization).
- Không gian địa chỉ và chuyển đổi địa chỉ: Trình bày ranh giới giữa địa chỉ logic (do bộ xử lý tạo ra) và địa chỉ vật lý (trình quản lý bộ nhớ thao tác). Phân tích ba thời điểm chuyển đổi: thời điểm biên dịch (phải xác định trước vị trí nạp cố định), thời điểm nạp (thực hiện qua bộ nạp Linker Loader với công thức địa chỉ vật lý bằng địa chỉ logic cộng địa chỉ cơ sở base), và thời điểm thực thi (thực hiện thông qua phần cứng MMU với cơ chế thanh ghi Base và Bound để kiểm tra tính hợp lệ trong phạm vi cho phép).
- Cơ chế cấp phát liên tục (Contiguous Allocation): Nghiên cứu hai phương thức phân vùng:
- Phân vùng cố định (Fixed Partitioning): Kích thước bằng nhau hoặc không bằng nhau, tổ chức theo một hàng đợi hoặc nhiều hàng đợi; dẫn đến hiện tượng phân mảnh nội và giới hạn mức độ đa chương.
- Phân vùng động (Dynamic Partitioning): Cấp phát vùng nhớ theo kích thước yêu cầu của tiến trình nhằm triệt tiêu phân mảnh nội, nhưng phát sinh phân mảnh ngoại; áp dụng kỹ thuật dồn bộ nhớ (compaction) với chi phí xử lý cao.
- Chiến lược chọn phân vùng: First-fit (chọn vùng trống đầu tiên), Best-fit (chọn vùng trống nhỏ nhất đủ dung lượng), Worst-fit (chọn vùng trống lớn nhất).
- Cơ chế cấp phát không liên tục – Phân đoạn (Segmentation): Ánh xạ không gian địa chỉ logic phản ánh cấu trúc chương trình nguồn (hàm main, chương trình con, mảng, stack) sang các phân vùng biến đổi trong bộ nhớ vật lý. Cơ chế chuyển đổi run-time dựa trên bảng đoạn (Segment Table) với hai thông số là giới hạn (Limit) và địa chỉ cơ sở (Base), hỗ trợ bảo vệ và chia sẻ ở cấp độ module.
- Cơ chế cấp phát không liên tục – Phân trang (Paging): Chia không gian địa chỉ logic thành các trang (pages) có kích thước cố định bằng với khung trang (frame) của bộ nhớ vật lý. Phép chuyển đổi địa chỉ tách địa chỉ logic thành số hiệu trang (page number - $p$) và độ dời (offset - $d$), sau đó tra cứu bảng trang (Page Table) để xác định khung trang ($f$). Cơ chế này loại bỏ hoàn toàn phân mảnh ngoại nhưng vẫn tồn tại phân mảnh nội ở trang cuối cùng.
- Cấu trúc bảng trang nâng cao và Bộ nhớ ảo (Virtual Memory): Giải quyết vấn đề dung lượng bảng trang lớn bằng mô hình bảng trang đa cấp (Multi-level Page Table) và bảng trang nghịch đảo (Inverted Page Table với cấu trúc định danh tiến trình PID, số hiệu trang, và độ dời). Giới thiệu cơ chế nạp từng phần tiến trình thông qua bộ nhớ ảo kết hợp bộ nhớ phụ (đĩa) và kỹ thuật hoán trang (swapping) dựa trên các bit cờ hiệu hợp lệ/bất hợp lệ.
Tiến trình nội dung quản lý bộ nhớ:
[Yêu cầu & Không gian địa chỉ]
Kiến thức nền tảng được xây dựng
Giáo trình thiết lập các hệ thống lý thuyết cốt lõi trong khoa học máy tính:
- Lý thuyết ánh xạ không gian địa chỉ: Chuyển đổi từ không gian tuyến tính hoặc cấu trúc logic sang không gian vật lý gián đoạn.
- Nguyên lý bẫy lỗi phần cứng (Hardware Traps): Kiểm tra giới hạn địa chỉ trong thời gian chạy (so sánh địa chỉ với thanh ghi Bound hoặc giá trị Limit của đoạn), tự động phát tín hiệu lỗi khi tiến trình truy xuất ngoài vùng nhớ được cấp phát.
- Nguyên tắc đánh đổi trong kỹ thuật (Trade-offs): Sự cân đối giữa việc tối ưu không gian lưu trữ (giảm phân mảnh) và độ phức tạp tính toán (chi phí dồn bộ nhớ, thời gian truy xuất bảng trang nhiều cấp qua bộ nhớ).
Kỹ năng phát triển
Tài liệu định hướng rèn luyện ba nhóm năng lực chuyên môn:
- Kỹ năng kỹ thuật (Technical skills): Phân tích cấu trúc địa chỉ nhị phân 16-bit thành các trường dữ liệu bit (số hiệu đoạn, số hiệu trang, offset). Thực hiện các phép chia nguyên (
div) và chia lấy dư (mod) để phân rã địa chỉ logic thập phân sang địa chỉ vật lý. - Kỹ năng phân tích (Analytical skills): Đánh giá tác động của các chiến lược chọn vùng nhớ (First-fit, Best-fit, Worst-fit) đối với tình trạng phân mảnh bộ nhớ; phân tích sự suy giảm hiệu năng khi kích thước bảng trang tăng lên.
- Kỹ năng thực hành giải pháp (Practical competencies): Thiết lập các thông số cho bảng đoạn (Segment Table) và bảng trang (Page Table), xác định cơ chế bảo vệ và chia sẻ mã nguồn giữa các tiến trình dựa trên quyền truy cập vùng nhớ.
Phương pháp giảng dạy và học tập
Giáo trình áp dụng phương pháp tiếp cận cấu trúc – định lượng. Nội dung lý thuyết đi kèm các biểu diễn sơ đồ kỹ thuật chi tiết: sơ đồ hoạt động của MMU, cấu trúc luồng chuyển đổi địa chỉ giữa CPU, thanh ghi và bộ nhớ chính, cùng sơ đồ tổ chức không gian bộ nhớ vật lý.
Hệ thống bài tập tình huống và bài tập định lượng được bố trí ngay sau mỗi phần lý thuyết cơ chế:
- Tình huống cấp phát phân vùng: Bài tập cấp phát cho 4 tiến trình $P_1$ (212 KB), $P_2$ (417 KB), $P_3$ (112 KB), $P_4$ (426 KB) vào 4 phân vùng trống có kích thước theo thứ tự 600 KB, 500 KB, 200 KB, 300 KB. Người học phải mô phỏng chính xác trạng thái bộ nhớ theo từng thuật toán First-fit, Best-fit và Worst-fit để rút ra kết luận về tính tối ưu của từng giải thuật.
- Bài tập chuyển đổi địa chỉ phân đoạn: Cho một Segment Table cụ thể với các thông số đoạn 0 (Limit 500, Base 215), đoạn 1 (Limit 25, Base 2100), đoạn 2 (Limit 100, Base 120); yêu cầu xác định tính hợp lệ và địa chỉ vật lý tương ứng của địa chỉ logic dạng
<0, 300>. - Bài tập tính toán phân trang: Cho kích thước trang là 1024 bytes và bảng trang ánh xạ các trang 0, 1, 2, 3 sang khung trang tương ứng là 1, 4, 2, 6. Người học thực hiện phân rã các địa chỉ logic:
- Với địa chỉ 1642: $p = 1642 \text{ div } 1024 = 1$; $d = 1642 \text{ mod } 1024 = 618$. Khung trang $f = 4$. Địa chỉ vật lý: $4 \times 1024 + 618 = 4714$.
- Với địa chỉ 3671: $p = 3671 \text{ div } 1024 = 3$; $d = 3671 \text{ mod } 1024 = 599$. Khung trang $f = 6$. Địa chỉ vật lý: $6 \times 1024 + 599 = 6743$.
Quy trình tính toán phân trang mẫu trong giáo trình:
Địa chỉ logic: A = 1642, Kích thước trang: S = 1024
Về mặt kiểm tra đánh giá, giáo trình hỗ trợ thiết kế các đề thi trắc nghiệm lý thuyết phần cứng, các bài toán tự luận phân rã địa chỉ và bài tập lớn lập trình mô phỏng các chiến lược cấp phát bộ nhớ bằng ngôn ngữ C hoặc C++. Hướng dẫn tự học nhấn mạnh vào việc tự viết lại quy trình chuyển đổi địa chỉ ở cấp độ nhị phân và lập bảng so sánh ưu nhược điểm của từng phương pháp cấp phát.
Điểm nổi bật và cập nhật
Nội dung tài liệu thể hiện rõ các quy chuẩn kỹ thuật của hệ điều hành hiện đại:
- Tích hợp đồng bộ giữa kiến trúc phần cứng và giải thuật phần mềm: Giáo trình không tách rời lý thuyết hệ điều hành khỏi phần cứng thực thi. Các cơ chế như MMU, thanh ghi STBR (Segment-Table Base Register), STLR (Segment-Table Length Register), cơ chế hoán đổi và kiểm tra lỗi truy xuất bộ nhớ được trình bày như một thể thống nhất.
- Giải quyết bài toán quy mô không gian địa chỉ lớn: Tài liệu phản ánh thách thức kỹ thuật khi chuyển dịch sang các không gian địa chỉ lớn hơn. Việc bổ sung phân tích về Bảng trang đa cấp (Multi-level Page Table) và Bảng trang nghịch đảo (Inverted Page Table) giúp người học nắm bắt phương pháp tối ưu dung lượng bộ nhớ dùng để lưu trữ bảng quản lý – một vấn đề cốt lõi trong các hệ thống 32-bit và 64-bit.
- Tiền đề trực tiếp cho cơ chế bộ nhớ ảo: Giáo trình dẫn dắt tự nhiên từ các hạn chế của mô hình nạp toàn bộ chương trình (giới hạn bởi kích thước bộ nhớ chính vật lý) sang cơ chế bộ nhớ ảo. Bằng việc phân chia trang và phối hợp với bộ nhớ phụ (đĩa cứng), hệ thống cho phép thực thi các tiến trình có dung lượng lớn hơn bộ nhớ vật lý khả dụng.
Đối tượng sử dụng giáo trình
Giáo trình được biên soạn phục vụ các nhóm đối tượng học thuật và chuyên môn cụ thể:
- Sinh viên đại học năm thứ hai hoặc năm thứ ba: Sinh viên thuộc các chuyên ngành Khoa học Máy tính, Kỹ thuật Phần mềm, Kỹ thuật Máy tính, An toàn Thông tin và Công nghệ Thông tin đang theo học học phần Hệ điều hành.
- Điều kiện tiên quyết (Prerequisites): Người học cần hoàn thành các môn học: Kiến trúc máy tính (hiểu về CPU, thanh ghi, chu kỳ chỉ thị), Cơ sở lập trình C/C++ (hiểu về con trỏ, cấp phát bộ nhớ tĩnh và động), và Cấu trúc dữ liệu và giải thuật (nắm vững hàng đợi, mảng, bảng tra cứu).
- Giảng viên đại học: Sử dụng tài liệu làm khung bài giảng chuẩn, tham khảo hệ thống sơ đồ chuyển đổi địa chỉ và các bài tập số học mẫu có lời giải chi tiết để xây dựng ngân hàng đề thi và tài liệu thực hành.
- Kỹ sư phần mềm và người tự học: Dùng làm tài liệu tham khảo kỹ thuật để hiểu sâu các lỗi truy xuất bộ nhớ cấp thấp (Segmentation Fault), cơ chế biên dịch/liên kết mã nguồn (Compiler, Linker, Loader), và cách thức hệ điều hành quản lý bộ nhớ của ứng dụ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 phù hợp cho sinh viên đại học ngành công nghệ thông tin đang học môn Hệ điều hành, giảng viên giảng dạy học phần này, cùng các lập trình viên muốn nghiên cứu sâu về kiến trúc máy tính và cơ chế quản lý tài nguyên cấp thấp của hệ thống.
2. Cần kiến thức nền nào để học?
Người học cần nắm vững biểu diễn số nhị phân và thập lục phân, các phép toán số học cấp thấp (div, mod, dịch bit), kiến trúc cơ bản của máy tính (CPU, thanh ghi, bộ nhớ chính), cùng kiến thức lập trình cơ bản về con trỏ và cấu trúc dữ liệu.
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ì?
Giáo trình tập trung làm rõ chi tiết cơ chế hoạt động của phần cứng hỗ trợ (MMU, các cặp thanh ghi Base/Bound, Limit/Base) kết hợp với các bài tập định lượng phân rã bit và tính toán địa chỉ vật lý cụ thể, giúp người học nắm bắt bản chất kỹ thuật thay vì chỉ tiếp cận lý thuyết thuần túy.
4. Làm sao để tự học hiệu quả nội dung trong giáo trình?
Người học nên tự vẽ lại các sơ đồ luồng dữ liệu của MMU, thực hành giải tuần tự các bài tập phân rã địa chỉ từ hệ thập phân sang nhị phân và ngược lại, đồng thời tự lập bảng so sánh mức độ phân mảnh, chi phí thời gian và chi phí không gian của từng kỹ thuật cấp phát.
5. Có tài liệu bổ trợ nào kèm theo không?
Tài liệu cung cấp các slide trực quan hóa cơ chế phần cứng, bảng ánh xạ dữ liệu mẫu (bảng trang, bảng phân đoạn) và hệ thống các bài toán cấp phát bộ nhớ có số liệu chi tiết để người học tự kiểm tra kết quả tính toán.
Kết luận
Chương quản lý bộ nhớ trong giáo trình Hệ điều hành cung cấp hệ thống kiến thức chuẩn tắc về nguyên lý tổ chức, bảo vệ và phân bổ bộ nhớ chính trong môi trường máy tính đa nhiệm. Tài liệu làm rõ sự phối hợp giữa phần mềm hệ điều hành và các khối phần cứng chuyên dụng (MMU, thanh ghi) qua các mô hình từ cấp phát liên tục đến phân đoạn và phân trang.
Lộ trình học tập tiếp theo được khuyến nghị là nghiên cứu các giải thuật thay thế trang trong bộ nhớ ảo (FIFO, LRU, Optimal Page Replacement), phân tích cơ chế quản lý bộ nhớ trong nhân hệ điều hành thực tế (như nhân Linux hoặc Windows), và đối chiếu với hệ thống tệp tin (File Systems) để hoàn thiện bức tranh toàn diện về quản lý lưu trữ trong hệ thống máy tính.