You are on page 1of 99

Chapter 3: Memory

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10h Edition

NỘI DUNG
I. Các khái niệm
II. Các kiểu địa chỉ nhớ
III.Chuyển đổi địa chỉ nhớ
IV.Cấp phát bộ nhớ liên tục
V. Cấp phát bộ nhớ không liên tục

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.2

I. CÁC KHÁI NIỆM


➢Chương trình phải được mang vào trong bộ nhớ và đặt nó trong một tiến
trình để được xử lý.
➢Vấn đề:
▪ Khi nào nạp?
▪ Nạp vào đâu?
▪ Những phần nào được nạp vào?
➢Quản lý bộ nhớ giúp tối ưu hóa hoạt động của
bộ nhớ
▪ Tối ưu hóa số tiến trình cùng lúc ở
trong bộ nhớ chính nhằm nâng cao tính
đa chương.

▪ Tận dụng tối đa bộ nhớ của máy tính.


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.3
I. CÁC KHÁI NIỆM
➢Quản lý bộ nhớ là công việc của hệ điều hành với sự hỗ trợ của
phần cứng nhằm phân phối, sắp xếp các process trong bộ nhớ sao
cho hiệu quả tối ưu.
➢Mục tiêu cần đạt là nạp càng nhiều process vào bộ nhớ
càng tốt (gia tăng tính đa chương).
➢Trong hầu hết hệ thống, kernel sẽ chiếm một phần cố định
của bộ nhớ, phần còn lại phân phối cho các process.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.4

I. CÁC KHÁI NIỆM


➢Layout của bộ nhớ:
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.5
I. CÁC KHÁI NIỆM
➢Các yêu cầu đối với việc quản lý bộ nhớ:
▪ Cấp phát bộ nhớ cho các process
▪ Tái định vị (relocation): khi swapping,…
▪ Bảo vệ: phải kiểm tra truy xuất bộ nhớ có hợp lệ không
▪ Chia sẻ: cho phép các process chia sẻ vùng nhớ chung
▪ Kết gán địa chỉ nhớ luận lý (logic) của user vào địa chỉ thực (vật lý)
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.6

II. CÁC KIỂU ĐỊA CHỈ NHỚ


➢Bộ nhớ:làmột dãy các ô nhớ liên tục nhau
➢Mỗi ô nhớ (một word) có một địa chỉ
0

➢Chương trình = tập ánh xạ giữa các chỉ thị, 8

các câu lệnh (chỉ thị dữ liệu vào địa chỉ 12

máy) + dữ liệu trong bộ nhớ 16

MOV AX, 10
➢Nạp chương trình
MOV BX, 20 ADD AX, AX,
vào bộ nhớ => đặt các
chỉ thị và dữ liệu vào BX

các ô nhớ => xác định 4


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.7

II. CÁC KIỂU ĐỊA CHỈ NHỚ


➢Địa chỉ vật lý (physical address – địa chỉ thực, địa chỉ tuyệt đối) là một vị trí
thực trong bộ nhớ chính.
➢Địa chỉ logic (logical address – địa chỉ
luận lý) là tham chiếu đến một vị trí nhớ
độc lập với cấu trúc và tổ chức vật lý của
bộ nhớ.
▪ Các trình biên dịch (compiler) tạo ra mã
lệnh chương trình mà trong đó, mọi tham
chiếu bộ nhớ đều là địa chỉ logic.
➢Địa chỉ tương đối (relative address) là
một kiểu địa chỉ logic trong đó các địa chỉ
được biểu diễn tương đối so với một điểm
xác định nào đó trong chương trình.
➢Khi lệnh được thực thi, các tham chiếu đến địa chỉ logic phải được dịch sang địa
chỉ vật lý. Thao tác này cần có sự hổ trợ của phần cứng để đạt hiệu suất cao.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.8

NẠP CHƯƠNG TRÌNH VÀO BỘ NHỚ ➢Bộ linker:


