Giáo trình Hệ điều hành - Chương 7: Quản lý bộ nhớ - Nguyễn Phú Trường

I Mục đích

Sau khi học xong chương này, người học nắm được những kiến thức sau:

• Hiểu các cách khác nhau để quản lý bộ nhớ

• Hiểu tiếp cận quản lý bộ phân trang và phân đoạn

• Vận dụng một tiếp cận quản lý bộ nhớ phù hợp với hệ thống xác định

pdf37 trang | Chia sẻ: hienduc166 | Lượt xem: 594 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình Hệ điều hành - Chương 7: Quản lý bộ nhớ - Nguyễn Phú Trường, để xem tài liệu hoàn chỉnh bạn click vào nút TẢI VỀ ở trên
oạn hiện hành nên cho phép 
mã tránh tham chiếu trực tiếp tới số phân đoạn hiện hành. 
VI.2.4 Sự phân mãnh 
Bộ định thời biểu dài phải tìm và cấp phát bộ nhớ cho tất cả các phân đoạn của 
chương trình người dùng. Trường hợp này tương tự như phân trang ngoại trừ các phân 
đoạn có chiều dài thay đổi; các trang có cùng kích thước. Do đó, với cơ chế phân khu 
có kích thước thay đổi, cấp phát bộ nhớ là một vấn đề cấp phát lưu trữ động, thường 
giải quyết với giải thuật best-fit hay first-fit. 
Phân đoạn có thể gây ra sự phân mãnh, khi tất cả khối bộ nhớ trống là quá nhỏ 
để chứa một phân đoạn. Trong trường hợp này, quá trình có thể phải chờ cho đến khi 
nhiều bộ nhớ hơn (hay ít nhất một lỗ lớn hơn) trở nên sẳn dùng, hay cho tới khi việc 
hợp nhất các lỗ nhỏ để tạo một lỗ lớn hơn. Vì sự phân đoạn dùng giải thuật tái định vị 
động nên chúng ta có thể gom bộ nhớ bất cứ khi nào chúng ta muốn. Nếu bộ định thời 
biểu CPU phải chờ một quá trình vì vấn đề cấp phát bộ nhớ, nó có thể (hay không thể) 
bỏ qua hàng đợt CPU để tìm một quá trình nhỏ hơn, có độ ưu tiên thấp hơn để chạy. 
Phân mãnh ngoài đối với cơ chế phân đoạn là vấn đề quan trọng như thế nào? 
Định thời biểu theo thuật ngữ dài với sự cô đặc sẽ giúp giải quyết vấn đề phân mãnh 
phải không? Câu trả lời phụ thuộc vào kích thước trung bình của phân đoạn. Ở mức 
độ cao nhất, chúng ta có thể định nghĩa mỗi quá trình là một phân đoạn. Tiếp cận này 
cắt giảm cơ chế phân khu có kích thước thay đổi. Ở cấp độ khác, mỗi byte có thể 
được đặt trong chính phân đoạn của nó và được cấp phát riêng. Sắp xếp này xoá đi 
việc phân mãnh bên ngoài; tuy nhiên mỗi byte cần một thanh ghi nền cho mỗi tái định 
vị của nó, gấp đôi bộ nhớ được dùng! Dĩ nhiên, bước luận lý tiếp theo-các phân đoạn 
nhỏ có kích thước cố định-là phân trang. Thông thường, nếu kích thước phân đoạn 
trung bình là nhỏ, phân mãnh ngoài cũng sẽ nhỏ. Vì cá nhân các phân đoạn là nhỏ hơn 
toàn bộ quá trình nên chúng có vẻ thích hợp hơn để đặt vào trong các khối bộ nhớ sẳn 
dùng. 
VI.3 Phân đoạn với phân trang 
Cả hai phân đoạn và phân trang có những lợi điểm và nhược điểm. Thật vậy, 
hai bộ vi xử lý phổ biến nhất hiện nay là: dòng Motorola 68000 được thiết kế dựa trên 
cơ sở không gian địa chỉ phẳng, ngược lại, họ Intel 80x86 và Petium dựa trên cơ sở 
phân đoạn. Cả hai là mô hình bộ nhớ hợp nhất hướng tới sự kết hợp của phân trang và 
phân đoạn. Chúng ta có thể kết hợp hai phương pháp để tận dụng lợi điểm của chúng. 
Sự kết hợp này được thể hiện tốt nhất bởi kết trúc của Intel 386. 
Ấn bản IBM OS/2 32-bit là một hệ điều hành chạy trên đỉnh của kiến trúc Intel 
386 (hay cao hơn). Intel 386 sử dụng phân đoạn với phân trang cho việc quản lý bộ 
nhớ. Số tối đa các phân đoạn trên quá trình là 16KB và mỗi phân đoạn có thể lớn tới 
4GB. Kích thước trang là 4 KB. Chúng ta sẽ không cho một mô tả đầy đủ về cấu trúc 
quản lý bộ nhớ của Intel 386 trong giáo trình này. Thay vào đó, chúng ta sẽ trình bày 
các ý tưởng quan trọng. 
Không gian địa chỉ luận lý của quá trình được chia thành hai phân khu. Phân 
khu thứ nhất chứa tới 8 KB các phân đoạn dành riêng cho quá trình đó. Phân khu thứ 
Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 170
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Hệ Điều Hành – V1.0 
hai chứa tới 8 KB các phân đoạn được chia sẻ giữa tất cả quá trình. Thông tin về phân 
khu thứ nhất được giữ trong bảng mô tả cục bộ (Local Descriptor Table-LDT), thông 
tin về phân khu thứ hai được giữ trong bảng mô tả toàn cục (Global Descriptor Table-
GDL). Mỗi mục từ trong LDT và GDT chứa 8 bytes, với thông tin chi tiết về phân 
đoạn xác định gồm vị trí nền và chiều dài của phân đoạn đó. 
Địa chỉ luận lý là một cặp (bộ chọn, độ dời), ở đây bộ chọn là một số 16-bit 
S G P 
13 1 2 
Trong đó: s gán tới số phân đoạn, g hiển thị phân đoạn ở trong GDT hay LDT, 
và p giải quyết vấn đề bảo vệ. Độ dời là một số 32-bit xác định vị trí của byte (hay từ) 
trong phân đoạn. 
Máy này có 6 thanh ghi, cho phép 6 phân đoạn được xác định tại bất cứ thời 
điểm nào bởi một quá trình. Nó có 6 thanh ghi vi chương trình 8-byte để quản lý bộ 
mô tả tương ứng từ LDT hay GDT. Bộ lưu trữ này để Intel 386 tránh phải đọc bộ mô 
tả từ bộ nhớ cho mỗi lần tham chiếu bộ nhớ. 
Địa chỉ vật lý trên 386 dài 32 bits và được hình thành như sau. Thanh ghi đoạn 
chỉ tới mục từ tương ứng trong LDT hay GDT. Thông tin nền và giới hạn về phân 
đoạn được dùng để phát sinh một địa chỉ tuyến tính. Đầu tiên, giới hạn được dùng để 
kiểm tra tính hợp lệ của địa chỉ. Nếu địa chỉ không hợp lệ, lỗi bộ nhớ được tạo ra, dẫn 
đến một trap tới hệ điều hành. Nếu nó là hợp lệ, thì giá trị của độ dời được cộng vào 
giá trị của nền, dẫn đến địa chỉ tuyến tính 32-bit. Sau đó, địa chỉ này được dịch thành 
địa chỉ vật lý. 
Như được nêu trước đó, mỗi phân đoạn được phân trang và mỗi trang có kích 
thước 4 KB. Do đó, bảng trang có thể chứa tới 1 triệu mục từ. Vì mỗi mục từ chứa 4 
bytes nên mỗi quá trình có thể cần 4 MB không gian địa chỉ vật lý cho một bảng 
trang. Rõ ràng, chúng ta không muốn cấp phát bảng trang liên tục trong bộ nhớ. Giải 
pháp này được thông qua trong Intel 386 để dùng cơ chế phân trang 2 cấp. Địa chỉ 
tuyến tính được chia thành số trang chứa 20 bits, và độ dời trang chứa 12 bits. Vì 
chúng ta phân trang bảng trang, số trang được chia nhỏ thành con trỏ thư mục trang 
10-bit và con trỏ bảng trang 10-bit. Địa chỉ luận lý như sau: 
 P1 P2 D 
