Trong nội dung của chương 3 Chương 3: Quản lý bộ nhớ nằm ở bài giảng Hệ điều hành nhằm trình bày câu trả lời 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ý.
Trang 1Chương 3
Quản lý bộ nhớ
Trang 21 TỔNG QUAN
Trang 31.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 đượcnạ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àiHĐ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êucầu bộ nhớ thì vô hạn
Trang 41.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
Trang 6Tá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ếntrình và yêu cầu bộ nhớ của các tiến trình luônlớn hơn không gian bộ nhớ vật lý mà tiến trình
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
Trang 7Bả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áctiến trình khác
Mỗi tiến trình chỉ được phép truy suất đến khônggian đị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
Trang 8Chia 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
Trang 9Tổ 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
Trang 10Tổ 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ôngtin giữa bộ nhớ chính và bộ nhớ phụ là nhiệm vụquan trọng của hệ thống
10
Trang 111.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)
Trang 12Sơ đồ tái định vị động (Dynamic Relocation)
CPU sản sinh Địa chỉ lô-gíc
MMU thực hiện: Địa chỉ lô-gíc + Nội dung thanh ghi tái định vị ==> Địa chỉ vật lý
12
Trang 13Vị trí và Chức năng của MMU
(MMU gửi các địa chỉ vật lý sang Bộ nhớ)
Trang 14SỬ DỤNG BASE REGISTER VÀ LIMIT REGISTER
(Số byte của Job2)
(Địa chỉ byte đầu của Job2)
Memory
14
Trang 15THUẬT GIẢI BẢO VỆ BỘ NHỚ
(Bắt lỗi truy cập sai địa chỉ)
(CPU sản sinh 1
địa chỉ bộ nhớ)
Job i
Trang 16Cơ chế 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 dụng 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
16
Trang 17common routines 30K
overlay driver 10K
80K 70K
Đơn vị: byte
nạp và thực thi
Trang 18Cơ chế swapping
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.
Swapping policy: hai ví dụ
Round-robin: swap out P1 (vừa tiêu thụ hết quantum của nó), swap in P2 , thực thi P3 ,…
Roll out, roll in: dùng trong cơ chế định thời theo độ
ưu tiên (priority-based scheduling)
Process có độ ưu tiên thấp hơn sẽ bị swap out nhường chỗ cho process có độ ưu tiên cao hơn mới đến được nạp vào bộ nhớ để thực thi
Hiện nay, ít hệ thống sử dụng cơ chế swapping trên
18
Trang 19Minh họa cơ chế swapping
Trang 20Phân mảnh (fragmentation)
Phân mảnh ngoại (external fragmentation)
Kích thước không gian nhớ còn trống đủ để thỏa mãn một yêu cầu cấp phát, tuy nhiên không gian nhớ này không liên tục có thể dùng cơ chế kết khối (compaction) để gom lại thành vùng nhớ liên tục.
Phân mảnh nội (internal fragmentation)
Kích thước vùng nhớ được cấp phát có thể hơi lớn hơn vùng nhớ yêu cầu.
Ví dụ: cấp một khoảng trống 18,464 bytes cho một process yêu cầu 18,462 bytes.
Hiện tượng phân mảnh nội 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 Ví dụ: cơ chế phân trang (paging).
20
Trang 21Phân mảnh nội
operating system
Trang 22Phân cấp bộ nhớ
22
Trang 23– Là nguyên tắc quan trọng của hệ thống máy tính.
– Thông tin từ RAM có thể được cơ chế phần cứng đưa vào bộ nhớ nhanh hơn gọi là Cache Khi CPU cần chính thông tin đó, không cần phải truy xuất RAM, mà lấy ngay từ Cache.
– Loại bộ nhớ này không do HĐH quản lý và cấp phát.
– Thực tế, RAM (Bộ nhớ Sơ cấp) là loại Cache nhanh so với đĩa cứng (Bộ nhớ thứ cấp) và HĐH có chức năng quản lý sự lưu chuyển dữ liệu giữa 2 loại bộ nhớ
NGUYÊN TẮC LƯU GẦN (CACHING)
Trang 242 KỸ THUẬT CẤP PHÁT BỘ NHỚ
Trang 25 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)
Trang 272.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 suấ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
Trang 282.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
Trang 292.1 Kỹ thuật phân vùng cố định
(8M)(8M)(8M)(8M)(8M)(8M)(8M)
OS (8M)
2M4M6M8M8M12M16MOS(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
Trang 302.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 mudun 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
Trang 312.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ơnkích thước của 1 phân vùng hoặc lớn hơn kíchthướ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ớ
Trang 322.1 Kỹ thuật phân vùng cố định
Để khắc phục nhược điểm này có thể sử dụngphân vùng cố định có kích thước không bằngnhau
Có 2 lựa chọn để đưa tiến trình vào dạng phânvùng này
32
Trang 332.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
thước vừa đủ để chứa nó để
đượ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ờ để
vào phân vùng khác
OS
Tiến trình mới
Trang 342.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
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
OS
Tiến trình mới
34
Trang 352.2 Kỹ thuật phân vùng động
Vùng nhớ user program không được phân chiatrướ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ẽ đượcthu hồi để HĐH cấp cho tiến trình khác kể cả tiếntrình mới có kích thước nhỏ hơn vùng nhớ củatiến trình đã giải phóng đã giải phóng
Trang 362.2 Kỹ thuật phân vùng động
OS- 128k
Process1 64k
Process2 128k
Process3 32k
Process4 128k
Process5 120k
Process6 65k
1 Tiến trình 1,2,3,4 lần lượt được
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
Trang 372.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
Trang 382.2 Kỹ thuật phân vùng động
Cơ chế bản đồ Bit: Mỗi đơn vị cấp phát được đạidiện bởi một Bit trong bản đồ bit Đơn vị cấp phátcòn trống đại diện bằng bit 0, ngược lại đại diệnbằng bit 1
Bản đồ bit
38
Trang 392.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
Trang 402.2 Kỹ thuật phân vùng động
40
Trang 412.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íchthước lớn hơn kích thước của tiến trình đó, HĐHphải quyết định chọn một khối nhớ phù hợp để nạptiế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
Trang 42 Dùng để quyết định cấp phát khối bộ nhớ trống
nào cho một process
Mục tiêu: giảm chi phí
compaction
Các chiến lược placement
Best-fit : chọn khối nhớ trống
nhỏ nhấ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
Trang 43 Bộ nhớ chính được chia thành các phần bằngnhau 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 đượcchia thành các phần có kích thước bằng kíchthướ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 đượcnạp vào các khung trang bất kỳ còn trống có thểkhông liên tiếp nhau
2.3 Kỹ thuật phân trang
Trang 44Cơ chế MMU trong kỹ thuật phân trang
44
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 địachỉ 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 trangriêng
Trang 45Chuyển đổi địa chỉ
Mỗi địa chỉ phát sinh bởi CPU được chia thành haiphầ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.
Nếu kích thước của không gian địa chỉ ảo là 2 m , và kích thước của trang là 2 n (đơn vị là byte hay word tùy theo kiến trúc máy) thì
page number page offset
m n bits (định vị từ 0 2 m n 1 )
n bits (định vị từ 0 2 n 1) Bảng phân trang sẽ có tổng cộng 2 m /2 n = 2 m n mục (entry)
Trang 462.3 Kỹ thuật phân trang
f p
page table
logical address
physical address
physical memory
f 00…00
f 11…11
f frames
46
Trang 47VD
Trang 48Tổ chức lưu trữ bảng trang:
48
Đ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
Trang 49Phaân trang ña caáp
Trang 50Bảo vệ bộ nhớ
Việc bảo vệ bộ nhớ được hiện thực bằng cách gắn với frame các bit bảo vệ (protection bits) được giữ trong bảng phân trang Các bit này biểu thị các thuộc tính sau
read-only, read-write, execute-only
Ngoài ra, còn có một valid/invalid bit gắn với mỗi mục trong bảng phân trang
hợp lệ.
một trang bất hợp lệ.
Trang 51Bảo vệ bằng valid/ invalid bit
Mỗi trang nhớ có kích thước 2K = 2048
Process có kích thước 10,468 phân mảnh nội ở frame 9
(chứa page 5), các địa chỉ ảo > 12287 là các địa chỉ invalid.
kiểm tra truy xuất đến bảng phân trang có nằm trong bảng hay
valid/
invalid bit
0 1 2 3 4 5 6 7
0 1
2 page 0
3 page 1
4 page 2 5
Trang 52Chia sẻ bộ nhớ trong cơ chế phân trang
52
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 trangtương ứng có hợp lệ với thuộc tính bảo vệ của nókhông
Trang 53 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ườidù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ỉ logicthành địa chỉ vật lý Sự chuyển đổi này là trong suốtđối với người sử dụng
Trang 542.4 Kỹ thuật phân đoạn
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
Trang 56Cơ chế MMU trong kỹ thuật phân đoạn
56
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ĩathành địa chỉ vật lý một chiều Sự chuyển đổinà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.