kết hợp các object module thành một file nhị phân có khả năng
thực thi gọi là load module.
➢Bộ loader: nạp load module vào bộ nhớ:
Operating System
Silberschatz, Galvin and Gagne ©2018
Concepts – 10th Edition 1.9

CƠ CHẾ THỰC HIỆN LINKING


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.10

III. CHUYỂN ĐỔI ĐỊA CHỈ NHỚ ➢Chuyển đổi địa


chỉ: quá trình ánh xạ địa chỉ từ không gian địa chỉ này sang
không gian địa chỉ khác.
➢Biểu diễn địa chỉ nhớ:
▪ Trong source code: tượng trưng (symbolic – biến, hằng, pointer,..)
▪ Thời điểm biên dịch: các địa chỉ có thể tái định vị (relocatable
address) hay địa chỉ tương đối (relative address).
• Ví dụ: biến a ở vị trí 14 bytes so với phần header của module. ▪ Thời
điểm linking/ loading: địa chỉ tuyệt đối. Ví dụ: địa chỉ nằm tại
địa chỉ bộ nhớ thực: 2030.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.11
III. CHUYỂN ĐỔI ĐỊA CHỈ NHỚ
Silberschatz,
Operating System Concepts – 10th Edition 1.12
Galvin and Gagne ©2018

III. CHUYỂN ĐỔI ĐỊA CHỈ NHỚ


➢Việc ánh xạ chỉ thị, dữ liệu vào địa chỉ bộ nhớ có thể xảy
ra tại 3 thời điểm:
▪ Thời điểm biên dịch: nếu biết trước địa chỉ bộ nhớ của chương
trình thì có thể kết gán địa chỉ tuyệt đối lúc biên dịch. Nếu địa chỉ
bắt đầu của vùng nhớ bị thay đổi thì sẽ phải biên dịch lại.
▪ Thời điểm nạp: vào thời điểm loading, loader phải chuyển đổi
địa chỉ khả tái định vị thành địa chỉ thực dựa trên một địa chỉ
nền.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.13

CHUYỂN ĐỔI VÀO THỜI ĐIỂM DỊCH


➢Ví dụ: chương trình .com của MS-DOS

Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.14

CHUYỂN ĐỔI VÀO THỜI ĐIỂM NẠP


Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.15

CHUYỂN ĐỔI VÀO THỜI ĐIỂM NẠP ➢Hệ điều hành sẽ


trả về địa chỉ bắt đầu nạp tiến trình và thay các địa chỉ tham chiếu
trong tiến trình (đang là địa chỉ logic) bằng địa chỉ vật lý theo công
thức:
(địa chỉ vật lý) = (địa chỉ bắt đầu) + (địa chỉ logic)
➢Mô hình linker -loader

Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.16

CHUYỂN ĐỔI VÀO THỜI ĐIỂM THỰC THI ▪


Thời điểm thi hành: khi trong quá trình
thực thi, process có thể được di chuyển
từ segment này sang segment khác trong
bộ nhớ thì quá trình chuyển đổi địa chỉ
được trì hoãn đến thời điểm thực thi.
▪ Cần phải có hỗ trợ từ phần cứng để ánh
xạ địa chỉ (ví dụ: thanh ghi cơ sở và
thanh ghi giới hạn (base registers, limit
registers)).
▪ Sử dụng trong đa số các OS đa dụng
trong đó có các cơ chế swapping,

paging, segmentation
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.17
CHUYỂN ĐỔI VÀO THỜI ĐIỂM THỰC THI if
(địa chỉ logic) < (giá trị thanh ghi giới hạn) then
(địa chỉ vật lý) = (giá trị thanh ghi nền) + (địa chỉ logic)
else báo lỗi
➢Mô hình Base andBound:
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.18

CHUYỂN ĐỔI VÀO THỜI ĐIỂM THỰC THI


