You are on page 1of 79

Chương 3

Quản lý bộ nhớ
1. TỔNG QUAN
1.1 Vì sao phải tổ chức, quản lý bộ nhớ?
 CPU chỉ có thể trao đổi thông tin với bộ nhớ
chính
 Các chương trình muốn được thực thi cần được
nạp vào bộ nhớ chính, tạo lập tiến trình tương
ứng để xử lý
 Các hệ thống đa chương trên bộ nhớ chính ngoài
HĐH có thể có nhiều tiến trình đang hoạt động
 Kích thước bộ nhớ chính là hữu hạn nhưng yêu
cầu bộ nhớ thì vô hạn
…

3
1.1 Vì sao phải tổ chức, quản lý bộ nhớ?
 Như vậy, HĐH cần phải tổ chức quản lý bộ nhớ
một cách hợp lý để có thể:
 Đưa bất kỳ một tiến trình nào đó vào bộ nhớ khi
có yêu cầu, cho dù khi trên bộ nhớ không còn
không gian trống
 Bảo vệ các tiến trình của hệ điều hành và các tiến
trình trên bộ nhớ, tránh các trường hợp truy xuất
bất hợp lệ xảy ra.

4
1.2 Nhiệm vụ quản lý bộ nhớ
 Tái định vị
 Bảo vệ bộ nhớ
 Chia sẻ bộ nhớ
 Tổ chức bộ nhớ logic
 Tổ chức bộ nhớ vật lý

5
Tái định vị (Relocation)
 Trong các hệ thống đa chương không gian bộ nhớ
chính thường được chia sẽ cho nhiều tiến trình và
yêu cầu bộ nhớ của các tiến trình luôn lớn hơn
không gian bộ nhớ vật lý mà hệ thống hiện có
 Cần thực hiện cơ chế hoán đổi (Swap):
 Một chương trình đang hoạt động trên bộ nhớ sẽ bị
đưa ra đĩa (swap-out) và sẽ được đưa vào lại (swap-
in) tại thời điểm thích hợp
 Khi thực hiện swap-in 1 chương trình vào lại bộ nhớ
HĐH phải định vị nó đúng vào vị trí mà trước khi nó bị
swap-out

6
Bảo vệ bộ nhớ (Protection)
 Mỗi tiến trình phải được bảo vệ để chống lại sự
truy xuất bất hợp lệ vô tình hay có chủ ý của các
tiến trình khác.
 Mỗi tiến trình chỉ được phép truy xuất đến không
gian địa chỉ mà HĐH đã cấp cho nó
 Bộ phận Qlý bộ nhớ phải biết không gian địa chỉ
của tất cả các tiến trình trên bộ nhớ
 Khi tiến trình đưa ra địa chỉ truy xuất bộ phận Qlý
bộ nhớ phải kiểm tra tất cả các yêu cầu truy xuất
bộ nhớ của mỗi tiến trình

7
Chia sẻ bộ nhớ (Sharing)
 Bất kỳ một chiến lược nào được cài đặt đều
phải có tính mềm dẻo để cho phép nhiều tiến
trình có thể truy cập đến cùng một địa chỉ trên
bộ nhớ chính
 Ví dụ, khi có nhiều tiến trình cùng thực hiện
một chương trình thì việc cho phép mỗi tiến
trình cùng truy cập đến một bản copy của
chương trình sẽ thuận lợi hơn khi cho phép
mỗi tiến trình truy cập đến một bản copy sở
hữu riêng.

8
Tổ chức bộ nhớ logic (Logical organization)
 Bộ nhớ chính của hệ thống máy tính được tổ
chức như là một dòng hoặc một mảng
 Không gian địa chỉ bao gồm một dãy có thứ tự
các byte hoặc các word.
 Bộ nhớ phụ cũng được tổ chức tương tự
 Cách tổ chức này có sự kết hợp chặt chẽ với
phần cứng máy tính nhưng lại không phù hợp với
cách xây dựng của chương trình
 Đại đa số các chương trình được tổ chức thành
các modul

9
Tổ chức bộ nhớ vật lý (Physical organization)
 Bộ nhớ máy tính được tổ chức theo 2 cấp:
 Bộ nhớ chính: tốc độ truy xuất nhanh, nhưng giá
thành cao và dữ liệu không thể tồn tại lâu dài trên
nó.
 Bộ nhớ phụ: giá rẻ, dung lượng lớn, dữ liệu được
lưu trữ lâu dài nhưng tốc độ truy xuất chậm.
 Theo giản đồ 2 cấp này, việc tổ chức luồng thông
tin giữa bộ nhớ chính và bộ nhớ phụ là nhiệm vụ
quan trọng của hệ thống

