CHƯƠNG 3: ĐIỀU KHIỂN BỘ NHỚ
3.4.3 Hệ thống đa chương với phân vùng động
Hệ điều hành giữ một bảng hiển thị những phần nào của bộ nhớ là rỗi và phần nào đang bận. Ban đầu, tất cả bộ nhớ là sẵn dùng cho tiến trình người dùng, và được xem như một khối lớn bộ nhớ sẵn dùng. Khi một tiến trình đến và cần bộ nhớ, hệ điều hành tìm kiếm một vùng trống đủ lớn cho tiếntrình này. Nếu tìm thấy, hệ điều hành sẽ cấp phát cho tiến trình phần bộ nhớvừa đúng với kích thước của tiến trình, phần bộ nhớ còn lại dành cho các tiến trình khác.
Hình 3.4 Cấp phát đa vùng với phân vùng động
Thông thường, một tập hợp các vùng trốngcó kích thước khác nhau được phân tán khắp bộ nhớ tại bất cứ thời điểm được cho. Khi một tiến trình đến và yêu cầu bộ nhớ, hệ thống tìm tập hợp này một vùng trống đủ lớn cho tiếntrình này. Nếu vùng trống quá lớn, nó được chia làm hai: một phần được cấp cho tiếntrình đến; phần còn lại được trả về tập hợp các vùng trống. Nếu vùng trốngmới nằm kề với các vùng trống khác, các vùng trốngnằm kề này được gom lại để tạo thành một vùng trốnglớn hơn.
Xuất hiệnhiện tượng phân mảnh ngoại vi( external fragmentation ) : khi các tiến trình lần lượt vào và ra khỏi hệ thống, dần dần xuất hiện các khe hở giữa các tiến trình. Đây là các khe hở được tạo ra do kích thước của tiến trình mới được nạp nhỏ hơn kích thước vùng nhớ mới được giải phóng bởi một tiến trình đã kết thúc và ra khỏi hệ thống. , không gian bộ nhớ trống bị phân rã thành những mảnh nhớ nhỏ.
Hiện tượng này có thể dẫn đến tình huống tổng vùng nhớ trống đủ để thoả mãn yêu cầu, nhưng các vùng nhớ này lại không liên tục ! Người ta có thể áp dụng kỹ thuật « dồn bộ nhớ » (memory compaction ) để kết hợp các mảnh bộ nhớ nhỏ rời rạc thành
72 một vùng nhớ lớn liên tục. Tuy nhiên, kỹ thuật này đòi hỏi nhiều thời gian xử lý, ngoài ra, sự kết buộc địa chỉ phải thực hiện vào thời điểm xử lý, vì các tiến trình có thể bị di chuyển trong quá trình dồn bộ nhớ.
Thuật toán đơn giản là dịch chuyển các tiến trình về phía đầu của bộ nhớ. Ví dụ:
Hình 3.5
Vấn đề cấp phát động
Lựa chọn vùng nhớ tự do trong danh sách các vùng nhớ tự do để cấp phát cho tiến trình.
Có 3 chiến lược phổ biến nhất được dùng:
• First-fit: cấp phát vùng nhớ tự dođầu tiên đủ lớn. Tìm kiếm có thể bắt đầu tại đầu từ danh sách tập hợp các vùng trống hay tại điểm kết thúc của tìm kiếm first-fit trước đó. Chúng ta dừng tìm kiếm ngay khi chúng ta tìm thấy một vùng trống đủ lớn.
• Best-fit: cấp phát vùngnhớ tự do nhỏ nhất đủ lớn. Chúng ta phải tìm toàn bộ danh sách, trừ khi danh sách được xếp thứ tự theo kích thước.
Worst-fit: cấp phát vùng nhớ tự do lớn nhấtđủ lớn để chứa tiến trình. Chúng ta phải tìm toànbộ danh sách trừ khi nó được xếp theo thứ tự kích thước.
Quản lý các khối rỗi bận
- Quản lý bằng bản đồ bit:
Bộ nhớ được chia thành các đơn vị cấp phát, mỗi đơn vị được ánh xạ tới một bit trong bản đồ bit. Giá trị bit này xác định trạng thái của đơn vị bộ nhớ đó: 0 đang tự do, 1 đã được cấp phát. Khi cần nạp một tiến trình có kích thước k đơn vị, hệ thống sẽ tìm trong bản đồ bit một dãy k bit có giá trị 0.
Kích thước của đơn vị cấp phát là vấn đề lớn trong thiết kế. Nếu kích thước đơn vị cấp phát nhỏ sẽ làm tăng kích thước của bản đồ bit. Ngược lại, nếu kích thước đơn vị
HDH P1 P1 P2 P3 P4 HDH P1 P2 P3 P4 0 300K 500K 600K 1000K 1200K 1500K 1900K 2100K Cấp phát gốc HDH P1 P2 P3 P4 HDH P1 P2 P3 P4 0 300K 500K 600K 800 K 1200K 2100K Dịch chuyển 600K HDH P1 P2 P3 P4 HDH P1 P2 P3 P4 0 300K 500K 600K 1000K 1200K 1900K 2100K Dịch chuyển 400K HDH P1 P2 P3 P4 HDH P1 P2 P3 P4 0 300K 500K 600K 1500K 1900K 2100K Dịch chuyển 200K
73 cấp phát lớn có thể gây hao phí cho đơn vị cấp phát sau cùng. Đây là giải pháp đơn giản nhưng thực hiện chậm nên ít được dùng.
Hình 3.6 Quản lý bộ nhớ bằng bảnđồ bit - Quản lý bằng danh sách liên kết:
Dùng một danh sách liên kết để quản lý các phân đoạn bộ nhớ đã cấp phát và phân đoạn tự do.Danh sách liên kết gồm nhiều nút liên tiếp. Mỗi nút gồm 1 bit đầu để xác định phân đoạn đó là vùngtrống (H) hay một tiếntrình (P), sau đó là 3 từ để chỉ địa chỉ bắt đầu, chiều dài và chỉ điểm tới mục kế tiếp. Việc sắp xếp các phân đoạn theo địa chỉ hay theo kích thước tuỳ thuộc vào giải thuật quản lý bộ nhớ.
Hình 3.7 Quản lý bộ nhớ bằng danh sách liên kết