➢Trong khi thực thi:
▪ Địa chỉ được chuyển đổi động trong khi thực thi.
▪ Không gian địa chỉ vật lý có thể không liên tục (noncontigunous).
▪ Cần có phần cứng để chuyển đổi địa chỉ logic sang địa chỉ vật lý
được nhanh.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.19

MEMORY MANAGEMENT UNIT (MMU) ➢Là một


cơ chế phần cứng để ánh xạ địa chỉ logic thành địa chỉ vật lý
vào thời điểm xử lý.
➢Trong mô hình MMU, mỗi địa chỉ phát sinh bởi một tiến trình
được cộng thêm giá trị của thanh ghi tái định vị (relocation
register) tại thời điểm nó truy xuất đến bộ nhớ.
➢Chương trình người dùng chỉ quan tâm đến địa chỉ lôgic; nó
không thấy địa chỉ vật lý thậtsự.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.20

MEMORY MANAGEMENT UNIT (MMU)


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.21
DYNAMIC LINKING
➢Quá trình link một số module ngoài (external module) được thực hiện
sau khi đã tạo xong load module.
▪ Trong windows: module ngoài là các file dll, trong Unix là các file .so
(shared library).
➢Load module chỉ chứa các tham chiếu đến các module ngoài. Các
tham chiếu này có thể chuyển đổi trong thời điểm sau:
▪ Loading time (load time dynamic linking)
▪ Run time: khi có một lời gọi đến thủ tục được định nghĩa trong module
ngoài. (run time dynamic linking).
➢OS chịu trách nhiệm tìm các module ngoài và kết nối vào load
module (kiểm tra xem module ngoài đã load vào bộ nhớ
chưa).
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.22

DYNAMIC LINKING
Ưu điểm:
➢Module ngoài là một thư viện, thủ tục cung cấp các tiện ích của
OS. Các chương trình thực thi có thể dùng các phiên bản khác
nhau của module ngoài mà không cần sửa đổi, biên dịch lại.
➢Chia sẻ: một module ngoài chỉ cần nạp vào bộ nhớ một lần. Các
process cần dùng module ngoài này thì cùng chia sẻ đoạn mã của
module ngoài đó.
➢Phương pháp dynamic linking cần có sự hổ trợ của OS trong việc
kiểm tra xem thủ tục nào có thể chia sẻ giữa các
process hay một phần mã của riêng process.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.23

DYNAMIC LOADING
➢Cơ chế: chỉ khi nào được gọi đến thì một thủ tục mới được nạp
vào bộ nhớ chính => tăng độ hiệu dụng của bộ nhớ (memory
utilization) bởi vì các thủ tục ít dùng sẽ không chiếm chỗ trong bộ
nhớ.
➢Rất hiệu quả trong trường hợp tồn tại khối lượng lớn mã
chương trình có tần xuất sử dụng thấp, không sử dụng thường
xuyên.
➢Không cần sự hỗ trợ từ OS.
▪ User có trách nhiệm thiết kế và thực hiện các chương trình có
dynamic loading.

▪ OS cung cấp các thư viện hỗ trợ, tạo điều kiện cho các programmer.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.24

MÔ HÌNH QUẢN LÝ BỘ NHỚ THỰC ➢Các cơ chế quản


lý bộ nhớ thực sau đây rất ít (hầu như là không có) được dùng trong
các hệ thống hiện đại, tuy nhiên, nó là ý tưởng cơ bản cho mô hình
quản lý bộ nhớ ảo sau này.
▪ Phân chia cố định (fix partition)
▪ Phân chia động (dynamic partition)
▪ Phân trang đơn giản (simple paging)
▪ Phân đoạn đơn giản (simple segmentation).
➢Mô hình này không bao gồm bộ nhớ ảo, chỉ duy nhất bộ nhớ thực.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.25

IV. CẤP PHÁT BỘ NHỚ LIÊN TỤC


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.26

IV. CẤP PHÁT BỘ NHỚ LIÊN TỤC Ý