10
1.3. Không gian địa chỉ và không gian
vật lý
 Địa chỉ logic (logical address)  – còn gọi là địa chỉ ảo , là
tất cả các địa chỉ do bộ xử lý tạo ra.
 Địa chỉ vật lý (physical address) - là địa chỉ thực tế mà
trình quản lý bộ nhớ nhìn thấy và thao tác.
  Không gian địa chỉ – là tập hợp tất cả các địa chỉ ảo phát
sinh bởi một chương trình.
  Không gian vật lý – là tập hợp tất cả các địa chỉ vật lý
tương ứng với các địa chỉ ảo.

 Việc ánh xạ tại thời điểm thực thi từ địa chỉ ảo tới địa chỉ
vật lý được thực hiện bởi một thiết bị phần cứng được gọi
là bộ quản lý bộ nhớ MMU (memory-management unit)

11
Sô ñoà taùi ñònh vò ñoäng (Dynamic Relocation)

 CPU saûn sinh Ñòa chæ loâ-gíc


 MMU thöïc hieän: Ñòa chæ loâ-gíc + Noäi dung thanh
12
ghi taùi ñònh vò ==> Ñòa chæ vaät lyù
Vò trí vaø Chöùc naêng cuûa MMU

(MMU göûi caùc ñòa chæ


vaät lyù sang Boä nhôù)

13
SÖÛ DUÏNG BASE REGISTER VAØ LIMIT REGISTER

(Ñòa chæ byte


ñaàu cuûa Job2)

(Soá byte cuûa Job2)

14 Memory
THUAÄT GIAÛI BAÛO VEÄ BOÄ NHÔÙ

Job i

(CPU saûn sinh 1


ñòa chæ boä nhôù)

15 (Baét loãi truy caäp sai ñòa chæ)


Cô cheá overlay
 Taïi moãi thôøi ñieåm, chæ giöõ laïi trong boä nhôù
nhöõng leänh hoaëc döõ lieäu caàn thieát, giaûi phoùng
caùc leänh/döõ lieäu chöa hoaëc khoâng caàn duøng
ñeán.
 Cô cheá naøy raát höõu duïng khi kích thöôùc moät
process lôùn hôn khoâng gian boä nhôù caáp cho
process ñoù.
 Cô cheá naøy ñöôïc ñieàu khieån bôûi ngöôøi söû
duïng (thoâng qua söï hoã trôï cuûa caùc thö vieän laäp
trình) chöù khoâng caàn söï hoã trôï cuûa heä ñieàu
haønh
16
Cô cheá overlay
Pass 1 70K Ñôn vò: byte
Pass 2 80K symbol
20K
Symbol table 20K table
Common routines 30K

Assembler common
30K
routines
Total memory
available = 150KB overlay
10K
driver naïp vaø thöïc thi

pass 1 pass 2

17 70K 80K
Cô cheá swapping
 Moät process coù theå taïm thôøi bò swap ra khoûi boä nhôù
chính vaø löu treân moät heä thoáng löu tröõ phuï. Sau ñoù,
process coù theå ñöôïc naïp laïi vaøo boä nhôù ñeå tieáp tuïc
quaù trình thöïc thi.
Swapping policy: hai ví duï
 Round-robin: swap out P1 (vöøa tieâu thuï heát quantum cuûa
noù), swap in P2 , thöïc thi P3 ,…
 Roll out, roll in: duøng trong cô cheá ñònh thôøi theo ñoä öu tieân
(priority-based scheduling)
 Process coù ñoä öu tieân thaáp hôn seõ bò swap out nhöôøng choã cho
process coù ñoä öu tieân cao hôn môùi ñeán ñöôïc naïp vaøo boä nhôù ñeå
thöïc thi
 Hieän nay, ít heä thoáng söû duïng cô cheá swapping treân

18
Minh hoïa cô cheá swapping

19
Phaân maûnh (fragmentation)
 Phaân maûnh ngoaïi (external fragmentation)
 Kích thöôùc khoâng gian nhôù coøn troáng ñuû ñeå thoûa maõn
moät yeâu caàu caáp phaùt, tuy nhieân khoâng gian nhôù naøy
khoâng lieân tuïc  coù theå duøng cô cheá keát khoái (compaction)
ñeå gom laïi thaønh vuøng nhôù lieân tuïc.

 Phaân maûnh noäi (internal fragmentation)


 Kích thöôùc vuøng nhôù ñöôïc caáp phaùt coù theå hôi lôùn hôn
vuøng nhôù yeâu caàu.
 Ví duï: caáp moät khoaûng troáng 18,464 bytes cho moät process yeâu
