Các chế độ
Chương 3: Quản lý bộ nhớ
4. Quản lý bộ nhớ trong vi xử lý họ Intel
l Intel 8086, 8088
l Chỉ có một chế độ quản lý: Chế độ thực (Real Mode)
l Quản lý vùng nhớ lên đến 1MB ( 20bit )
l Xác định địa chỉ ô nhớ bằng 2 giá trị 16 bit: Segment, Offset
l Thanh ghi đoạn: CS, SS, DS, ES,
l Thanh ghi độ lệch: IP, SP, BP.
l Địa chỉ vật lý: Seg SHL 4 + Ofs
l Intel 80286
l Chế độ thực, tương thích với 8086
l Chế độ bảo vệ (Protected mode),
l Sử dụng phương pháp phân đoạn
l Khai thác được bộ nhớ vật lý 16M (24bit )
l Intel 80386, Intel 80486, Pentium,.
l Chế độ thực, tương thích với 8086
l Chế độ bảo vệ :Kết hợp phân đoạn, phân trang
l Chế độ ảo (Virtual mode)
l Cho phép thực hiện mã 8086 trong chế độ bảo vệ
Kết luận
Chương 3: Quản lý bộ nhớ
① Tổng quan
1. Ví dụ
2. Bộ nhớ và chương trình
3. Liên kết địa chỉ
4. Các cấu trúc chương trình
② Các chiến lược quản lý bộ nhớ
1. Chiến lược phân chương cố định
2. Chiến lược phân chương động
3. Chiến lược phân đoạn
4. Chiến lược phân trang
5. Chiến lược kết hợp phân đoạn-phân trang
③ Bộ nhớ ảo
1. Giới thiệu
2. Các chiến lược đổi trang
④ Quản lý bộ nhớ trong VXL họ Intel
137 trang |
Chia sẻ: hachi492 | Ngày: 05/01/2022 | Lượt xem: 446 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ - Đỗ Quốc Huy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
.2 Bộ nhớ và chương trình
Phân cấp bộ nhớ
00000
00001
FFFFE
FFFFF
Memory
l Dùng lưu trữ dữ liệu và chương trình
l Là mảng các ô nhớ kiểu bytes, words
l Mỗi ô nhớ có một địa chỉ riêng
l Địa chỉ vật lý: địa chỉ x/hiện ở chân VXL
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.2 Bộ nhớ và chương trình
Bộ nhớ chính
l Tồn tại trên thiết bị lưu trữ ngoài
l Là các file nhị phân thực thi được
l Vùng tham số file
l Lệnh máy (mã nhị phân),
l Vùng dữ liệu (biến toàn cục), . .
l Phải được đưa vào bộ nhớ trong và
được đặt trong một tiến trình để
thực hiện (tiến trình thực hiện
chương trình)
l Hàng đợi vào (input queue)
l Tập các tiến trình ở bộ nhớ
ngoài (thông thường: disk)
l Đợi để được đưa vào bộ nhớ
trong và thực hiên
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.2 Bộ nhớ và chương trình
Chương trình
l Nạp chương trình vào bộ nhớ
l Đọc và phân tích (dịch) file thực thi (VD file *.com, file *.exe)
l Xin vùng nhớ để nạp chương trình từ file trên đĩa
l Thiết lập các tham số, các thanh ghi tới giá trị thích hợp
l Thực thi chương trình
l CPU lấy các lệnh trong bộ nhớ tại vị trí được xác định bởi bộ đếm
chương trình (Program counter)
l Cặp thanh ghi CS:IP với VXL họ Intel (Ví dụ : 80x86)
l CPU giải mã lệnh
l Có thể lấy thêm toán hạng từ bộ nhớ
l Thực hiện lệnh với toán hạng
l Nếu cần thiết, lưu kết quả vào bộ nhớ tại một địa chỉ xác định
l Thực hiện xong
l Giải phóng vùng không gian nhớ dành cho chương trình
l Vấn đề
l Chương trình có thể được nạp vào vị trí bất kỳ trong bộ nhớ
l Khi thực hiện chương trình sinh ra chuỗi địa chỉ bộ nhớ
l Truy nhập địa chỉ bộ nhớ như thế nào?
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.2 Bộ nhớ và chương trình
Thực hiện chương trình
lVí dụ
lBộ nhớ và chương trình
lLiên kết địa chỉ
lCác cấu trúc chương trình
Chương 3 Quản lý bộ nhớ
1. Tổng quan
Bộ nhớ trong
Chương trình
nguồn
Dịch
Nạp
Chương trình
trong bộ nhớ
Các modul đối
tượng khác
Thư viện
hệ thống
Thư viện hệ
thống được
nạp động
20 / 96
Liên
kết
Modul
đối tượng
Modul
thực hiện
Liên kết động
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.3 Liên kết địa chỉ
Các bước xử lý chương trình ứng dụng
l Địa chỉ biểu tượng (symbolic)
l Là tên của đối tượng trong chương trình nguồn
l Ví dụ: counter, x, y,...
l Địa chỉ tương đối
l Sinh ra từ địa chỉ biểu tượng trong giai đoạn dịch (compiler)
l Là vị trí tương đối của đối tượng kể từ đầu modul
l Byte thứ 10 kể từ đầu modul
l EB08 ⇒ JMP +08: Nhảy tới vị trí cách vị trí hiện tại 8 ô
l Địa chỉ tuyệt đối
l Sinh ra từ địa chỉ tương đối trong giai đoạn nạp chương trình thực thi vào bộ
nhớ để thực hiện
l Với PC: địa chỉ tương đối → Seg * 16+Ofs
l Là địa chỉ của đối tượng trong bộ nhớ vật lý-địa chỉ vật lý
l Ví dụ: JMP 010A⇒ Nhảy tới ô nhớ có vị trí 010Ah tại cùng đoạn mã lệnh
(CS)
l Nếu CS=1555h, sẽ đi tới vị trí: 1555h*10h+010Ah =1560Ah
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.3 Liên kết địa chỉ
Các kiểu địa chỉ
Xác định địa chỉ câu lệnh và dữ liệu trong bộ nhớ có thể thực hiện tại các
giai đoạn khác nhau khi xử lý chương trình ứng dụng
l Giai đoạn dịch:
l Sử dụng khi biết chương trình sẽ nằm ở đâu trong bộ nhớ
l Khi dịch sẽ sinh ra mã (địa chỉ) tuyệt đối
l Phải dịch lại khi vị trí bắt đầu thay đổi
l Thời điểm nạp:
l Sử dụng khi không biết c/trình sẽ nằm ở đâu trong bộ nhớ
l Các đối tượng được dịch ra sẽ mang địa chỉ tương đối
l Xác định địa chỉ được hoãn lại tới khi khi nạp chương trình vào bộ nhớ
l Trong khi thực hiện:
l S/dụng khi các tiến trình có thể thay đổi vị trí trong khi t/hiện
l Xác định địa chỉ được hoãn lại tới khi thực thi chương trình
l Thường đòi hỏi trợ giúp từ phần cứng
l Được sử dụng trong nhiều hệ điều hành
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.3 Liên kết địa chỉ
Xác định địa chỉ
l Địa chỉ logic (địa chỉ ảo)
l Được sinh ra trong tiến trình, (CPU đưa ra)
l Được khối quản lý bộ nhớ (MMU) chuyển sang địa chỉ vật lý khi truy nhập
tới đối tượng trong chương trình
l Địa chỉ vật lý
l Địa chỉ của một phần tử (byte/word) của bộ nhớ
l Tương ứng với địa chỉ logic được CPU đưa ra
l Chương trình làm việc với địa chỉ logic
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.3 Liên kết địa chỉ
Địa chỉ vật lý-địa chỉ logic
lVí dụ
lBộ nhớ và chương trình
lLiên kết địa chỉ
lCác cấu trúc chương trình
Chương 3 Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
25 / 96
① Cấu trúc tuyến tính
② Cấu trúc nạp động
③ Cấu trúc liên kết động
④ Cấu trúc Overlays
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1. 4 Các cấu trúc chương trình
M0
M1
M2
M3
Biên tập M0 M1 M2 M3
l Sau khi biên tập, các modul được tập hợp thành một chương trình hoàn thiện
l Chứa đầy đủ các thông tin để có thể thực hiện được
l Các biến trỏ ngoài đã thay bằng giá trị cụ thể
l Để thực hiện, chỉ cần định vị một lần trong bộ nhớ
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc tuyến tính
27 / 96
l Ưu điểm
l Đơn giản, dễ tổ chức biên tập và định vị chương trình
l Thời gian thực hiện nhanh
l Tính lưu động cao
l Nhược điểm
l Lãng phí bộ nhớ
l Không phải toàn bộ chương trình đều cần thiết cho
thực hiện chương trình
l Không thực hiện được chương trình có kích thước lớn
hơn kích thước bộ nhớ vật lý
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc tuyến tính
M0
M1
M2
M3
Hệ điều hành
l Mỗi modul được biên tập riêng
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc nạp động
M0
M1
M2
M3
Hệ điều hành
M0
l Mỗi modul được biên tập riêng
l Khi thực hiện, hệ thống sẽ định vị modul gốc
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc nạp động
M0
M1
M2
M3
Hệ điều hành
M0
M1
l Mỗi modul được biên tập riêng
l Khi thực hiện, hệ thống sẽ định vị modul gốc
l Cần tới modul nào sẽ xin bộ nhớ và giải nạp modul vào
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc nạp động
M0
M1
M2
M3
Hệ điều hành
M0
M1
M2
l Mỗi modul được biên tập riêng
l Khi thực hiện, hệ thống sẽ định vị modul gốc
l Cần tới modul nào sẽ xin bộ nhớ và giải nạp modul vào
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc nạp động
M0
M1
M2
M3
Hệ điều hành
M0
M1
M2
l Mỗi modul được biên tập riêng
l Khi thực hiện, hệ thống sẽ định vị modul gốc
l Cần tới modul nào sẽ xin bộ nhớ và giải nạp modul vào
l Khi sử dụng xong một modul, hoặc khi thiếu vùng nhớ sẽ
đưa nhưng modul không cần thiết ra ngoài
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc nạp động
M0
M1
M2
M3
Hệ điều hành
M0
M3
l Mỗi modul được biên tập riêng
l Khi thực hiện, hệ thống sẽ định vị modul gốc
l Cần tới modul nào sẽ xin bộ nhớ và giải nạp modul vào
l Khi sử dụng xong một modul, hoặc khi thiếu vùng nhớ sẽ
đưa nhưng modul không cần thiết ra ngoài
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc nạp động
Ưu điểm
l Có thể sử dụng vùng nhớ nhiều hơn phần dành cho chương trình
l Hiệu quả sử dụng bộ nhớ cao nếu quản lý tốt
Nhược điểm
l Tốc độ thực hiện chậm
l Sai lầm sẽ dẫn tới lãng phí bộ nhớ và tăng thời gian thực hiện
l Yêu cầu người sử dụng phải nạp và xóa các modul
l Người dùng phải nắm rõ hệ thống
l Giảm tính lưu động
29 / 96
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc nạp động
Mto
to
()
toto()
M
to
to
l Các liên kết sẽ hoãn lại cho tới khi thực
hiện chương trình
l Một phần của đoạn mã (stub) được sử
dụng để tìm kiếm thủ tục tương ứng
trong thư viện trong bộ nhớ
l Khi tìm thấy, stub sẽ được thay thế với
địa chỉ của thủ tục và thực hiện thủ tục
l Hữu ích cho xây dựng thư viện
Hệ điều hành
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc liên kết động (DLL:Dynamic-link library)
l Modul được chia thành các mức
l Mức 0 chứa modul gốc, nạp và định vị chương trình
l Mức 1 chứa các Modul được gọi từ những modul ở mức 0 và không
đồng thời tồn tại
l . . .
l Bộ nhớ cũng được chia thành mức ứng với mức chương trình
l Kích thước bằng kích thước của modul lớn nhất cùng mức
l Để có cấu trúc Overlay, cần cung cấp thêm các thông tin
l Chương trình bao nhiêu mức, mỗi mức gồm những modul nào
l Thông tin cung cấp lưu trong file (sơ đồ overlay)
l Modul mức 0 được biên tập thành file thực thi riêng
l Khi thực hiện chương trình
l Nạp modul mức 0 như chương trình tuyến tính
l Cần tới modul khác, sẽ nạp modul vào mức bộ nhớ tương ứng
l Nếu có modul đồng mức tồn tại, đưa ra bên ngoài
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays
M0
80
K
80
K
12
0K
Bộ nhớ trong
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays
M0
80
K
M1
80
K
12
0K
Bộ nhớ trong
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays
M0
80
K
M1
80
K
M11
12
0K
Bộ nhớ trong
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays
80
K
80
K
12
0K
M0
M1
M11
M11 Bộ nhớ trong
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays
M0
80
K
M1
80
K
M12
12
0K
Bộ nhớ trong
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays
80
K
80
K
12
0K
M0
M1
M12
M1 Bộ nhớ trong
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays
M
1
M0
80
K
2
80
K
M12
12
0K
Bộ nhớ trong
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays
l Cho phép dùng chương trình có kích thước lớn hơn kích thước
hệ điều hành dành cho
l Yêu cầu người sử dụng cung cấp các thông tin phụ
lHiệu quả sử dụng phụ thuộc vào các thông tin được cung
cấp
lHiệu quả sử dụng bộ nhớ phụ thuộc cách tổ chức các modul
trong chương trình
lNếu tồn tại một modul có kích thước lớn hơn các modul
khác cùng mức rất nhiều ⇒Hiệu quả giảm rõ rệt
lQuá trình nạp các modul là động, nhưng chương trình có tính
chất tĩnh ⇒Không thay đổi trong các lần thực hiện
l Cung cấp thêm bộ nhớ tự do, hiệu quả vẫn không đổi
Chương 3: Quản lý bộ nhớ
1. Tổng quan
1.4 Các cấu trúc chương trình
Cấu trúc Overlays:Nhận xét
34 / 96
Chương 3: Quản lý bộ nhớ
1. Tổng quan
Kết luận
①Tổng quan
②Các chiến lược quản lý bộ nhớ
③Bộ nhớ ảo
④Quản lý bộ nhớ trong VXL họ Intel
Chương 3 Quản lý bộ nhớ
lChiến lược phân chương cố định
lChiến lược phân chương động
lChiến lược phân đoạn
lChiến lược phân trang
lChiến lược kết hợp phân đoạn-phân trang
Chương 3 Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
Hệ điều hành
Chương 1
Chương 2
Chương 3
Process Size time
P1 120 20
P2 80 15
P3 70 5
P4 50 5
P5 140 12
Hàng đợi
l Bộ nhớ được chia thành n phần
l Mỗi phần gọi là một chương (partition)
l kích thước: không nhất thiết phải bằng nhau
l được sử dụng như một vùng nhớ độc lập
l Tại một thời điểm chỉ cho phép một chương trình tồn tại
l Các chương trình nằm trong vùng nhớ cho tới khi kết thúc
l Ví dụ: Xét hệ thống:
0
150
300
500
600
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.1 Chiến lược phân chương cố định
Nguyên tắc
l Đơn giản, dễ tổ chức bảo vệ
l Chương trình và vùng nhớ có một khóa bảo vệ
l So sánh 2 khóa với nhau khi nạp chương trình
l Giảm thời gian tìm kiếm
l Phải sao các modul điều khiển ra làm nhiều bản và lưu ở nhiều nơi
l Hệ số song song không thể vượt quá n
l Bị phân đoạn bộ nhớ
l Kích thước chương trình lớn hơn kích thước chương lớn nhất
l Tổng bộ nhớ tự do còn lớn, nhưng không dùng để nạp các
chương trình khác
⇒Sửa lại cấu trúc chương, kết hợp một số chương kề nhau
l Áp dụng
l Thường dùng cho quản lý các đĩa dung lượng lớn
l Hệ điều hành OS/360 của IBM
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.1 Chiến lược phân chương cố định
Nhận xét
lChiến lược phân chương cố định
lChiến lược phân chương động
lChiến lược phân đoạn
lChiến lược phân trang
lChiến lược kết hợp phân đoạn-phân trang
Chương 3 Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
Chỉ có một danh sách quản lý bộ nhớ tự do
l Thời điểm ban đầu toàn bộ bộ nhớ là tự do với các tiến trình ⇒ vùng
trống lớn nhất (hole)
l Khi một tiến trình yêu cầu bộ nhớ
l Tìm trong DS vùng trống một phần tử đủ lớn cho yêu cầu
l Nếu tìm thấy
l Vùng trống được chia thành 2 phần
l Một phần cung cấp theo yêu cầu
l Một phần trả lại danh sách vùng trống tự do
l Nếu không tìm thấy
l Phải chờ tới khi có được một vùng trống thỏa mãn
l Cho phép tiến trình khác trong hàng đợi thực hiện (nếu độ
ưu tiên đảm bảo)
l Khi một tiến trình kết thúc
l Vùng nhớ chiếm được trả về DS quản lý vùng trống tự do
l Kết hợp với các vùng trống khác liên kề nếu cần thiết
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Nguyên tắc
0400
2560
Process Size time
P1 600 10
P2 1000 5
P3 300 20
P4 700 8
P5 500 15
File đợi
0
400
2560
?
Hệ điều hành Hệ điều hành
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Bộ nhớ chính
Có nhiều chiến lược lựa chọn vùng trống cho yêu cầu
First Fit : Vùng trống đầu tiên thỏa mãn
Best Fit : Vùng trống vừa vặn nhất
Worst Fit : Vùng trống kích thước lớn nhất
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Chiến lược lựa chọn vùng trống tự do
l Giả sử các vùng bộ nhớ còn trống có kích thước
100K, 500K, 200K, 300K, and 600K (theo thứ tự),
l First-fit, Best-fit, and Worst-fit
Sẽ nạp các tiến trình 212K, 417K, 112K, and 426K
như thế nào?
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Chiến lược lựa chọn vùng trống tự do
Nguyên tắc: Chia đôi liên tiếp vùng trống tự do cho tới
khi thu được vùng trống nhỏ nhất thỏa mãn
Cung cấp cho yêu cầu n bytes
l Chia vùng trống tìm được thành 2 khối
bằng nhau (gọi là buddies)
l Tiếp tục chia vùng trống phía trên thành 2
phần cho tới khi đạt vùng trống nhỏ nhất
kích thước lớn hơn n
Ví dụ
l Vùng trống 16K Bytes
l Yêu cầu 735 Bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
Nguyên tắc: Chia đôi liên tiếp vùng trống tự do cho tới
khi thu được vùng trống nhỏ nhất thỏa mãn
Cung cấp cho yêu cầu n bytes
l Chia vùng trống tìm được thành 2 khối
bằng nhau (gọi là buddies)
l Tiếp tục chia vùng trống phía trên thành 2
phần cho tới khi đạt vùng trống nhỏ nhất
kích thước lớn hơn n
Ví dụ
l Vùng trống 16K Bytes
l Yêu cầu 735 Bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
Nguyên tắc: Chia đôi liên tiếp vùng trống tự do cho tới
khi thu được vùng trống nhỏ nhất thỏa mãn
Cung cấp cho yêu cầu n bytes
l Chia vùng trống tìm được thành 2 khối
bằng nhau (gọi là buddies)
l Tiếp tục chia vùng trống phía trên thành 2
phần cho tới khi đạt vùng trống nhỏ nhất
kích thước lớn hơn n
Ví dụ
l Vùng trống 16K Bytes
l Yêu cầu 735 Bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
Nguyên tắc: Chia đôi liên tiếp vùng trống tự do cho tới
khi thu được vùng trống nhỏ nhất thỏa mãn
Cung cấp cho yêu cầu n bytes
l Chia vùng trống tìm được thành 2 khối
bằng nhau (gọi là buddies)
l Tiếp tục chia vùng trống phía trên thành 2
phần cho tới khi đạt vùng trống nhỏ nhất
kích thước lớn hơn n
Ví dụ
l Vùng trống 16K Bytes
l Yêu cầu 735 Bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
Nguyên tắc: Chia đôi liên tiếp vùng trống tự do cho tới
khi thu được vùng trống nhỏ nhất thỏa mãn
Cung cấp cho yêu cầu n bytes
l Chia vùng trống tìm được thành 2 khối
bằng nhau (gọi là buddies)
l Tiếp tục chia vùng trống phía trên thành 2
phần cho tới khi đạt vùng trống nhỏ nhất
kích thước lớn hơn n
Ví dụ
l Vùng trống 16K Bytes
l Yêu cầu 735 Bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
Nguyên tắc: Chia đôi liên tiếp vùng trống tự do cho tới
khi thu được vùng trống nhỏ nhất thỏa mãn
Cung cấp cho yêu cầu n bytes
l Chia vùng trống tìm được thành 2 khối
bằng nhau (gọi là buddies)
l Tiếp tục chia vùng trống phía trên thành 2
phần cho tới khi đạt vùng trống nhỏ nhất
kích thước lớn hơn n
Ví dụ
l Vùng trống 16K Bytes
l Yêu cầu 735 Bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
l Hệ thống duy trì các danh sách vùng
trống kích thước 1, 2, . . . , 2n bytes
l Với yêu cầu K, tìm phần tử nhỏ nhất
kích thước lớn hơn K
l Nếu phần tử nhỏ nhất lớn hơn 2K,
chia liên tiếp tới khi được vùng nhỏ
nhất kích thước lớn hơn K
l Nhận xét: Với bộ nhớ kích thước n,
cần duyệt log2n danh sách ⇒ Nhanh
Ví dụ bộ nhớ 16K bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
l Hệ thống duy trì các danh sách vùng
trống kích thước 1, 2, . . . , 2n bytes
l Với yêu cầu K, tìm phần tử nhỏ nhất
kích thước lớn hơn K
l Nếu phần tử nhỏ nhất lớn hơn 2K,
chia liên tiếp tới khi được vùng nhỏ
nhất kích thước lớn hơn K
l Nhận xét: Với bộ nhớ kích thước n,
cần duyệt log2n danh sách ⇒ Nhanh
Ví dụ bộ nhớ 16K bytes
l Yêu cầu 735 bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
l Hệ thống duy trì các danh sách vùng
trống kích thước 1, 2, . . . , 2n bytes
l Với yêu cầu K, tìm phần tử nhỏ nhất
kích thước lớn hơn K
l Nếu phần tử nhỏ nhất lớn hơn 2K,
chia liên tiếp tới khi được vùng nhỏ
nhất kích thước lớn hơn K
l Nhận xét: Với bộ nhớ kích thước n,
cần duyệt log2n danh sách ⇒ Nhanh
Ví dụ bộ nhớ 16K bytes
l Yêu cầu 735 bytes
l Yêu cầu 1205 bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
l Hệ thống duy trì các danh sách vùng
trống kích thước 1, 2, . . . , 2n bytes
l Với yêu cầu K, tìm phần tử nhỏ nhất
kích thước lớn hơn K
l Nếu phần tử nhỏ nhất lớn hơn 2K,
chia liên tiếp tới khi được vùng nhỏ
nhất kích thước lớn hơn K
l Nhận xét: Với bộ nhớ kích thước n,
cần duyệt log2n danh sách ⇒ Nhanh
Ví dụ bộ nhớ 16K bytes
l Yêu cầu 735 bytes
l Yêu cầu 1205 bytes
l Yêu cầu 2010 bytes
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation: Cung cấp nhớ
l Có thể kết hợp 2 vùng kề nhau có
cùng kích thước
l Tiếp tục kết hợp liên tiếp cho tới khi
tạo ra vùng trống lớn nhất có thể
Ví dụ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation : Thu hồi vùng nhớ
l Có thể kết hợp 2 vùng kề nhau có
cùng kích thước
l Tiếp tục kết hợp liên tiếp cho tới khi
tạo ra vùng trống lớn nhất có thể
Ví dụ
l Giải phóng vùng nhớ thứ nhất (1K)
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation : Thu hồi vùng nhớ
l Có thể kết hợp 2 vùng kề nhau có
cùng kích thước
l Tiếp tục kết hợp liên tiếp cho tới khi
tạo ra vùng trống lớn nhất có thể
Ví dụ
l Giải phóng vùng nhớ thứ nhất (1K)
l Kết hợp 2 vùng 1K thành vùng 2K
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation : Thu hồi vùng nhớ
l Có thể kết hợp 2 vùng kề nhau có
cùng kích thước
l Tiếp tục kết hợp liên tiếp cho tới khi
tạo ra vùng trống lớn nhất có thể
Ví dụ
l Giải phóng vùng nhớ thứ nhất (1K)
l Kết hợp 2 vùng 1K thành vùng 2K
l Giải phóng vùng nhớ thứ hai (2K)
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation : Thu hồi vùng nhớ
l Có thể kết hợp 2 vùng kề nhau có
cùng kích thước
l Tiếp tục kết hợp liên tiếp cho tới khi
tạo ra vùng trống lớn nhất có thể
Ví dụ
l Giải phóng vùng nhớ thứ nhất (1K)
l Kết hợp 2 vùng 1K thành vùng 2K
l Giải phóng vùng nhớ thứ hai (2K)
l Kết hợp 2 vùng 2K thành vùng 4K
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation : Thu hồi vùng nhớ
l Có thể kết hợp 2 vùng kề nhau có
cùng kích thước
l Tiếp tục kết hợp liên tiếp cho tới khi
tạo ra vùng trống lớn nhất có thể
Ví dụ
l Giải phóng vùng nhớ thứ nhất (1K)
l Kết hợp 2 vùng 1K thành vùng 2K
l Giải phóng vùng nhớ thứ hai (2K)
l Kết hợp 2 vùng 2K thành vùng 4K
l Giải phóng vùng nhớ thứ ba (2K)
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation : Thu hồi vùng nhớ
l Có thể kết hợp 2 vùng kề nhau có
cùng kích thước
l Tiếp tục kết hợp liên tiếp cho tới khi
tạo ra vùng trống lớn nhất có thể
Ví dụ
l Giải phóng vùng nhớ thứ nhất (1K)
l Kết hợp 2 vùng 1K thành vùng 2K
l Giải phóng vùng nhớ thứ hai (2K)
l Kết hợp 2 vùng 2K thành vùng 4K
l Giải phóng vùng nhớ thứ ba (2K)
l Kết hợp 2 vùng 2K thành vùng 4K
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation : Thu hồi vùng nhớ
l Có thể kết hợp 2 vùng kề nhau có
cùng kích thước
l Tiếp tục kết hợp liên tiếp cho tới khi
tạo ra vùng trống lớn nhất có thể
Ví dụ
l Giải phóng vùng nhớ thứ nhất (1K)
l Kết hợp 2 vùng 1K thành vùng 2K
l Giải phóng vùng nhớ thứ hai (2K)
l Kết hợp 2 vùng 2K thành vùng 4K
l Giải phóng vùng nhớ thứ ba (2K)
l Kết hợp 2 vùng 2K thành vùng 4K
l Kết hợp 2 vùng 4K thành vùng 8K
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation : Thu hồi vùng nhớ
l Có thể kết hợp 2 vùng kề nhau có
cùng kích thước
l Tiếp tục kết hợp liên tiếp cho tới khi
tạo ra vùng trống lớn nhất có thể
Ví dụ
l Giải phóng vùng nhớ thứ nhất (1K)
l Kết hợp 2 vùng 1K thành vùng 2K
l Giải phóng vùng nhớ thứ hai (2K)
l Kết hợp 2 vùng 2K thành vùng 4K
l Giải phóng vùng nhớ thứ ba (2K)
l Kết hợp 2 vùng 2K thành vùng 4K
l Kết hợp 2 vùng 4K thành vùng 8K
l Kết hợp 2 vùng 8K thành vùng 16K
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Buddy Allocation : Thu hồi vùng nhớ
Sau một thời gian hoạt động, các vùng trống nằm rải rác khắp nơi gây
ra hiện tượng thiếu bộ nhớ. ⇒Cần phải bố trí lại bộ nhớ
l Dịch chuyển các tiến trình
l Vấn đề không đơn giản vì các đối tượng bên trong khi chuyển
sang vị trí mới sẽ mang địa chỉ khác đi
l Sử dụng thanh ghi dịch chuyển (relocation register) chứa giá
trị bằng độ dịch chuyển của tiến trình
l Vấn đề lựa chọn phương pháp để chi phí nhỏ nhất
l Dịch chuyển tất cả về một phía ⇒ vùng trống lớn nhất
l Dịch chuyển để tạo ra ngay lập tức một vùng trống vừa vặn
l Phương pháp tráo đổi (swapping)
l Lựa chọn thời điểm dừng tiến trình đang thực hiện
l Đưa tiến trình và trạng thái tương ứng ra bên ngoài
l Giải phóng vùng nhớ để kết hợp với các phần tử liền kề
l Tái định vị vào vị trí cũ và khôi phục trạng thái cũ
l Dùng thanh ghi dịch chuyển nếu đưa vào vị trí khác
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
Vấn đề bố trí lại bộ nhớ
l Không phải sao lưu modul điều khiển ra nhiều nơi
l Tăng/giảm hệ số song song tùy theo số lượng và kích thước chương
trình
l Không thực hiện được chương trình có kích thước lớn hơn kích thước
bộ nhớ vật lý
l Gây ra hiện tượng rác
l Bộ nhớ không được sử dụng, nhưng cũng không nằm trong DS
quản lý bộ nhớ tự do
l Do lỗi hệ điều hành
l Do phần mềm phá hoại
l Gây ra hiện tượng phân đoạn ngoài
l Vùng nhớ tự do được quản lý đầy đủ, nhưng nằm rải rác nên
không sử dụng được
l Gây ra hiện tượng phân đoạn trong
l Vùng nhớ dành cho chương trình nhưng không được chương trình
sử dụng tới
Nhận xét
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.2 Chiến lược phân chương động
lChiến lược phân chương cố định
lChiến lược phân chương động
lChiến lược phân đoạn
lChiến lược phân trang
lChiến lược kết hợp phân đoạn-phân trang
Chương 3 Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
l Chương trình thường gồm các modul
l Một chương trình chính (main program)
l Tập các chương trình con
l Các biến, các cấu trúc dữ liệu,. . .
l Các modul, đối tượng trong c/trình được xác định bằng tên
l Hàm sqrt(), thủ tục printf() . . .
l x, y, counter, Buffer. . .
l Các p/tử trong modul được x/định theo độ lệch với vị trí đầu
l Câu lệnh thư 10 của hàm sqrt(). . .
l Phần tử thứ 2 của mảng Buffer. . .
Chương trình được tổ chức như thế nào trong bộ nhớ?
l Stack nằm trên hay Data nằm trên trong bộ nhớ?
l Địa chỉ vật lý các đối tượng . . .?
⇒Không quan tâm
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
Chương trình
subroutines array
main program
data
stack
Không gian
địa chỉ logic
Khi đưa c/trình vào bộ nhớ để thực hiện
C/trình gồm nhiều đoạn khác nhau
l Mỗi đoạn là một khối logic, ứng với một
modul
l Mã lệnh: main(), thủ tục, hàm. . .
l Dữ liệu: Đối tượng toàn cục, cục bộ
l Các đoạn khác: stack, mảng. . .
l Mỗi đoạn chiếm một vùng liên tục
l Có vị trí bắt đầu và kích thước
l Có thể nằm tại bất cứ đâu trong bộ nhớ
Quan điểm người dùng
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
Khi đưa c/trình vào bộ nhớ để thực hiện
C/trình gồm nhiều đoạn khác nhau
l Mỗi đoạn là một khối logic, ứng với một
modul
l Mã lệnh: main(), thủ tục, hàm. . .
l Dữ liệu: Đối tượng toàn cục, cục bộ
l Các đoạn khác: stack, mảng. . .
l Mỗi đoạn chiếm một vùng liên tục
l Có vị trí bắt đầu và kích thước
l Có thể nằm tại bất cứ đâu trong bộ nhớ
l Đối tượng trong đoạn được xác định bởi vị
trí tương đối so với đầu đoạn
l Lệnh thứ 5 của chương trình chính
l Phần tử đầu tiên của stack. . .
l Vị trí các đối tượng trong bộ nhớ?
Quan điểm người dùng
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
HĐH
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
HĐH
Đoạn 0
Đoạn 3
1400
4300
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
HĐH
Đoạn 0
1400
4300
Ví dụ
Bộ nhớ
Lệnh thứ 5
P/tử thứ 11
5x
4
11
x2
Đoạn 3
1420
4322
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
Mark Address Length
. . .. . . . . .. . . . . .. . .
Cấu trúc phân đoạn
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
0
...
n
l Chương trình là tập hợp các đoạn (modul,segment)
l Tên đoạn (số hiệu đoạn), độ dài của đoạn
l Mỗi đoạn có thể được biên tập riêng.
l Dịch và biên tập chương trình tạo ra bảng quản lý đoạn
(SCB: Segement Control Block)
l Mỗi phần tử của bảng ứng với một đoạn của chương trình
l Dấu hiệu (Mark(0/1)): Đoạn đã tồn tại trong bộ nhớ
l Địa chỉ (Address): Vị trí cơ sở (base) của đoạn trong bộ nhớ
l Độ dài (Length): Độ dài của đoạn
l Địa chỉ truy nhập: tên (số hiệu) đoạn và độ lệch trong đoạn
Vấn đề: Chuyển đổi từ địa chỉ 2 chiều ⇒ địa chỉ một chiều
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
HĐH
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
M A L
0 - 1000
0 - 400
0 - 400
0 - 1100
0 - 1000
SCB
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
HĐH
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
M A L
1 1400 1000
1 6300 400
0 - 400
1 3200 1100
1 4700 1000
SCB
Đoạn 0
Đoạn 3
Đoạn 4
Đoạn 1
1400
2400
3200
4300
4700
5700
6300
6700
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
HĐH
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
M A L
1 1400 1000
1 6300 400
0 - 400
1 3200 1100
1 4700 1000
SCB
Đoạn 0
Đoạn 3
Đoạn 4
Đoạn 1
1400
2400
3200
4300
4700
5700
6300
6700
Địa chỉ = ?
Đoạn 3 bắt đầu tại 3200
P/tử 345
Offset 345 3545
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
HĐH
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
M A L
1 1400 1000
1 6300 400
0 - 400
1 3200 1100
1 4700 1000
SCB
Đoạn 0
Đoạn 3
Đoạn 4
Đoạn 1
1400
2400
3200
4300
4700
5700
6300
6700
Địa chỉ = ?4885
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
HĐH
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
M A L
1 1400 1000
1 6300 400
0 - 400
1 3200 1100
1 4700 1000
SCB
Đoạn 0
Đoạn 3
Đoạn 4
Đoạn 1
1400
2400
3200
4300
4700
5700
6300
6700
Địa chỉ = ?
Jmp
Đoạn 2 2800
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
HĐH
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
M A L
1 1400 1000
1 6300 400
1 2800 400
1 3200 1100
1 4700 1000
SCB
Đoạn 0
Đoạn 3
Đoạn 4
Đoạn 1
1400
2400
3200
4300
4700
5700
6300
6700
Địa chỉ = ?
Jmp
Đoạn 2 2800
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
HĐH
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
M A L
1 1400 1000
1 6300 400
1 2800 400
1 3200 1100
1 4700 1000
SCB
Đoạn 0
Đoạn 3
Đoạn 4
Đoạn 1
1400
2400
3200
4300
4700
5700
6300
6700
Địa chỉ = 2920
Jmp
Đoạn 2 2800
subroutine
Đoạn 2
array
Đoạn 3main program
Đoạn 0
data
Đoạn 4
stack
Đoạn 1
Ví dụ
Không gian
địa chỉ logic
Bộ nhớ
HĐH
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
M A L
1 1400 1000
1 6300 400
1 2800 400
1 3200 1100
1 4700 1000
SCB
Đoạn 0
Đoạn 3
Đoạn 4
Đoạn 1
1400
2400
3200
4300
4700
5700
6300
6700
Địa chỉ = ?
Jmp
Đoạn 2 2800
Lỗi truy nhập!
Chuyển đổi địa chỉ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
l Khi thực hiện chương trình
l Bảng quản lý đoạn được nạp vào bộ nhớ
l STBR (Segment-table base register): Vị trí SCB trong bộ nhớ
l STLR (Segment-table length register): Số phần tử của SCB
l Truy nhập tới địa chỉ logic
① s ≥ STLR : Lỗi
② STBR + s * K : Vị trí phần tử s trong SCB
③ Kiểm tra trường dấu hiệu M của phần tử SCBs
l M = 0: Đoạn s chưa tồn tại trong bộ nhớ ⇒ Lỗi truy nhập ⇒ Hệ
điều hành phải nạp đoạn
l Xin vùng nhớ có kích thước được ghi trong trường L
l Tìm modul tương ứng ở bộ nhớ ngoài và nạp và định vị vào
vùng nhớ xin được
l Sửa lại trường địa chỉ A và trường dấu hiệu M(M = 1)
l Truy nhập bộ nhớ như trường hợp không gặp lỗi truy nhập
l M = 1 :Đoạn s đã tồn tại trong bộ nhớ
l d ≥ Ls: Lỗi truy nhập (vượt quá kích thước đoạn)
l d + As: Địa chỉ vật lý cần tìm
Chuyển đổi địa chỉ: Sơ đồ truy nhập
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
Tiến trình 1
Data
(Read only)
sqrt()
S0
S3
S0
Nhận xét: ưu điểm
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
l Sơ đồ nạp modul không cần sự tham gia của người sử dụng
l Dễ dàng thực hiện nhiệm vụ bảo vệ đoạn
l Kiểm tra lỗi truy nhập bộ nhớ
l Địa chỉ không hợp lệ :vươt quá kích thước đoạn
l Kiểm tra tính chất truy nhập
l Đoạn mã: chỉ đọc -> Viết vào đoạn mã: lỗi truy nhập
l Kiểm tra quyền truy nhập modul
l Thêm trường quyền truy nhập(user/system) vào SCB
l Cho phép sử dụng chung đoạn (VD Soạn thảo văn bản)
Tiến trình 2
Dùng chung đoạn : Vấn đề chính
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
l Đoạn dùng chung phải cùng
số hiệu trong SCB
l Call (0, 120) ?
l Read (1, 245) ?
l Giải quyết bằng cách truy nhập
gián tiếp
l JMP + 08
l Thanh ghi đoạn chứa số hiệu
đoạn (ES:BX)
Nhận xét : Nhược điểm
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.3 Chiến lược phân đoạn
l Hiệu quả sử dụng phụ thuộc vào cấu trúc chương trình
l Bị phân mảnh bộ nhớ
l Phân phối vùng nhớ theo các chiến lược first fit /best fit...
l Cần phải bố trí lại bộ nhớ (dịch chuyển, swapping)
l Có thể dựa vào bảng SCB
l M ← 0 : Đoạn chưa được nạp vào
l Vùng nhớ được xác định bởi A và L được trả về DS tự do
l Vấn đề lựa chọn modul cần đưa ra
l Đưa ra modul tồn tại lâu nhất
l Đưa ra modul có lần sử dụng cuối cách xa nhất
l Đưa ra modul có tần xuất sử dụng thấp nhất ⇒Cần
phương tiên ghi lại số lần và thời điểm truy nhập đoạn
l Giải pháp: phân phối bộ nhớ theo các đoạn bằng nhau (page)?
lChiến lược phân chương cố định
lChiến lược phân chương động
lChiến lược phân đoạn
lChiến lược phân trang
lChiến lược kết hợp phân đoạn-phân trang
Chương 3 Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
Nguyên tắc
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Bộ nhớ vật lý được chia thành từng khối có kích thước bằng nhau:
trang vật lý (frames – khung trang)
l Trang vật lý được đánh số 0, 1, 2, . . . : địa chỉ vật lý của trang
l Trang được dùng làm đơn vị phân phối nhớ
l Bộ nhớ logic (chương trình) được chia thành từng trang có kích thước
bằng trang vật lý: trang logic (pages)
l Khi thực hiện chương trình
l Nạp trang logic (từ bộ nhớ ngoài) vào trang vật lý
l Xây dựng một bảng quản lý trang (PCB: Page Control Block) dùng
để xác định mối quan hệ giữa trang vật lý và trang logic
l Mỗi phần tử của PCB ứng với một trang chương trình
l Cho biết trang vật lý chứa trang logic tương ứng
l Ví dụ PCB[8] = 4 ⇒ ?
l Địa chỉ truy nhập được chia thành
l Số hiệu trang (p) : Chỉ số trong PCB để tìm đ/chỉ cơ sở trang
l Độ lệch trong trang (d): Kết hợp địa chỉ cơ sở của trang để tìm
ra đ/chỉ vật lý
65
4
3
2
1
0
3
2
1
0 Trang 0
Trang 1
Trang 2
Trang 3
Ví dụ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
7
Bộ nhớ logic
Bộ nhớ vật lý
2
1
6
50
1
2
3
PCB
Trang 0
65
4
3
2
1
0
3
2
1
0 Trang 0
Trang 1
Trang 2
Trang 3
Ví dụ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
7
Bộ nhớ logic
Bộ nhớ vật lý
2
1
6
50
1
2
3
PCB
Trang 1
65
4
3
2
1
0
3
2
1
0 Trang 0
Trang 1
Trang 2
Trang 3
Ví dụ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
7
Bộ nhớ logic
Bộ nhớ vật lý
2
1
6
50
1
2
3
PCB
Trang 2
65
4
3
2
1
0
3
2
1
0 Trang 0
Trang 1
Trang 2
Trang 3
Ví dụ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
7
Bộ nhớ logic
Bộ nhớ vật lý
2
1
6
50
1
2
3
PCB
Trang 3
Ghi chú
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Dung lượng trang luôn là lũy thừa của 2
l Cho phép ghép giữa số hiệu trang vật lý và độ lệch trong trang
l Ví dụ: Bộ nhớ n bit, kích thước trang 2k
số hiệu trang độ lệch
l Không cần thiết nạp toàn bộ trang logic vào
l Số trang vật lý phụ thuộc k/thước bộ nhớ, số trang logic tùy ý
l PCB cần trường dấu hiệu (Mark) cho biết trang đã được nạp
vào bộ nhớ chưa
l M = 0 Trang chưa tồn tại
l M = 1 Trang đã được đưa vào bộ nhớ vật lý
l Phân biệt chiến lược phân trang - phân đoạn
l Chiến lược phân đoạn
l Các modul phụ thuộc cấu trúc logic của chương trình
l Chiến lược phân trang
l Các khối có kích thước độc lập kích thước chương trình
l Kích thước khối phụ thuộc phần cứng (VD: 29 → 213 bytes)
n − k k
Ví dụ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
Bộ nhớ vật lý
2
1
6
50
1
2
3
PCB
Bộ nhớ logic
Truy nhập địa chỉ logic [ 6 ] ?
Địa chỉ [ 6 ]: Trang 1, độ lệch 2
Địa chỉ = 6*4 + 2 = 26 (624)
g
g
Thực hiện chương trình → Nạp chương trình vào bộ nhớ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Nếu đủ trang vật lý tự do ⇒ nạp toàn bộ
l Nếu không đủ trang vật lý tự do ⇒ nạp từng phần
Thực hiện chương trình → Truy nhập bộ nhớ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Nạp chương trình
l Xây dựng bảng quản lý trang và luôn giữ trong bộ nhớ
l PTBR (Page-table base register) trỏ tới PCB.
l PTLR(Page-table length register) kích thước PCB.
l Thực hiện truy nhập
l Địa chỉ truy nhập được chia thành dạng
l PTBR + p ∗ K : Địa chỉ phần tử p của PCB trong bộ nhớ
l K Kích thước 1 phần tử của PCB
l Kiểm tra Mp
l Mp = 0 : Lỗi trang, sinh một ngắt để tiến hành nạp trang
l Xin trang vật lý tự do (Hết trang tự do?)
l Tìm kiếm trang logic ở bộ nhớ ngoài và nạp trang
l Sửa lại trường địa chỉ A và dấu hiệu M
l Mp = 1 : Trang đã tồn tại,
l Lấy Ap ghép với d ra địa chỉ cần tìm
65 / 96
Chuyển đổi địa chỉ: Sơ đồ truy nhập
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
Nạp trang và thay thế trang
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Nhận xét
l Số trang vật lý dành cho chương trình lớn
l Thực hiện nhanh nhưng hệ số song song giảm
l Số trang vật lý dành cho chương trình bé
l Hệ số song song cao nhưng thực hiện chậm do hay thiếu
trang
⇒ Hiệu quả phụ thuộc các chiến lược nạp trang và thay thế trang
l Các chiến lược nạp trang
l Nạp tất cả: Nạp toàn bộ chương trình
l Nạp trước: Dự báo trang cần thiết tiếp theo
l Nạp theo yêu cầu: Chỉ nạp khi cần thiết
l Các chiến lược thay thế trang
l FIFO First In First Out
l LRU Least Recently Used
l LFU Least Frequently Used
l . . .
Ưu điểm
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Tăng tốc độ truy nhập
l Hai lần truy nhập bộ nhớ (vào PCB và vào địa chỉ cần tìm)
l Thực hiện phép ghép thay vì phép cộng
l Không tồn tại hiện tượng phân đoạn ngoài
l Hệ số song song cao
l Chỉ cần một vài trang của chương trình trong bộ nhớ
l Cho phép viết chương trình lớn tùy ý
l Dễ dàng thực hiện nhiệm vụ bảo vệ
l Địa chỉ truy nhập hợp lệ (vượt quá kích thước)
l Tính chất truy nhập (đọc/ghi)
l Quyền truy nhập (user/system)
l Cho phép sử dụng chung trang
Dùng chung trang : Soạn thảo văn bản
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Mỗi trang 50K
l 3 trang mã
l 1 trang dữ liệu
l 40 người dùng
l Không dùng chung
l Cần 8000K
l Dùng chung
l Chỉ cần 2150K
Dùng chung trang : Nguyên tắc
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Cần thiết trong môi trường hoạt động phân chia
l Giảm kích thước vùng nhớ cho tất cả các tiến trình
l Phần mã dùng chung
l Chỉ một phiên bản phân chia giữa các tiến trình trong bộ nhớ
l Ví dụ: Soạn thảo văn bản, chương trình dịch....
l Vấn đề: Mã dùng chung không đổi
l Trang dùng chung phải cùng vị trí trong không gian logic
của tất cả tiến trình ⇒ Cùng số hiệu trong bảng quản lý
trang
l Phần mã và dữ liệu riêng biệt
l Riêng biệt cho các tiến trình
l Có thể nằm ở vị trí bất kỳ trong bộ nhớ logic của tiến trình
Nhược điểm
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Tồn tại hiện tượng phân đoạn trong
l Luôn xuất hiện ở trang cuối cùng
l Giảm hiện tượng phân đoạn trang bởi giảm kích thước trang ?
l Hay gặp lỗi trang
l Bảng quản lý trang lớn
l Đòi hỏi hỗ trợ của phần cứng
l Chi phí cho chiến lược phân trang lớn
l Khi chương trình lớn, bảng quản lý trang nhiều phần tử
l Chương trình 230, k/thước trang 212 -> PCB có 220 phần tử
l Tốn bộ nhớ lưu trữ PCB
l Giải quyết: Trang nhiều mức
Trang nhiều mức
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
Nguyên tắc: Bảng quản lý trang được phân trang
Ví dụ trang 2 mức
l Máy 32 bít địa chỉ (232); trang kích thước 4K (212) được chia
l Số hiệu trang -20 bit
l Độ lệch trong trang -12 bit
l Bảng trang được phân trang. Số hiệu trang được chia thành
l Bảng trang ngoài (thư mục trang) - 10 bit
l Độ lệch trong một thư mục trang – 10 bit
l Địa chỉ truy nhập có dạng
Trang nhiều mức: Ví dụ trang 2 mức
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
Trang nhiều mức: Truy nhập bộ nhớ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
l Khi thực hiện : Hệ thống nạp thư mục trang vào bộ nhớ
l Bảng trang và trang không sử dụng không cần nạp vào bộ nhớ
l Cần 3 lần truy nhập tới bộ nhớ
l Vấn đề: Với hệ thống 64 bit
l Trang 3, 4,... mức
l Cần 4, 5,... lần truy nhập bô nhớ ⇒ chậm
l Giải quyết: Bộ đệm chuyển hóa địa chỉ
Bộ đệm chuyển hóa địa chỉ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2.4 Chiến lược phân trang
TLB: translation look-aside buffers
l Tập thanh ghi liên kết
(associative registers)
l Truy nhập song song
l Mỗi phần tử gồm
l Khóa: Page number
l Giá trị: Frame number
l TLB chứa đ/chỉ những
trang mới truy nhập
l Khi có y/cầu
l Tìm p trong TLB
l Không có, tìm p trong
PCB rồi đưa
vào TLB
98% truy nhập bộ nhớ được thực hiện qua TLB
lChiến lược phân chương cố định
lChiến lược phân chương động
lChiến lược phân đoạn
lChiến lược phân trang
lChiến lược kết hợp phân đoạn-phân trang
Chương 3 Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
Nguyên tắc
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2. 5 Chiến lược kết hợp phân đoạn-phân trang
l Chương trình được biên tập theo chế độ phân đoạn
l Tạo ra bảng quản lý đoạn SCB
l Mỗi phần tử của bảng quản lý đoạn ứng với một đoạn, gồm 3
trường M, A, L
l Mỗi đoạn được biên tập riêng theo chế độ phân trang
l Tạo ra bảng quản lý trang cho từng đoạn
l Địa chỉ truy nhập: bộ 3
l Thực hiện truy nhập địa chỉ
l STBR + s ⇒: địa chỉ phần tử s
l Kiểm tra trường dấu hiệu Ms, nạp PCBs nếu cần
l As + p ⇒ Địa chỉ phần tử p của PCBs
l Kiểm tra trường dấu hiệu Mp, nạp PCBs nếu cần
l Ghép Ap với d ra được địa chỉ cần tìm
l Được sử dụng trong VXL Intel 80386, MULTICS . . .
l Quản lý bộ nhớ của VXL họ intel
l Chế độ thực
l Chế độ bảo vệ
Sơ đồ truy nhập bộ nhớ
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2. 5 Chiến lược kết hợp phân đoạn-phân trang
Phân đoạn
M A L
0 − 2340
1 2140 5730
0 − 4264
0 − 1766
Bảng: SCB
M A L
0 − 3
0 5 6
0 − 5
0 − 2
Bảng: SCB
M A
0 −
1 8
0 −
0 −
0 −
0 −
Bảng: PCB2
Tổng kết
Chương 3: Quản lý bộ nhớ
2. Các chiến lược quản lý bộ nhớ
2. 5 Chiến lược kết hợp phân đoạn-phân trang
Kết hợp Phân đoạn – Phân trang
①Tổng quan
②Các chiến lược quản lý bộ nhớ
③Bộ nhớ ảo
④Quản lý bộ nhớ trong VXL họ Intel
Chương 3 Quản lý bộ nhớ
①Giới thiệu
②Các chiến lược đổi trang
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.1 Giới thiệu
Đặt vấn đề
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.1 Giới thiệu
l Câu lệnh phải nằm trong bộ nhớ khi thực hiện !
l Toàn bộ chương trình phải nằm trong bộ nhớ ?
l Cấu trúc động; cấu trúc Overlays... : Nạp từng phần
l Đòi hỏi sự chú ý đặc biệt từ lập trình viên
⇒Không cần thiết
l Đoạn chương trình xử lý báo lỗi
l Lỗi ít xảy tra, ít được thực hiện
l Phần khai không dùng tới
l Khai báo ma trận 100x100, sử dụng 10x 10
l Thực hiện c/trình chỉ có 1 phần nằm trong bộ nhớ cho phép
l Viết chương trình trong không gian địa chỉ áo (virtual address space)
l lớn tùy ý
l Nhiều chương trình đồng thời tồn tại
⇒ tăng hiệu suất sử dụng CPU
l Giảm yêu cầu vào/ra cho việc nạp và hoán đổi chương trình
l Kích thước phần hoán đổi (swap) nhỏ hơn
Khái niệm bộ nhớ ảo
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.1 Giới thiệu
l Dùng bộ nhớ thứ cấp
(HardDisk) lưu trữ
phần chương trình
chưa đưa vào bộ nhớ
vật lý
l Phân tách bộ nhớ logic
(của người dùng) với
bộ nhớ vật lý
l Cho phép thể ánh xạ
vùng nhớ logic lớn vào
bộ nhớ vật lý nhỏ
l Cài đặt theo
l Phân trang
l Phân đoạn
Nạp từng phần của trang chương trình vào bộ nhớ
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.1 Giới thiệu
l Trang của tiến trình:
l bộ nhớ vật lý,
l một số trang
nằm trên đĩa(bộ
nhớ ảo)
l Biểu diễn nhờ sử
dụng một bit trong
bảng quản lý trang
l Khi yêu cầu trang,
đưa trang từ bộ nhớ
thứ cấp -> bộ nhớ vật
lý
Xử lý lỗi trang
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.1 Giới thiệu
Nếu không có frames tự do, phải tiến hành đổi trang
Đổi trang
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.1 Giới thiệu
① Xác định vị trí trang
logic trên đĩa
② Lựa chọn trang vật
lý
l Ghi ra đĩa
l Sửa lại bit valid-
invalid
③ Nạp trang logic vào
trang vật lý được
chọn
④ Restart tiến trình
①Giới thiệu
②Các chiến lược đổi trang
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.2 Các chiến lược đổi trang
Các chiến lược
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.2 Các chiến lược đổi trang
l FIFO (First In First Out): Vào trước ra trước
l OPT/MIN: Thuật toán thay thế trang tối ưu
l LRU (Least Recently Used): Trang có lần sử dụng cuối
cách đây lâu nhất
l LFU (Least Frequently used):Tần xuất sử dụng thấp nhất
l MFU (Most Frequently used): Tần xuất sử dụng cao nhất
l . . .
Ví dụ
FIFO
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.2 Các chiến lược đổi trang
Nhận xét
l Hiệu quả khi chương trình có cấu trúc tuyến tính.
l Kém hiểu quả khi chương trình theo nguyên tắc lập trình cấu trúc
l Đơn giản dễ thực hiện
l Dùng hàng đợi lưu các trang của chương trình trong bộ nhớ
l Chèn ở cuối hàng, Thay thế trang ở đầu hàng
l Tăng trang vật lý, không đảm bảo giảm số lần gặp lỗi trang
l Dãy truy nhập: 1 2 3 4 1 2 5 1 2 3 4 5
l 3 frames: 9 lỗi trang; 4 frames: 10 lỗi trang
OPT
OPT
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.2 Các chiến lược đổi trang
Nguyên tắc: Đưa ra trang có lần sử dụng tiếp theo cách xa nhất
l Số lần gặp lỗi trang ít nhất
l Khó dự báo được diễn biến của chương trình
L
✞
RU
LRU
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.2 Các chiến lược đổi trang
Nguyên tắc: Đưa ra trang có lần sử dụng cuối cách xa nhất
l Hiệu quả cho chiến lược thay thế trang
l Đảm bảo giảm số lỗi trang khi tăng số trang vật lý
l Tập các trang trong bộ nhớ có n frames luôn là tập con của các trang
trong bộ nhớ có n + 1 frames
l Y/cầu sự trợ giúp kỹ thuật để chỉ ra thời điểm truy nhập cuối
l Cài đặt như thế nào?
LRU: Cài đặt
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.2 Các chiến lược đổi trang
l Bộ đếm
l Thêm một trường ghi thời điểm truy nhập vào mỗi phần tử của
PCB
l Thêm vào khối điều khiển (C.U) đồng hồ/bộ đếm
l Khi có yêu cầu truy nhâp trang
l Tăng bộ đếm
l Chép nội dung bộ đếm vào trường thời điểm truy nhập tại
phần tử tương ứng trong PCB
l Cần có thủ tục cập nhật PCB (ghi vào trường thời điểm) và thủ
tục tìm kiếm trang có giá trị trường thời điểm nhỏ nhất
l Hiện tượng tràn số !?
l Dãy số (Stack)
l Dùng dãy số ghi số trang
l Truy nhập tới một trang, cho phần tử tương ứng lên đầu dãy
l Thay thế trang: Phần tử cuối dãy
l Thường cài đặt dưới dạng DSLK 2 chiều
l 4 phép gán con trỏ ⇒ tốn thời gian
Thuật toán dựa trên bộ đếm
Chương 3: Quản lý bộ nhớ
3. Bộ nhớ ảo
3.2 Các chiến lược đổi trang
Sử dụng bộ đếm (một trường của PCB) ghi nhận số lần truy nhập
tới trang
l LFU: Trang có bộ đếm nhỏ nhất bị thay thế
l Trang truy nhập nhiều đến
l Trang quan trọng ⇒ hợp lý
l Trang khởi tạo, chỉ được dùng ở giai đoạn đầu ⇒
không hợp lý ⇒Dịch bộ đếm một bit (chia đôi) theo
thời gian
l MFU: Trang có bộ đếm lớn nhất
l Trang có bộ đếm nhỏ nhất, vừa mới được nạp vào và vẫn
chưa được sử dụng nhiều
①Tổng quan
②Các chiến lược quản lý bộ nhớ
③Bộ nhớ ảo
④Quản lý bộ nhớ trong VXL họ Intel
Chương 3 Quản lý bộ nhớ
Các chế độ
Chương 3: Quản lý bộ nhớ
4. Quản lý bộ nhớ trong vi xử lý họ Intel
l Intel 8086, 8088
l Chỉ có một chế độ quản lý: Chế độ thực (Real Mode)
l Quản lý vùng nhớ lên đến 1MB ( 20bit )
l Xác định địa chỉ ô nhớ bằng 2 giá trị 16 bit: Segment, Offset
l Thanh ghi đoạn: CS, SS, DS, ES,
l Thanh ghi độ lệch: IP, SP, BP...
l Địa chỉ vật lý: Seg SHL 4 + Ofs
l Intel 80286
l Chế độ thực, tương thích với 8086
l Chế độ bảo vệ (Protected mode),
l Sử dụng phương pháp phân đoạn
l Khai thác được bộ nhớ vật lý 16M (24bit )
l Intel 80386, Intel 80486, Pentium,..
l Chế độ thực, tương thích với 8086
l Chế độ bảo vệ :Kết hợp phân đoạn, phân trang
l Chế độ ảo (Virtual mode)
l Cho phép thực hiện mã 8086 trong chế độ bảo vệ
Chế độ bảo vệ trong Intel 386, 486, Pentium,..
Chương 3: Quản lý bộ nhớ
4. Quản lý bộ nhớ trong vi xử lý họ Intel
2Kết luận
Chương 3: Quản lý bộ nhớ
① Tổng quan
1. Ví dụ
2. Bộ nhớ và chương trình
3. Liên kết địa chỉ
4. Các cấu trúc chương trình
② Các chiến lược quản lý bộ nhớ
1. Chiến lược phân chương cố định
2. Chiến lược phân chương động
3. Chiến lược phân đoạn
4. Chiến lược phân trang
5. Chiến lược kết hợp phân đoạn-phân trang
③ Bộ nhớ ảo
1. Giới thiệu
2. Các chiến lược đổi trang
④ Quản lý bộ nhớ trong VXL họ Intel
Các file đính kèm theo tài liệu này:
- bai_giang_he_dieu_hanh_chuong_3_quan_ly_bo_nho_do_quoc_huy.pdf