tưởng:
➢Mỗi tiến trình được nạp vào một vùng nhớ liên tục đủ lớn để
chứa toàn bộ tiến trình.
➢Ưu điểm: việc chuyển đổi địa chỉ logic thành địa chỉ vật lý
và ngược lại chỉ cần dựa vào một công thức đơn giản
<địa chỉ vật lý> = <địa chỉ bắt đầu> + <địa chỉ logic>
➢Nhược điểm: cấp phát liên tục có nhược điểm lớn nhất là
không sử dụng hiệu quả bộ nhớ do hiện tượng phân mảnh bộ nhớ.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.27
HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ ➢Không thể nạp
được một tiến trình nào đó do không có một vùng nhớ trống liên tục
đủ lớn trong khi tổng kích thước các vùng nhớ trống đủ để thỏa mãn
yêu cầu.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.28

HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ


➢Phân mảnh ngoại (external fragmentation):
▪ Vùng nhớ còn trống đủ lớn để thỏa mãn một yêu cầu cấp phát,
nhưng lại không liên tục.
▪ Dùng kết khối (compacting), nếu có thể, để gom lại thành vùng nhớ
liên tục.
➢Phân mảnh nội (internal fragmentation):
▪ Vùng nhớ được cấp phát lớn hơn vùng nhớ yêu cầu.
▪ Thường xảy ra khi bộ nhớ thực được chia thành các khối kích thước
cố định (fixed-sized block) và các process được cấp phát
theo đơn vị khối.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.29

HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ

OS sẽ cấp phát
hẳn
khối18,464 bytes
cho process
⇒ dư ra 2 bytes không dùng!

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.30

HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ ➢Ví dụ: nếu bộ


nhớ có ba vùng nhớ trống liên tục với kích thước 1MB, 3MB, 5MB
thì không thể nào nạp một chương trình có kích thước 6MB mặc dù
tổng kích thước bộ nhớ trống là 9MB.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.31

IV. CẤP PHÁT BỘ NHỚ LIÊN TỤC ➢Để


giải quyết vấn đề phân mảnh bộ nhớ:
▪ Đề ra chiến lược cấp phát hợp lý
▪ Tái định vị các tiến trình
▪ Sử dụng kỹ thuật hoán vị (swapping)
▪ Sử dụng kỹ thuật phủ lấp (overlay)

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.32

FIXED PARTITION
➢Chia bộ nhớ thành nhiều partition có kích thước
bằng
nhau hoặc khác nhau.
➢Process nào có kích thước nhỏ hơn hoặc bằng kích
thước của partition thì được nạp vào partition đó.
➢Nếu chương trình có kích thước lớn hơn partition thì
phải dùng cơ chế overlay.
➢Nhận xét: dễ bị phân mảnh nội => không hiệu quả

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.33
CHIẾN LƯỢC PLACEMENT
➢Partition có kích thước bằng nhau:
▪ Còn một partition trống => process được nạp vào partition đó.
▪ Không còn partition trống nhưng trong đó có
process đang bị blocked => swap process đó ra
bộ nhớ phụ nhường chỗ cho process mới.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.34

CHIẾN LƯỢC
PLACEMENT

➢Partition có kích thước khác nhau:


▪ Gán mỗi process vào partition có
kích thước nhỏ nhất, phù hợp với nó.
▪ Có hàng đợi cho mỗi partition.
▪ Giảm thiểu phân mảnh nội.
▪ Vấn đề: có thể có hàng đợi full, một
số hàng đợi empty.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.35

CHIẾN LƯỢC PLACEMENT


➢Partition có kích thước không bằng nhau:
▪ Chỉ có một hàng đợi chung cho các partition.
▪ Khi cần nạp process vào bộ nhớ => chọn partition có bộ nhớ còn
trống nhỏ nhất.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.36
DYNAMIC PARTITION
◼ Số lượng partition không cố định và partition có thể có kích thước khác nhau ◼
Mỗi process được cấp phát chính xác dung lượng bộ nhớ cần thiết
◼ Gây ra hiện tượng phân mảnh ngoại