caàu 18,462 bytes.
 Hieän töôïng phaân maûnh noäi thöôøng xaûy ra khi boä nhôù thöïc
ñöôïc chia thaønh caùc khoái kích thöôùc coá ñònh (fixed-sized
block) vaø caùc process ñöôïc caáp phaùt theo ñôn vò khoái. Ví duï:
cô cheá phaân trang (paging).

20
Phaân maûnh noäi
operating yeâu caàu keá tieáp
system laø 18,462 bytes !!!

(used)

hole kích thöôùc


18,464 bytes caàn quaûn lyù
khoaûng troáng 2
bytes !?!
OS seõ caáp phaùt haún khoái 18,464 bytes cho
process  dö ra 2 bytes khoâng duøng!

21
Phaân caáp boä nhôù

22
NGUYEÂN TAÉC LÖU GAÀN (CACHING)
– Laø nguyeân taéc quan troïng cuûa heä thoáng maùy
tính.
– Thoâng tin töø RAM coù theå ñöôïc cô cheá phaàn
cöùng ñöa vaøo boä nhôù nhanh hôn goïi laø Cache.
Khi CPU caàn chính thoâng tin ñoù, khoâng caàn phaûi
truy xuaát RAM, maø laáy ngay töø Cache.
– Loaïi boä nhôù naøy khoâng do HÑH quaûn lyù vaø
caáp phaùt.
– Thöïc teá, RAM (Boä nhôù Sô caáp) laø loaïi Cache
nhanh so vôùi ñóa cöùng (Boä nhôù thöù caáp) vaø
HÑH coù chöùc naêng quaûn lyù söï löu chuyeån döõ
23
lieäu giöõa 2 loaïi boä nhôù
2. KỸ THUẬT CẤP PHÁT BỘ NHỚ
 Kỹ thuật phân vùng cố định (Fixed partitioning)
 Kỹ thuật phân vùng động (Dynamic partitioning)
 Kỹ thuật phân trang (Paging)
 Kỹ thuật phân đoạn (Segmentation)

25
2.1 Kỹ thuật phân vùng cố định
 Không gian địa chỉ được chia thành 2 vùng cố
định
 Vùng địa chỉ thấp dùng để chứa HĐH
 Vùng còn lại cấp cho các tiến trình được nạp vào
bộ nhớ chính (user program)

26
2.1 Kỹ thuật phân vùng cố định

 Với hệ thống đơn chương:


 Việc quản lý bộ nhớ đơn giản vì vùng nhớ user program
chỉ cấp cho 1 chương trình
 HĐH sử dụng 1 thanh ghi giới hạn để ghi địa chỉ ranh
giới giữa HĐH và chương trình người sử dụng
 Khi chương trình người sử dụng đưa ra địa chỉ cần truy
xuất, HĐH sẽ so sánh với giá trị giới hạn được ghi trong
thanh ghi giới hạn
 Nếu nhỏ hơn giá trị giới hạn thì HĐH từ chối việc truy xuất
 Ngược lại, nếu lớn hơn sẽ cho phép truy xuất
=> Nhiệm vụ quản lý sẽ trở nên đơn giản

27
2.1 Kỹ thuật phân vùng cố định

 Với hệ thống đa chương:


 Vùng nhớ user program được chia n phần không nhất thiết
phải bằng nhau. Mỗi phần được được gọi là 1 phân vùng
 Mỗi tiến trình có thể được nạp vào 1 phân vùng bất kỳ nếu
kích thước của nó <= kích thước của phân vùng và phân
vùng này còn trống
 Khi có tiến trình cần được nạp vào bộ nhớ mà không còn
phân vùng trống thí HĐH sẽ swap-out 1 tiến trình tại 1 phân
vùng nào đó có kích thước vừa đủ, không chứa tiến trình
đang ở trạng thái ready hoặc running và không có quan hệ
với tiến trình đang ở trạng thái running khác để nạp tiến
trình vừa có yêu cầu

28
2.1 Kỹ thuật phân vùng cố định
(8M) 2M
(8M) 4M
(8M) 6M
(8M) 8M
(8M) 8M
(8M) 12M
(8M) 16M
OS (8M)
OS(8M)
Phân vùng kích thước bằng nhau Phân vùng kích thước không bằng nhau

Ví dụ về phân vùng cố định của bộ nhớ 64MByte


29
2.1 Kỹ thuật phân vùng cố định
 Có 2 khó khăn với việc dùng phân vùng cố định có
kích thước bằng nhau
 Thứ 1: Nếu chương trình có kích thước quá lớn so với
1 kích thước của phân vùng, để giải quyết việc này thì:
 Người lập trình phải thiết kế chương trình theo cấu
trúc overlay
 Chỉ 1 phần cần thiết của chương trình mới được nạp