10 10 12 
Cơ chế dịch địa chỉ cho kiến trúc này tương tự như cơ chế được hiển thị trong 
hình VII-18. Dịch địa chỉ Intel được hiển thị chi tiết hơn trong hình VII-27dưới đây. 
Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 171
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Hệ Điều Hành – V1.0 
Hình 0-27 Dịch địa chỉ Intel 386 
Để cải tiến tính hiệu quả của việc sử dụng bộ nhớ vật lý, bảng trang Intel 386 
có thể được hoán vị tới đĩa. Trong trường hợp này, mỗi bit được dùng trong mục từ 
thư mục trang để hiển thị bảng mà mục từ đang chỉ tới ở trong bộ nhớ hay trên đĩa. 
Nếu bảng ở trên đĩa, hệ điều hành có thể dùng 31 bit còn lại để xác định vị trí đĩa của 
bảng; sau đó bảng có thể được mang vào bộ nhớ theo yêu cầu. 
VII Tóm tắt 
Các giải thuật quản lý bộ nhớ cho hệ điều hành đa chương trải dài từ tiếp cận 
hệ thống người dùng đơn tới phân đoạn được phân trang. Yếu tố quyết định lớn nhất 
của phương pháp được dùng trong hệ thống cụ thể là phần cứng được cải thiện. Mỗi 
địa chỉ bộ nhớ được được tạo ra bởi CPU phải được kiểm tra hợp lệ và có thể được 
ánh xạ tới một địa chỉ vật lý. Kiểm tra không thể được cài đặt (hữu hiệu) bằng phần 
mềm. Do đó, chúng ta bị ràng buộc bởi tính sẳn dùng phần cứng. 
Các giải thụât quản lý bộ nhớ được thảo luận (cấp phát liên tục, phân trang, 
phân đoạn, và sự kết hợp của phân trang và phân đoạn) khác nhau trong nhiều khía 
cạnh. Trong so sánh các chiến lược quản lý bộ nhớ, chúng ta nên sử dụng các xem xét 
sau: 
• Hỗ trợ phần cứng: thanh ghi nền hay cặp thanh ghi nền và thanh ghi giới 
hạn là đủ cho cơ chế phân khu đơn và đa, ngược lại phân trang và phân 
đoạn cần bảng ánh xạ để xác định ánh xạ địa chỉ. 
• Năng lực: khi giải thuật quản lý bộ nhớ trở nên phức tạp hơn thì thời gian 
được yêu cầu để ánh xạ địa chỉ luận lý tới địa chỉ vật lý tăng. Đối với các 
hệ thống đơn giản, chúng ta chỉ cần so sánh hay cộng địa chỉ luận lý-các 
thao tác này phải nhanh. Phân trang và phân đoạn có thể nhanh như nếu 
Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 172
Đại Học Cần Thơ - Khoa Công Nghệ Thông Tin - Giáo Trình Hệ Điều Hành – V1.0 
bảng được cài đặt trong các thanh ghi nhanh. Tuy nhiên, nếu bảng ở tron
bộ nhớ thì về thực chất truy xuất bộ nhớ của người dùng có thể bị giảm. 
Một TLB có thể hạn chế việc giảm năng lực tới mức có thể chấp nhận. 
Phân mãnh: một hệ thống đa chương sẽ thực hiện hiệu quả hơn nếu nó 
g 
• có 
• . Cô đặc 
• Tại những 
• ột phương tiện khác để gia tăng cấp độ đa chương là chia sẻ mã 
ỏ 
à 
• cấp, các phần khác nhau 
à 
cấp độ đa chương cao hơn. Đối với một tập hợp quá trình được cho, chúng 
ta có thể tăng cấp độ đa chương chỉ bằng cách đóng gói nhiều quá trình 
hơn trong bộ nhớ. Để hoàn thành tác vụ này, chúng ta phải giảm sự lãng 
phí hay phân mãnh bộ nhớ. Các hệ thống với các đơn vị cấp phát có kích 
thước cố định, như cơ chế đơn phân khu và phân trang, gặp phải sự phân 
mãnh trong. Các hệ thống với đơn vị cấp phát có kích thước thay đổi như 
cơ chế đa phân khu và phân đoạn, gặp phải sự phân mãnh ngoài. 
Tái định vị: một giải pháp cho vấn đề phân mãnh ngoài là cô đặc
liên quan đến việc chuyển dịch một chương trình trong bộ nhớ không chú 
ý những thay đổi của chương trình. Xem xét này yêu cầu địa chỉ luận lý 
được tái định vị động tại thời điểm thực thi. Nếu địa chỉ được tái định vị 
chỉ tại thời điểm nạp, chúng ta không thể lưu trữ dạng cô đặc. 
Hoán vị: bất cứ giải thuật có thể có hoán vị được thêm tới nó. 
khoảng thời gian được xác định bởi hệ điều hành, thường được mô tả bởi 
các chính xác định thời, các quá trình được chép từ bộ nhớ chính tới vùng 
lưu trữ phụ và sau đó được chép trở lại tới bộ nhớ chính. Cơ chế này cho 
phép nhiều quá trình được chạy hơn là có thể đặt vào bộ nhớ tại cùng một
thời điểm. 
Chia sẻ: m
và dữ liệu giữa các người dùng khác nhau. Thường việc chia sẻ yêu cầu 
phân trang hay phân đoạn được dùng, để cung cấp những gói thông tin nh
(các trang hay các đoạn) có thể được chia sẻ. Chia sẻ là một phương tiện 
chạy nhiều quá trình với lượng bộ nhớ giới hạn nhưng các chương trình v
dữ liệu được chia sẻ phải được thiết kế cẩn thận. 
Bảo vệ: nếu phân trang hay phân đoạn được cung
của chương trình người dùng có thể được khai báo chỉ thực thi, chỉ đọc, 
hay đọc-viết. Sự hạn chế này là cần thiết với mã và dữ liệu được chia sẻ v
thường có ích trong bất cứ trường hợp nào để cung cấp việc kiểm tra tại 
thời gian thực thi cho các lỗi lập trình thông thường. 
Biên soạn: Th.s Nguyễn Phú Trường - 09/2005 Trang 173

File đính kèm:

  • pdfChuong7-Quan ly bo nho.pdf