1/17/2018 37
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.37
ĐỀ RA CHIẾN LƯỢC CẤP PHÁT HỢP LÝ➢Dùng
để quyết định cấp phát khối bộ nhớ nào còn trống cho process.
➢Chiến lược placement:
▪ Best-fit: chọn khối nhớ
trống nhỏ nhất vừa đủ để
cấp phát. ▪ First-fit: chọn
khối nhớ trống phù hợp
đầu tiên kể từ đầu bộ nhớ
▪ Next-fit: chọn khối nhớ
trống phù hợp đầu tiên
kể từ vị trí cấp phát cuối cùng
▪ Worst-fit: chọn khối nhớ trống lớn nhất

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.38

CHIẾN LƯỢC PLACEMENT


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.39
ĐỀ RA CHIẾN LƯỢC CẤP PHÁT HỢP LÝ ➢Chọn
vùng nhớ trống nào để cấp phát cho một tiến trình khi có nhu cầu. ▪
First-fit: Cấp phát vùng nhớ trống liên tục đầu tiên đủ lớn.
▪ Best-fit: Cấp phát vùng nhớ trống liên tục nhỏ nhất đủ lớn. Chiến
lược này tạo ra lỗ trống nhỏ nhất còn thừa lại => phải tìm kiếm trên
toàn bộ danh sách các vùng trống.
▪ Next-fit: chọn khối nhớ trống phù hợp đầu tiên kể từ vị trí cấp phát
cuối cùng.
▪ Worst-fit: cấp phát vùng nhớ trống liên tục lớn nhất đủ lớn => phải
tìm kiếm trên toàn bộ danh sách.
➢First-fit tốt hơn về tốc độ và Best-fit tối ưu hóa việc sử dụng bộ nhớ.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.40

TÁI ĐỊNH VỊ CÁC TIẾN TRÌNH


➢Kết hợp các mảnh bộ nhớ trống nhỏ rời rạc thành một vùng nhớ
trống lớn liên tục.
➢Đò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ớ.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.41

TÁI ĐỊNH VỊ CÁC TIẾN TRÌNH


Operating System Concepts – 10th
Silberschatz, Galvin and Gagne ©2018
Edition 1.42

TÁI ĐỊNH VỊ CÁC TIẾN TRÌNH


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.43

KỸ THUẬT HOÁN VỊ (SWAPPING) ➢Cơ chế: Một


process có thể tạm thời bị swap ra khỏi bộ nhớ chính và lưu trên
một hệ thống lưu trữ phụ. Sau đó, process có thể được nạp lại vào
bộ nhớ để tiếp tục quá trình thực thi.
➢Chính sách:
▪ Round Robin
▪ Roll out, Roll in: Dùng theo độ ưu tiên (process có độ ưu tiên thấp
sẽ bị swap out ra thay thế cho process có độ ưu tiên cao hơn).

Hiện nay, ít hệ thống sử dụng cơ chế swapping trên.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.44
KỸ THUẬT HOÁN VỊ (SWAPPING)

Operating System Concepts –


Silberschatz, Galvin and Gagne ©2018
10th Edition 1.45
KỸ THUẬT PHỦ LẤP (OVERLAY) ➢Cơ chế: Chia
chương trình (process) thành nhiều phần nhỏ hơn bộ nhớ, mỗi phần
là một overlay. Tại mỗi thời điểm, chỉ giữ lại trong bộ nhớ những
lệnh hoặc dữ liệu cần thiết, giải phóng các lệnh/dữ liệu chưa hoặc
không cần dùng đến.
➢Cơ chế này rất hữu ích khi kích thước một process lớn hơn
không gian bộ nhớ cấp cho process đó.
➢Cơ chế này được điều khiển bởi người sử dụng (thông qua sự hỗ
trợ của các thư viện lập trình) chứ không cần sự hỗ trợ của hệ điều
hành.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.46