vào bộ nhớ lúc nạp chương trình. Khi cần modul nào
đó mà không sẵn có trong bộ nhớ người sử dụng phải
nạp nó vào đúng phân vùng của chương trình và sẽ
ghi đè lên bất kỳ chương trình hoặc dữ liệu ở trong đó

30
2.1 Kỹ thuật phân vùng cố định

 Thứ 2: Khi kích thước của chương trình nhỏ hơn


kích thước của 1 phân vùng hoặc lớn hơn kích
thước của phân vùng nhưng không phải là bội
số của kích thước phân vùng.
Điều này gây ra sự phân mảnh nội vi, lãng phí
bộ nhớ

31
2.1 Kỹ thuật phân vùng cố định

 Để khắc phục nhược điểm này có thể sử dụng


phân vùng cố định có kích thước không bằng
nhau
 Có 2 lựa chọn để đưa tiến trình vào dạng phân
vùng này

32
2.1 Kỹ thuật phân vùng cố định
 Lựa chọn 1:
 Mỗi phân vùng có một hàng
đợi tương ứng
 Khi 1 tiến trình cần được nạp
vào bộ nhớ sẽ đưa vào hàng
đợi của phân vùng có kích Tiến trình
thước vừa đủ để chứa nó để mới
được đưa vào phân vùng
 Nhược điểm: Có thể có phân
vùng đang trống nhưng lại có
nhiều tiến trình đang chờ để OS
vào phân vùng khác

33
2.1 Kỹ thuật phân vùng cố định
 Lựa chọn 2:
 Dùng 1 hàng đời chung cho
tất cả các phân vùng
 Khi có tiến trình muốn nạp
vào bộ nhớ nhưng chưa
được nạp sẽ được đưa vào
hàng đợi Tiến trình
 Khi có phân vùng trống, mới
HĐH sẽ chọn tiến trình có
kích thước vừa đủ để đưa OS
vào phân vùng
 Phương pháp này gây khó
khăn trong việc lựa chọn tiến
trình để nạp vào phân vùng

34
2.2 Kỹ thuật phân vùng động

 Vùng nhớ user program không được phân chia


trước
 Khi có tiến trình nạp vào bộ nhớ HĐH cấp cho
nó không gian nhớ đúng kích thước của nó
 Khi tiến trình kết thúc vùng nhớ của nó sẽ được
thu hồi để HĐH cấp cho tiến trình khác kể cả tiến
trình mới có kích thước nhỏ hơn vùng nhớ của
tiến trình đã giải phóng.

35
2.2 Kỹ thuật phân vùng động
1. Tiến trình 1,2,3,4 lần lượt được
nạp vào bộ nhớ
Process4
2. Tiến trình 2 kết thúc, vùng nhớ 128k
được giải phóng
3. Tiến trình 5 được nạp vào vùng
Process3
nhớ của tiến trình 2 vừa giải 32k
phóng
4. Tiến trình 6 yêu cầu được nạp vào
bộ nhớ nhưng không thể vì không Process2
Process5
128k
có vùng nhớ trống phù hợp để Process6 120k
65k
nạp trong khi tổng dung lượng
nhớ còn trống lớn hơn kích thước
Process1
mà tiến trình yêu cầu 64k

OS- 128k

36
2.2 Kỹ thuật phân vùng động
 Trong kỹ thuật phân vùng động, HĐH phải đưa ra các
cơ chế thích hợp để quản lý các khối nhớ đã cấp phát
hay còn trống trên bộ nhớ.
 HĐH sử dụng 2 cơ chế: Bản đồ bít và Danh sách liên
kết.
 Hai cơ chế HĐH đều chia không gian nhớ thành các
đơn vị cấp phát có kích thước bằng nhau, các đơn vị
cấp phát liên tiếp nhau tạo thành 1 khối nhớ, HĐH
cấp phát các khối nhớ này cho các tiến trình

37
2.2 Kỹ thuật phân vùng động

 Cơ chế bản đồ Bit: Mỗi đơn vị cấp phát được đại


diện bởi một Bit trong bản đồ bit. Đơn vị cấp phát
còn trống đại diện bằng bit 0, ngược lại đại diện
bằng bit 1.

Bản đồ bit

38
2.2 Kỹ thuật phân vùng động
 Cơ chế danh sách liên kết:
 Mỗi khối trên bộ nhớ được đại diện bởi một phần tử
trong danh sách liên kết
Mỗi phần tử gồm 4 trường chính:
 Trường đầu tiên: cho biết khối nhớ đã cấp phát (kí
hiệu P) hay còn trống (kí hiệu H)
 Trường thứ 2: cho biết thư tự của đơn vị cấp phát
