Please enable JavaScript.
Coggle requires JavaScript to display documents.
Chương 5 - Coggle Diagram
Chương 5
Quản lý bộ nhớ ảo trên hệ đa chương
Phân trang(Paging)
Phân đoạn(Segmentation)
Phân đoạn và phân trang (Segmentation & Paging)
MMU (Memory Management Unit)
Nguyên lý hoạt động
khi lập trình, các lệnh truy xuất các địa chỉ trong không gian phẳng có dùng lượng rất lớn (4GB). Không gian này được gọi là luận lý (ảo). Nếu phần mềm hạn chế truy xuất trong không gian này thì HĐH sẽ đảm bảo nó chạy tốt cho dù kích thước thật của Ram nhỏ hơn nhiều
Để quản lý việc swap (nạp vào/ghi ra) bộ nhớ ảo, HĐH chia bộ nhớ ảo của ứng dụng ra thành nhiều đơn vị quản lý có kích thước đồng nhất, mỗi đơn vị được gọi là trang ảo. Kích thước trang ảo = 2i (256, 512, 1K, 2K, 4K, 8K,...).
Bộ nhớ RAM cũng được chia thành nhiều đơn vị quản lý, mỗi đơn vị được gọi là trang thật (page frame). Kích thước thật = kích thước trang ảo.
Trang thật là nơi chứa trang ảo khi cần thiết, tại từng thời điểm mỗi trang thật chứa tốt đa 1 trang ảo, nhưng theo thời gian nó có thể chứa nhiều trang ảo khác nhau.
Khi ứng dụng truy xuất 1 ô nhớ theo địa chỉ tuyến tính số nguyên, HĐH biết ngay ô nhớ đó thuộc trang ảo nào, nằm ở Offset nào trong trang ảo.
Để quản lý quá trình ánh xạ các trang ảo của chương trình vào các trang thật, HĐH dùng 1 bảng đặc tả trang ảo cho mỗi chương trình, bảng này có số phần tử = số trang ảo của chương trình tương ứng, mỗi phần tử của bảng là 1 record chứa các thông số quản lý trang ảo
tương ứng
Qui trình đổi địa chỉ ảo sang địa chỉ thật
từ địa chỉ mà chương trình truy xuất (addr), hệ thống tách thành 2 thành phần : page (i) và offset.
Truy xuất record quản lý trang ảo i trong bảng đặc tả trang. Nếu field inRAM=1 thì địa chỉ thật tương ứng là:
page frame | Offset và quy trình kết thúc
Nếu inRAM =0, hệ thống sẽ tìm 1 trang thật rãnh (k), nếu không có . Nếu inRAM =0, hệ thống sẽ tìm 1 trang thật rãnh (k), nếu không có phải tìm cách giải phóng 1 trang thật ít gây phiền hà nhất (k), dựa vào thông tin trong field "inDisk" để mở file và đọc trang ảo vào trang thật k.
Hiệu chỉnh lại field inRAM = 1 và field page frame = k rồi quay lại bước 2.
Tổng quát về quản lý bộ nhớ
Tính chất
dung lượng lớn
chạy nhanh
không bị mất thông tin
Bộ nhớ
Cache: giá cao, dung lượng hạn chế, tốc độ cao
Bộ nhớ chính DRAM: dung lượng trung bình, giá trung
bình, tốc độ trung bình
Đĩa cứng: dung lượng rất lớn, chậm, giá rẻ
Module quản lý bộ nhớ phải tận dụng các ưu/khuyết điểm của các loại bộ nhớ máy tính để cung cấp cho người lập trình không gian làm việc thoả mãn càng nhiều yêu cầu càng tốt.
Quản lý bộ nhớ thật trên hệ đa chương
1.
Kỹ thuật phân vùng tĩnh dùng nhiều hàng chờ độc lập(có 2 khuyết điểm chính)
Kích thước các phân vùng tĩnh thường không khớp với kích thước ứng dụng nên bị lãng phí.
sử dụng các phân vùng thường không đều gây ra lãng phí: nhiều phần mềm sắp hàng chạy trên phân vùng kích thước nhỏ, trong lúc phân vùng kích thước lớn không có ứng dụng chạy
HĐH được load vào vùng bộ nhớ thấp của RAM
phần trống còn lại của RAM sẽ được chia làm nhiều phân vùng
có kích thước tăng dần (10, 20, 40, 80, 160KB,...).
mỗi phân vùng có 1 hàng chờ các ứng dụng cần chạy trên phân
vùng tương ứng.
khi cần chạy ứng dụng, người chạy ứng dụng phải chọn phân vùng có kích thước nhỏ nhất nhưng >= kích thước ứng dụng và sắp hàng ở hàng chờ tương ứng.
HĐH sẽ phục vụ các ứng dụng trong từng hàng chờ theo thứ tự
ai đến trước phục vụ trước
2. Kỹ thuật phân vùng tĩnh dùng 1 hàng chờ duy nhất
HĐH được load vào vùng bộ nhớ thấp của RAM.
phần trống còn lại của RAM sẽ được chia làm nhiều phân vùng có kích thước tăng dần (10, 20, 40, 80, 160KB,...).
chỉ có 1 hàng chờ các ứng dụng cần chạy trên các phân vùng
khi 1 phân vùng rãnh, HĐH sẽ dò trong hàng chờ 1 ứng dụng có kích thước lớn nhất nhưng <= kích thước phân vùng và cho phép ứng dụng này chạy
3.Kỹ thuật phân vùng động
a.HĐH được load vào vùng bộ nhớ thấp của RAM. Khi ứng dụng A cần chạy, HĐH tạo phần vùng động vừa đúng kích thước của phần mềm A và nạp A vào phân vùng vừa tạo. Phân bộ nhớ trống còn lại để dành cho các phần mềm khác sau này.
b.tương tự tạo phân vùng cho B chạy.
c.tương tự tạo phân vùng cho C chạy.
d.A kết thúc và trả lại phân vùng mình đã chiếm
e.khi D chạy, HĐH tạo phần vùng động vừa đúng kích thước cho D.
f.khi E chạy, HĐH không tìm được vùng trống nào đủ lớn cho E cả.Trong trường hợp này, HĐH sẽ dời các phân vùng đang dùng bởi các ứng dụng lại kề nhau để tạo phân vùng trống duy nhất. Nếu kích thước của nó đủ chạy cho E thì sẽ tạo phân vùng động cho E chạy
Quản lý bộ nhớ của CPU Intel 80x86
real mode : đã có trong CPU 8088, CPU được dùng để xây dựng máy IBM PC đầu tiên. Đây là cơ chế quản lý bộ nhớ thật dùng kỹ thuật phân đoạn (segmentation).
protected mode : đã có trong CPU 80286. Đây là cơ chế quản lý bộ nhớ ảo dùng kỹ thuật phân đoạn (segmentation)
386 enchanced mode : mới thêm vào cho các CPU từ 80386 trở lên. Đây là cơ chế quản lý bộ nhớ tổng hợp vừa phân đoạn vừa phân trang
Quản lý bộ nhớ ảo phân đoạn
Nguyên lý hoạt động
khi lập trình, chương trình được phép truy xuất dữ liệu trong nhiều không gian khác nhau, mỗi không gian được gọi là segment. Mỗi segment có kích thước thay đổi được theo thời gian, ô nhớ đầu tiên của mỗi segment luôn bắt đầu từ 0.
Bộ nhớ RAM có kích thước nhỏ nào đó. Các segment của chương trình thường nắm trên đĩa cứng, khi cần thiết segment sẽ được nạp vào 1 vùng thích hợp trong RAM.
Tại từng thời điểm, 1 vùng nhớ RAM thật chứa tốt đa 1 segment ảo, nhưng theo thời gian nó có thể chứa nhiều segment ảo khác nhau.
Khi ứng dụng truy xuất 1 ô nhớ, nó xác định địa chỉ ô nhớ dạng
phân cấp : segment + offset.
Để quản lý quá trình ánh xạ các segement ảo của chương trình vào các vùng RAM, HĐH dùng 1 bảng đặc tả sgement cho mỗi chương trình, bảng này có số phần tử = số segement của chương trình tương ứng, mỗi phần tử của bảng là 1 record chứa các thông số quản lý segement tương ứng
Qui trình đổi địa chỉ ảo sang địa chỉ thật
từ địa chỉ mà chương trình truy xuất gồm 2 thành phần:segement (i)
và offset
Truy xuất record quản lý segement i trong bảng đặc tả segement.
Nếu field inRAM=1 thì địa chỉ thật tương ứng là start_addr + Offset và qui trình kết thúc
Nếu inRAM =0, hệ thống sẽ tìm 1 vùng RAM thật rãnh (có địa chỉ bắt đầu là base), nếu không có phải tìm cách giải phóng 1 vùng RAM thật ít gây phiền hà nhất (có địa chỉ bắt đầu là base), dựa vào thông tin trong field "inDisk" để mở file và đọc segment vào vùng RAM thật
tìm được.
Hiệu chỉnh lại field inRAM = 1 và field start_addr = base rồi quay lại
bước 2
Quản lý bộ nhớ thật trên hệ đơn chương
Vấn đề cần giải quyết
Tái định lại địa chỉ chương trình khi nạp field khả thi từ đĩa vào ram
Bảo vệ bộ nhớ của HĐH từ việc truy xuất không hợp pháp của chương trình ứng dụng
Vấn đề không đủ chỗ cho chương trình lớn -> sử dụng kỹ thuật Overlay để chia ứng dụng ra nhiều file overlay liên tiếp
Quản lý bộ nhớ ảo phân đoạn và phân trang
Qui trình đổi địa chỉ ảo sang địa chỉ thật
từ địa chỉ mà chương trình truy xuất gồm 2 thành phần : segement (s) và offset, hệ thống sẽ tách offset ra thành 2 thành phần page (p) + offset1
Truy xuất record quản lý segement s trong bảng đặc tả segement. Nếu field inRAM=1 thì bản đặc tả trang cho segement s đã có trong RAM. Nếu không thì tìm cách nạp nó vào RAM.
Truy xuất record quản lý trang ảo p trong bảng đặc tả trang. Nếu field
inRAM=1 thì địa chỉ thật tương ứng là: page frame | Offset và qui trình kết thúc
Nếu inRAM =0, hệ thống sẽ tìm 1 trang thật rãnh (k), nếu không có phải tìm cách giải phóng 1 trang thật ít gây phiền hà nhất (k), dựa vào thông tin trong field "inDisk" để mở file và đọc trang ảo vào trang thật k.
Hiệu chỉnh lại field inRAM = 1 và field page frame = k rồi quay lại bước 3