KỸ THUẬT PHỦ LẤP (OVERLAY)


Silberschatz,
Operating System Concepts – 10th Edition 1.47
Galvin and Gagne ©2018

BÀI TẬP

Giả sử bộ nhớ chính được cấp phát các phân vùng có kích thước
là 600K, 500K, 200K, 300K (theo thứ tự), sau khi thực thi xong,
các tiến trình có kích thước 212K, 417K, 112K, 426K (theo thứ
tự) sẽ được cấp phát bộ nhớ như thế nào, nếu sử dụng: Thuật toán
First fit, Best fit, Next fit, Worst fit? Thuật toán nào cho phép sử
dụng bộ nhớ hiệu quả nhất trong trường hợp trên

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.48 1/17/2018 48

V. CẤP PHÁT KHÔNG LIÊN TỤC ➢Ý tưởng: chia các


vùng nhớ thành các frame (segment), các tiến trình thành các
fragment (pages). Các fragment (pages) sẽ được đưa vào các frame
(segment). Các frame (segment) sẽ không được lưu trữ liên tục trên
không gian vùng nhớ.
➢Các kỹ thuật:
▪ Phân trang (paging)
▪ Phân đoạn (segment)
▪ Phân trang kết hợp phân đoạn.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.49

PHƯƠNG PHÁP PHÂN TRANG (PAGING)


➢Không gian địa chỉ logic của một tiến trình có thể không liên
tục.
➢Chia bộ nhớ vật lý thành các khối có kích thước cố định gọi là
khung(frame) (kích thước là số mũ của 2, từ 512 đến 8192 bytes).
➢Chia bộ nhớ logic thành các khối có cùng kích thước và gọi là
trang(pages). ➢Lưu trạng thái của tất cả các khung (frame).
➢Để chạy một chương trình có kích thước n trang, cần phải tìm n khung trống
và nạp chương trình vào.
➢Tạo một bảng trang để chuyển đổi địa chỉ lôgic sang địa chỉ vật lý.
➢Có hiện tượng phân mảnh bộ nhớ nội vi

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.50
PHƯƠNG PHÁP PHÂN TRANG (PAGING)

Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.51
MÔ HÌNH CHUYỂN ĐỔI ĐỊA CHỈ ➢Địa
chỉ được tạo ra bởi CPU gồm có hai phần:
▪ Số hiệu trang (Page number)(p)–được dùng như là một chỉ số
của một bảng trang chứa địa chỉ cơ sở của mỗi trang trong bộ
nhớ vật lý.
▪ Địa chỉ tương đối trong trang (Page offset)(d)–kết hợp với địa chỉ
cơ sở để định ra không gian địa chỉ vật lý được gởi đến bộ nhớ.
m
➢Nếu kích thước của không gian địa chỉ ảo là 2 , và kích thước của
n
trang là 2 (đơn vị là byte hay word tùy theo kiến trúc máy) thì:
Bảng trang sẽ có tổng
cộng 2m/2n = 2m - n

mục (entry)
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.52

MÔ HÌNH CHUYỂN ĐỔI ĐỊA CHỈ


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.53
MÔ HÌNH CHUYỂN ĐỔI ĐỊA CHỈ
Silberschatz, Galvin
Operating System Concepts – 10th Edition 1.54
and Gagne ©2018
CHUYỂN ĐỔI ĐỊA CHỈ NHỚ TRONG TRANG

Operating System
Silberschatz, Galvin and Gagne ©2018
Concepts – 10th Edition 1.55

CÀI ĐẶT BẢNG TRANG (PAGE TABLE)