đầu tiên trong khối
 Trường thứ 3: cho biết đơn vị tổng số đơn vị cấp
phát trong khối
 Con trỏ Next

39
2.2 Kỹ thuật phân vùng động

40
2.2 Kỹ thuật phân vùng động
 Khi có một tiến trình cần được nạp vào bộ nhớ mà
bộ nhớ có nhiều hơn một khối nhớ trống có kích
thước lớn hơn kích thước của tiến trình đó, HĐH
phải quyết định chọn một khối nhớ phù hợp để nạp
tiến trình sao cho việc lựa chọn này dẫn đến việc sử
dụng bộ nhớ chính là hiệu quả nhất.
 Thuật toán mà HĐH sử dụng trong trường hợp này:
Best-fit, Worst-fit, First-fit, và Next-fit

41
 Duøng ñeå quyeát ñònh caáp
phaùt khoái boä nhôù troáng
naøo cho moät process
 Muïc tieâu: giaûm chi phí
compaction
 Caùc chieán löôïc placement
 Best-fit: choïn khoái nhôù troáng
nhoû nhaát
 First-fit: choïn khoái nhôù troáng
phuø hôïp ñaàu tieân keå töø
ñaàu boä nhôù
 Next-fit: choïn khoái nhôù troáng
phuø hôïp ñaàu tieân keå töø vò
trí caáp phaùt cuoái cuøng
 Worst-fit: choïn khoái nhôù
troáng lôùn nhaát
42
2.3 Kỹ thuật phân trang

 Bộ nhớ chính được chia thành các phần bằng


nhau và cố định, được đánh số bắt đầu từ 0 và
được gọi là các khung trang (page frame).
 Không gian địa chỉ của các tiến trình cũng được
chia thành các phần có kích thước bằng kích
thước của một khung trang được gọi là các trang
(page).
 Khi tiến trình nạp vào bộ nhớ thì các trang được
nạp vào các khung trang bất kỳ còn trống có thể
không liên tiếp nhau.
Cơ chế MMU trong kỹ thuật phân trang
 Cơ chế phần cứng hỗ trợ thực hiện chuyển đổi địa
chỉ trong cơ chế phân trang là bảng trang (pages
table). Mỗi phần tử trong bảng trang cho biết các địa
chỉ bắt đầu của vị trí lưu trữ trang tương ứng trong
bộ nhớ vật lý (số hiệu khung trang trong bộ nhớ vật
lý đang chứa trang ). Mỗi tiến trình có bảng trang
riêng

44
Chuyển đổi địa chỉ
 Mỗi địa chỉ phát sinh bởi CPU được chia thành hai
phần:
 số hiệu trang - Page number (p): sử dụng như chỉ
mục đến phần tử tương ứng trong bảng trang.
 địa chỉ tương đối trong trang - Page offset (d): kết hợp
với địa chỉ bắt đầu của trang để tạo ra địa chỉ vật lý mà
trình quản lý bộ nhớ sử dụng.
 Neáu kích thöôùc cuûa khoâng gian ñòa chæ aûo laø 2m, vaø kích
thöôùc cuûa trang laø 2n (ñôn vò laø byte hay word tuøy theo
kieán truùc maùy) thì page number page offset
p d
m  n bits n bits
(ñònh vò töø 0  2m  n  1) (ñònh vò töø 0  2n  1)

45 Baûng phaân trang seõ coù toång coäng 2m/2n = 2m  n muïc (entry)
2.3 Kỹ thuật phân trang
f frames
logical physical
address address f 00…00

CPU p d f d

f 11…11

physical
memory
page table

46
VD

47
Tổ chức lưu trữ bảng trang:
 Đa số các hệ điều hành cấp cho mỗi tiến trình
một bảng trang.
 Nếu hệ điều hành quản lý một không gian địa chỉ
có dung lượng quá thì bảng trang đòi hỏi một
vùng nhớ qúa lớn
=> Giải pháp: Phân trang đa cấp.

48
Phaân trang ña caáp

49
Baûo veä boä nhôù

 Vieäc baûo veä boä nhôù ñöôïc hieän thöïc baèng caùch gaén
vôùi frame caùc bit baûo veä (protection bits) ñöôïc giöõ trong
baûng phaân trang. Caùc bit naøy bieåu thò caùc thuoäc tính sau
read-only, read-write, execute-only
 Ngoaøi ra, coøn coù moät valid/invalid bit gaén vôùi moãi muïc
trong baûng phaân trang
 “valid”: cho bieát laø trang cuûa process, do ñoù laø moät trang
hôïp leä.
 “invalid”: cho bieát laø trang khoâng cuûa process, do ñoù laø
moät trang baát hôïp leä.
Baûo veä baèng valid/ invalid bit
00000 frame valid/ 0
number invalid bit 1
14 bit 0 2 v 2 page 0
1 3 v 3 page 1
2 4 v 4 page 2
3 7 v 5
4 8 v 6
10468
5 9 v 7 page 3
12287
6 0 i 8 page 4
9 page 5
7 0 i
16383 ...
 Moãi trang nhôù coù kích thöôùc 2K = 2048
page n
 Process coù kích thöôùc 10,468  phaân maûnh noäi ôû frame 9 (chöùa
page 5), caùc ñòa chæ aûo > 12287 laø caùc ñòa chæ invalid.
 kieåm tra truy xuaát ñeán baûng phaân trang coù naèm trong baûng hay
khoâng.
Chia sẻ bộ nhớ trong cơ chế phân trang
 Cho phép chia sẻ các trang giữa các tiến trình ánh
xạ nhiều địa chỉ logic vào một địa chỉ vật lý duy nhất.
 HĐH kiểm tra các thao tác truy xuất trên khung trang
tương ứng có hợp lệ với thuộc tính bảo vệ của nó
không.

52
 Loại bỏ được hiện tượng phân mảnh ngoại vi nhưng vẫn
còn hiện tượng nội vi Nếu kích thước của tiến trình không
phải là bội số của kích thước 1 khung trang.
 Có sự phân biệt rạch ròi giữa góc nhìn của người
dùng và bộ phận quản lý bộ nhớ:
Góc nhìn của người sử dụng: Tiến trình của người dùng
nhìn bộ nhớ như là một không gian liên tục, đồng nhất
và chỉ chứa duy nhất bản thân tiến trình này.
Góc nhìn của bộ nhớ vật lý: Tiến trình của người sử
dụng được lưu trữ phân tán khắp bộ nhớ, trong bộ nhớ
đồng thời cũng chứa những tiến trình khác.
 Phần cứng đảm nhiệm việc chuyển đổi địa chỉ logic
thành địa chỉ vật lý. Sự chuyển đổi này là trong suốt
đối với người sử dụng.

53
2.4 Kỹ thuật phân đoạn
 Bộ nhớ chính được chia thành các phần cố định
có kích thước không bằng nhau, được đánh số bắt
đầu từ 0 được gọi là các phân đoạn
 Không gian địa chỉ là một tập các phân đoạn
(segments).
 Các phân đoạn là những phần bộ nhớ kích thước
khác nhau và có liên hệ logic với nhau. Mỗi phân
đoạn có một tên gọi (số hiệu phân đoạn) và một độ
dài.
 Người dùng sẽ thiết lập mỗi địa chỉ với hai giá trị:
<số hiệu phân đoạn, offset>.

54
55
Cơ chế MMU trong kỹ thuật phân đoạn

 Cần phải xây dựng một ánh xạ để chuyển đổi các
địa chỉ 2 chiều được người dùng định nghĩa
thành địa chỉ vật lý một chiều. Sự chuyển đổi
này được thực hiện qua một bảng phân đoạn.
 Mỗi thành phần trong bảng phân đoạn bao gồm
một thanh ghi nền và một thanh ghi giới hạn:
 Thanh ghi nền lưu trữ địa chỉ vật lý nơi bắt đầu phân
đoạn trong bộ nhớ
 Thanh ghi giới hạn đặc tả chiều dài của phân đoạn.

56
2.4 Kỹ thuật phân đoạn

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ỉ cơ sở của phân đoạn mà
đoạn chương trình tương ứng được nạp)
 đị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 (cho biết độ dài của phân đoạn)

57
58
VD

9.59
Chia sẻ phân đoạn
 Một ưu điểm khác của kỹ thuật phân đoạn là khả
năng chia sẻ ở mức độ phân đoạn. Nhờ khả năng
này, các tiến trình có thể chia sẻ với nhau từng
phần chương trình (ví dụ các thủ tục, hàm), không
nhất thiết phải chia sẻ toàn bộ chương trình như
trường hợp phân trang
 Mỗi tiến trình có một bảng phân đoạn riêng, một
phân đoạn được chia sẻ khi các phần tử trong
bảng phân đoạn của hai tiến trình khác nhau cùng
chỉ đến một vị trí vật lý duy nhất

60
Chia sẻ code trong hệ phân đoạn

61
2.4 Kỹ thuật phân đoạn
 Khi tiến trình được nạp vào bộ nhớ thì tất cả các
đoạn của nó được nạp vào các phân đoạn còn trống
trên bộ nhớ, các phân đoạn này có thể không liên tục
nhau
 Để theo dõi các đoạn của các tiến trình khác nhau