➢Bảng trang được đặt trong bộ nhớ.
➢Page-table base register (PTBR) chỉ đến bảng trang.
➢Page-table length register (PRLR) cho biết kích thước của bảng trang.
➢Với mô hình này, mọi sự truy cập chỉ thị/ dữ liệu đều đòi hỏi hai lần truy
cập vùng nhớ: 1)truy cập bảng trang; 2)chỉ thị hoặc dữ liệu => có vẻ chậm.
➢Khắc phục vấn đề hai lần truy cập vùng nhớ bằng cách sử dụng một vùng
đệm phần cứng tra cứu nhanh đặc biệt (special fast-lookup hardware) gọi là
associative registers hoặc translation look-aside buffers (TLBs)

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.56

CÀI ĐẶT BẢNG TRANG (PAGE TABLE)


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.57
TRANSLATION LOOK-ASIDE BUFFERS
➢TLB tìm kiếm truy xuất dữ liệu với tốc độ cực nhanh.
➢Ánh xạ page number:
▪ Nếu page number có trong TLB (hit) => lấy ngay được frame
number => tiết kiệm được việc truy cập bộ nhớ để lấy frame number
từ bảng phân trang.
▪ Ngược lại (miss), phải lấy frame number từ bảng phân trang
như bình thường.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.58

BẢO VỆ VÙNG NHỚ


➢Làm sao biết trang nào của tiến trình nào? Cần bảo vệ
các tiến trình truy xuất vào trang không phải của mình.
➢Việc bảo vệ vùng nhớ được cài đặt bằng cách liên kết một
khung với một bit, gọi là bit kiểm tra hợp lệ (valid-invalid
bit).
➢Valid-invalid bit được đính kèm vào mỗi ô trong bảng trang:
▪ “valid” chỉ ra rằng trang đi kèm là nằm trong không gian địa
chỉ lôgic của tiến trình vì vậy truy xuất trang này là hợp lệ.
▪ “invalid” chỉ ra rằng trang đi kèm không nằm trong không gian địa
chỉ lôgic của tiến trình.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.59
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.60
TỔ CHỨC BẢNG TRANG (PAGE TABLE)
➢Chỉ một bảng trang (cho mỗi tiến trình)
➢Tiến trình nhiều trang => quản lý bộ nhớ rất lớn => số trang
nhiều => kích thước của bảng
trang phải lớn => không tối ưu.
➢Giải pháp:
▪ Phân trang đa cấp (multilevel paging)
▪ Bảng trang nghịch đảo
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.61

PHÂN TRANG ĐA CẤP


➢Phân chia bảng trang thành các phần nhỏ
➢Bản thân bảng trang cũng được phân trang
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.62
MÔ HÌNH PHÂN

TRANG 2 CẤP

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.63
VÍ DỤ PHÂN TRANG 2 CẤP ➢Một địa chỉ lôgic (trên
máy 32 bit với kích thước trang là 4K) được chia thành:
▪ Page number: 20 bit.
▪ Page offset: 12 bit.
➢Bởi vì bảng trang được phân trang, số trang tiếp tục được
phân chia thành:
▪ Page number: 10-bit.
▪ Page offset: 10 bit.
➢Địa chỉ lôgic sẽ có cấu trúc

như sau:
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.64

VÍ DỤ PHÂN TRANG 2 CẤP


➢Chuyển đổi địa chỉ
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.65

VÍ DỤ PHÂN TRANG 2 CẤP


➢Nếu chỉ dùng một trang
▪ Bảng trang sẽ có 220 phần tử.
➢Nếu dùng phân trang 2 cấp
▪ Bảng trang ngoài cần 210phần tử
▪ Bảng trang trong vẫn có 220 phần tử nhưng có thể được đặt ở vùng
nhớ phụ
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.66

BẢNG TRANG NGHỊCH ĐẢO


➢Sử dụng một bảng trang duy nhất cho mọi tiến trình
➢Một entry cho mỗi khung (bộ nhớ vật lý).
➢Một entry bao gồm địa chỉ ảo của khung và tiến trình sở hữu
khung đó.
➢Giảm kích thước lưu trữ bảng trang, nhưng tăng thời gian tìm
kiếm bảng trang.
➢Dùng bảng băm để tăng tốc tìm kiếm.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.67

BẢNG TRANG NGHỊCH ĐẢO


Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.68

GIẢI THUẬT TÌM TRANG


➢Chỉ số trang được biến đổi thành hash value – chỉ số mục cần
truy cập trong bảng băm. Sau đó, trong danh sách liên kết của
mục, tìm phần tử chứa chỉ số trang để trích ra được chỉ số frame.

Operating System
Silberschatz, Galvin and Gagne ©2018
Concepts – 10th Edition 1.69

CHIA SẺ
▪ Ở cấp độ trang
▪ Đứng ở khía cạnh người dùng, khá bất tiện
• Vd:Đoạn mã nằm trên nhiều trang => phải chia sẻ tất cả các
trang đó với nhau.
▪ Đoạn mã phải nằm ở một vị trí giống nhau trong tất cả các
không gian địa chỉ của của tiến trình muốn chia sẻ

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.70
CHIA SẺ

Operating
Silberschatz, Galvin and Gagne ©2018
System Concepts – 10th Edition 1.71

PHÂN ĐOẠN
➢Hổ trợ quản lý bộ nhớ theo góc độ người dùng.
➢Một chương trình bao gồm nhiều phân đoạn (segment):
▪ Đoạn mã
▪ Biến toàn cục, dữ liệu
▪ Stack
▪ Heap
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.72

PHÂN ĐOẠN
➢Thông thường, khi một chương trình được biên dịch. Trình
biên dịch sẽ tự động xây dựng các segment.
➢Loader sẽ gán cho mỗi segment một số định danh riêng.
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.73

PHÂN ĐOẠN
Silberschatz,
Operating System Concepts – 10th Edition 1.74
Galvin and Gagne ©2018

PHÂN ĐOẠN
➢Dùng cơ chế phân đoạn trong quản lý bộ nhớ có hổ trợ user view:
▪ Không gian địa chỉ ảo là một tập các đoạn, mỗi đoạn có tên và kích
thước riêng.
▪ Một địa chỉ logic gồm tên đoạn và offset bên trong đoạn đó.
▪ Cho phép không gian địa chỉ vật lý cấp không liên tục cho các
process.

Silberschatz, Galvin and Gagne ©2018


Operating System Concepts – 10th Edition 1.75

PHÂN ĐOẠN
Operating System
Silberschatz, Galvin and Gagne ©2018
Concepts – 10th Edition 1.76

PHÂN ĐOẠN
➢Địa chỉ logic = <segment-number, offset>
➢Bảng phân đoạn (Segment table): chuyển đổi địa chỉ hai
chiều thành địa chỉ vật lý một chiều. Mỗi ô trong bảng gồm
có:
▪ Thanh ghi nền (base) –chứa địa chỉ vật lý bắt đầu của phân đoạn
trong bộ nhớ chính.
▪ Thanh ghi giới hạn (limit)–chỉ kích thước của phân đoạn.
➢Segment-table base register (STBR)lưu trữ địa chỉ của bảng
phân đoạn trong vùng nhớ.
➢Segment-table length register (STLR)chỉ số segment
được sử dụng bởi 1 chương trình
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.77
PHÂN ĐOẠN
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.78

CHUYỂN ĐỔI ĐỊA CHỈ


➢Mỗi địa chỉ ảo là một bộ<s,d>:
➢số hiệu phân đoạn s : được sử dụng như chỉ mục đến bảng phân
đoạn
➢địa chỉ tương đối d : có giá trị trong khoảng từ 0 đến giới hạn
chiều dài của phân đoạn. Nếu địa chỉ tương đối hợp lệ, nó sẽ được
cộng với giá trị chứa trong thanh ghi nền để phát sinh địa chỉ vật lý
tương ứng
Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.79

CHUYỂN ĐỔI ĐỊA CHỈ


Silberschatz, Galvin and Gagne ©2018
Operating System Concepts – 10th Edition 1.80

You might also like