trên bộ nhớ HĐH sử dụng các bảng phân đoạn
(SCT), thông thường mỗi tiến trình có 1 bảng phân
đoạn riêng

62
 Trong hệ thống sử dụng kỹ thuật phân đoạn , hiện
tượng phân mảnh ngoại vi lại xuất hiện khi các khối
nhớ tự do đều quá nhỏ, không đủ để chứa một phân
đoạn.
 Tường minh với người sử dụng, cung cấp một sự
thuận lợi để người lập trình tổ chức chương trình và
dữ liệu.
 Kỹ thuật này cũng phải giải quyết vấn đề cấp phát
động
 Kỹ thuật phân đoạn phải cấp phát các khối nhớ có kích
thước khác nhau cho các phân đoạn trên bộ nhớ vật lý
 kết hợp phân trang với phân đoạn.

63
2.5. Phân đoạn kết hợp phân trang
(Paged segmentation)

 Không gian địa chỉ là một tập các phân đoạn, mỗi


phân đoạn được chia thành nhiều trang. Khi một tiến
trình được đưa vào hệ thống, hệ điều hành sẽ cấp
phát cho tiến trình các trang cần thiết để chứa đủ
các phân đoạn của tiến trình.

64
Cơ chế MMU trong kỹ thuật phân đoạn kết
hợp phân trang
 Không gian địa chỉ là một tập các phân đoạn, mỗi
phân đoạn được chia thành nhiều trang.
 Khi một tiến trình được đưa vào hệ thống, hệ điều
hành sẽ cấp phát cho tiến trình các trang cần thiết
để chứa đủ các phân đoạn của tiến trình.
 Cơ chế MMU: Để hỗ trợ kỹ thuật phân đoạn, cần có
một bảng phân đoạn, nhưng giờ đây mỗi phân
đoạn cần có một bảng trang phân biệt.

65
Chuyển đổi địa chỉ
 Mỗi địa chỉ logic là một bộ ba: <s,p,d>
 số hiệu phân đoạn (s): sử dụng như chỉ
mục đến phần tử tương ứng trong bảng phân
đoạn.
 số hiệu trang (p): sử dụng như chỉ mục đến
phần tử tương ứng trong bảng trang của
phânđoạn.
 địa chỉ tương đối trong trang (d): kết hợp với
địa chỉ bắt đầu của trang để tạo ra địa chỉ vật
lý mà trình quản lý bộ nhớ sử dụng.

66
Mô hình phân đoạn kế hợp phân trang

67
68
Tóm tắt
 Có nhiều cách tiếp cận khác nhau để tổ chức quãn lý bộ nhớ, nhưng tựu
chung mong đạt đến các mục tiêu sau :
  Có thể đáp ứng được đầy đủ các nhu cầu bộ nhớ của chương trình với một bộ
nhớ vật lý giới hạn
  Quá trình chuyển đổi địa chỉ, tổ chức cấp phát bộ nhớ là trong suốt với người
dùng, và có khả năng tái định vị.
  Tận dụng hiệu quả bộ nhớ ( ít có vùng nhớ không sử dụng được)
  Bộ nhớ được bảo vệ tốt
  Có khả năng chia sẻ bộ nhớ giữa các tiến trình
  Một số cách tiếp cận tổ chức bộ nhớ chính
  Cấp phát liên tục : có thể cấp phát các vùng nhớ liên tục cho các tiến trình trong
những phân vùng có kích thước cố định hay biến động. Điểm yếu của cách tiếp
cận này là kích thước các chương trình có thể dược xử lý bị giới hạn bởi các kích
thước của khối nhớ liên tục có thể sử dụng. Các hiện tượng phân mảnh ngoại vi,
nội vi đều có thể xuất hiện
  Cấp phát không liên tục : có thể cấp phát các vùng nhớ không liên tục cho một
tiến trình. Hai kỹ thuật thường được áp dụng là phân trang và phân đoạn. Kỹ
thuật phân trang cho phép loại bõ hiện tượng phân mảnh ngoại vi, kỹ thuật
phân đoạn loại bỏ hiện tượng phân mảnh nội vi, nhưng phải giải quyết vấn đề
cấp phát động. 
69
3. KỸ THUẬT BỘ NHỚ ẢO
3.1 Khái niệm nhớ ảo (virtual memory)
 Để thực thi chương trình có kích thước lớn hơn bộ
nhớ vật lý cấp phát cho nó
 cần xây dựng chương trình theo cấu trúc Overlay gây
khó khăn cho người lập trình
 Để khắc phục khó khăn cho người lập trình, ý
tưởng sử dụng bộ nhớ ảo ra đời
 Kỹ thuật bộ nhớ ảo cho phép xử lý một tiến trình
không được nạp toàn bộ vào bộ nhớ vật lý

Bộ nhớ ảo là một kỹ thuật hiện đại giúp cho người


dùng được giải phóng hoàn toàn khỏi mối bận tâm
về giới hạn bộ nhớ
71
3.1 Khái niệm nhớ ảo
 Bộ nhớ ảo mô hình hoá bộ nhớ như một bảng
lưu trữ rất lớn và đồng nhất, tách biệt hẳn khái
niệm không gian địa chỉ và không gian vật lý
 Người sử dụng chỉ nhìn thấy và làm việc trong
không gian địa chỉ ảo, chuyển đổi sang không
gian vật lý do hệ điều hành thực hiện với sự trợ
giúp của các cơ chế phần cứng

72
3.2 Cài đặt bộ nhớ ảo
 Có thể cài đặt bộ nhớ ảo theo 2 kỹ thuật
 Phân trang theo yêu cầu (demand paging): Sử dụng
kỹ thuật phân trang kết hợp với kỹ thuật swap
 Phân đoạn theo yêu cầu: sử dụng kỹ thuật phân đoạn
kết hợp với kỹ thuật swap

73
3.2.1 Phân trang theo yêu cầu
 Sử dụng kỹ thuật phân trang kết hợp với kỹ thuật
swap
 Một chương trình được xem như 1 tập hợp các trang
thường trú trên bộ nhớ ngoài
 Khi thực thi hệ thống không nạp toàn bộ chương
trình vào bộ nhớ trong mà chỉ nạp những trang cần
thiết trong thời điểm hiện tại
 Một trang chỉ được nạp vào bộ nhớ trong khi cần thiết

74
3.2.1 Phân trang theo yêu cầu
 Với mô hình này, cần cung cấp một cơ chế phần cứng
giúp phân biệt các trang đang ở trong bộ nhớ chính và
các trang trên đĩa. Có thể sử dụng lại bit valid-
invalid nhưng với ngữ nghĩa mới:
  valid  : trang tương ứng là hợp lệ và đang ở trong bộ nhớ
chính .
  invalid : hoặc trang bất hợp lệ (không thuộc về không
gian địa chỉ của tiến trình) hoặc trang hợp lệ nhưng đang
được lưu trên bộ nhớ phụ.
 Một phần tử trong bảng trang mộ tả cho một trang
không nằm trong bộ nhớ chính, sẽ được đánh dấu
invalid và chứa địa chỉ của trang trên bộ nhớ phụ.
75
Cơ chế phần cứng

 Cơ chế phần cứng hỗ trợ kỹ thuật phân trang theo


yêu cầu là sự kết hợp của cơ chế hỗ trợ kỹ thuật
phân trang và kỹ thuật swapping:
 Bảng trang: Cấu trúc bảng trang phải cho phép phản
ánh tình trạng của một trang là đang nằm trong bộ nhớ
chính hay bộ nhớ phụ.
 Bộ nhớ phụ: Bộ nhớ phụ lưu trữ những trang
không được nạp vào bộ nhớ chính. Bộ nhớ phụ
thường được sử dụng là đĩa, và vùng không gian đĩa
dùng để lưu trữ tạm các trang trong kỹ thuật
swapping được gọi là không gian swapping.

76
Thay thế trang

 Thuật toán thay thế trang: Thuật toán lựa một trang
“nạn nhân” để chuyển ra bộ nhớ phụ với chung một
mục tiêu: Chọn trang “nạn nhân” là trang mà sau khi
thay thế sẽ gây ra ít lỗi trang nhất.
 Chúng ta đánh giá một giải thuật bằng cách chạy nó
trên một chuỗi các tham chiếu bộ nhớ cụ thể và tính
số lượng lỗi trang.
 Giải thuật thay thế tối ưu.
 Giải thuật thay thế NRU (Not-Recently-Used).
 Giải thuật thay thế FIFO.
 Giải thuật thay thế Second Chance.
 Giải thuật thay thế vòng tròn.

77
 Giải thuật thay thế LRU (Least Recently Used).
3.2.2 Phân đoạn đoạn theo yêu cầu

Bộ nhớ ảo bao gồm các đoạn (segment)


có kích thuớc không cố định
Khi nạp đoạn vào bộ nhớ thì hệ điều
hành tìm khoảng trống đủ để nạp đoạn
Có bảng đoạn quản lý các đoạn

78
3.2.3 Phân đoạn kết hợp phân trang

 Kết hợp các ưu điểm của phân đoạn và


phân trang
 Bộ nhớ ảo bao gồm các đoạn
 Trong mỗi đoạn thực hiện phân trang

79

You might also like