Download as pdf or txt
Download as pdf or txt
You are on page 1of 99

Bài 8: Quản lý bộ nhớ

Operating System Concepts – 9th Edit9on Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
Mục tiêu:
❑ Hiểu được cách thức hệ điều hành quản lý bộ nhớ
❑ Giải thích được các phương pháp quản lý bộ nhớ và cách xác định địa chỉ bộ nhớ
❑ Thực hiện thành thạo các thuật toán nạp và đổi trang trong bộ nhớ ảo
❑ Hiểu được vai trò của quản lý bộ nhớ trong hệ thống máy tính

Operating System Concepts – 9th Edition 8.2 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.3 Silberschatz, Galvin and Gagne ©2013
8.1 Tổng quan (1/4)
❑ 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 tiến trình trong
bộ nhớ sao cho hiệu quả
❑ Mục tiêu cần đạt được là càng nạp được
nhiều tiến trình vào bộ nhớ càng tốt. Vì
việc đó làm tăng mức độ đa chương
❑ Trong hầu hết các 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 tiến trình

Operating System Concepts – 9th Edition 8.4 Silberschatz, Galvin and Gagne ©2013
8.1 Tổng quan (2/4)
❑ 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 tiến trình
❑ Tái định vị (relocation): khi swapping
❑ Bảo vệ: phải kiếm tra việc truy xuất bộ nhớ hợp lệ
❑ Chia sẻ: Cho phép các tiến trình chia sẻ vùng bộ nhớ chung
❑ Gán địa chỉ bộ nhớ logic của người dùng vào địa chỉ vật lý

Operating System Concepts – 9th Edition 8.5 Silberschatz, Galvin and Gagne ©2013
8.1 Tổng quan (3/4)
❑ Các kiểu địa chỉ bộ nhớ
❑ Địa chỉ logic (Logical Address) là một vị trí nhớ được diễn tả trong một
chương trì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 (realative 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 vị trí xác định nào đó
trong chương trình
❑ Ví dụ: 12 byte so với vị trí bắt đầu chương trình,…
❑ Địa chỉ tuyệt đối (absolute address) là địa chỉ tương đương với địa chỉ
thực

Operating System Concepts – 9th Edition 8.6 Silberschatz, Galvin and Gagne ©2013
8.1 Tổng quan (4/4)
❑ Các kiểu địa chỉ bộ nhớ
❑ Địa chỉ vật lý (Physical Address), hay còn gọi là địa chủ thực, là một vị trí
thực trong bộ nhớ chính.
❑ Khi một lệnh được thực thi, các tham chiếu đến địa chỉ logic phải được
chuyển đổi thành địa chỉ thực.
❑ Thao tác chuyển đổi này thường có sự hỗ trợ của phần cứng để đạt
hiệu suất cao

Operating System Concepts – 9th Edition 8.7 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.8 Silberschatz, Galvin and Gagne ©2013
8.2 Các phương pháp nạp chương trình (1/4)

❑ Nạp một lần


❑ Toàn bộ mã lệnh và dữ liệu của chương trình được nạp vào bộ nhớ một
lần
❑ Đây là phương pháp đơn giản để nạp chương trình
❑ Thời gian thực sự để nạp chương trình là nhỏ nhất và tốc độ thực hiện
chương trình cao nhất
❑ Đòi hỏi bộ nhớ phải có đủ theo yêu cầu của chương trình tại một thời
điểm ➔ Chỉ có những chương trình có yêu cầu về bộ nhớ không lớn mới
nạp được.

Operating System Concepts – 9th Edition 8.9 Silberschatz, Galvin and Gagne ©2013
8.2 Các phương pháp nạp chương trình (2/4)

❑ Nạp động
❑ Chương trình chính và dữ liệu được nạp vào bộ nhớ trước
❑ Chương trình con được nạp vào bộ nhớ khi nó được gọi.
❑ Khi một chương trình con gọi đến một chương trình con khác,
❑ Kiểm tra xem chương trình con đó đã nạp vào bộ nhớ hay chưa?
❑ Nếu chưa thì bộ nạp sẽ nạp chương trình con được gọi vào bộ nhớ, và cập nhật
vào bảng địa chỉ những thay đổi.
❑ Chuyển quyền điều khiển cho chương trình con được gọi
❑ Ưu điểm:
❑ Tiết kiệm được bộ nhớ dành cho chương trình
❑ Không đòi hỏi sự hỗ trợ đặc biệt của hệ điều hành

Operating System Concepts – 9th Edition 8.10 Silberschatz, Galvin and Gagne ©2013
8.2 Các phương pháp nạp chương trình (3/4)

❑ Thư viện chia sẻ và liên kết động


❑ Tổ chức các đoạn mã trong thư viện liên kết động
❑ Những đoạn mã này không được ghép ngay vào chương trình mà chỉ
được tham chiếu đến và liên kết với chương trình khi chúng được gọi.
❑ Các chương trình khác nhau cùng tham khảo đến một đoạn mã có thể tạo
ra một bản sao riêng hoặc sử dụng chung đoạn mã đã được nạp vào bộ
nhớ.
❑ Ưu điểm:
❑ Dễ dàng cập nhật, nâng cấp lên phiên bản mới mà không phải thay đổi chương trình.
❑ Cần có sự hỗ trợ của hệ điều hành.

Operating System Concepts – 9th Edition 8.11 Silberschatz, Galvin and Gagne ©2013
8.2 Các phương pháp nạp chương trình (4/4)
❑ Nạp kiểu Overlay
❑ Để một chương trình lớn có thể thực hiện trong một không gian bộ nhớ nhỏ
❑ Chỉ những đoạn mã hiện đang sử dụng mới được nạp vào bộ nhớ để thực
hiện. Các đoạn mã khác vẫn được lưu trữ trên đĩa.
❑ Khi cần đến đoạn mã nào mà chưa có trong bộ nhớ thì sẽ tìm trên đĩa và
nạp vào bộ nhớ rồi thực hiện
❑ Để giải phóng bộ nhớ, đoạn mã có thể bị đẩy ra bộ nhớ ngoài

Operating System Concepts – 9th Edition 8.12 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.13 Silberschatz, Galvin and Gagne ©2013
8.3 Các cấu trúc chương trình (1/5)
❑ Cấu trúc tuyến tính
❑ Toàn bộ chương trình được dịch và biên tập thành một module duy nhất
và được nạp vào bộ nhớ một lần.
❑ Ưu điểm
❑ Chương trình chạy nhanh hơn vì đã có sẵn trong bộ nhớ
❑ Chi phí nạp chương trình thấp.
❑ Nhược điểm:
❑ Phù hợp với các bài toán nhỏ
❑ Cấu trúc này chỉ phù hợp với các chương trình có nhu cầu bộ nhớ nhỏ

Operating System Concepts – 9th Edition 8.14 Silberschatz, Galvin and Gagne ©2013
8.3 Các cấu trúc chương trình (2/5)
❑ Cấu trúc động
❑ Chương trình được chia thành nhiều module, có cấu trúc logic hoàn
chỉnh, có thể được nạp và chạy độc lập.
❑ Hai phương pháp nạp chương trình
❑ Phương pháp thứ nhất:
❑ Trong các module của chương trình có một module chính được nạp và thực thi
cho đến khi nó kết thúc.
❑ Module chính điều khiển và nạp các module còn lại và thực thi các module đó.
❑ Phương pháp thứ hai:
❑ Coi tất cả các module là như nhau. Cần xác định module đầu tiên được nạp
❑ Chỉ có một module duy nhất trong bộ nhớ. Module trước nạp module sau trước khi
giải phóng
❑ Đòi hỏi người lập trình tự tổ chức nạp các module
Operating System Concepts – 9th Edition 8.15 Silberschatz, Galvin and Gagne ©2013
8.3 Các cấu trúc chương trình (3/5)
❑ Cấu trúc Overlay (Phủ)
❑ Các thành phần (hình vẽ)
❑ Bộ điều khiển overlay
(overlay driver) điều khiển
việc nạp các đoạn mã overlay
trên đĩa dựa trên bảng điều
khiển overlay.

Operating System Concepts – 9th Edition 8.16 Silberschatz, Galvin and Gagne ©2013
8.3 Các cấu trúc chương trình (4/5)
❑ Cấu trúc Overlay
❑ Chương trình viết theo cấu trúc này
thường được biên tập thành hai phần
❑ Phần thực thi ban đầu và nằm cố định
trong bộ nhớ
❑ Phần chứa các module overlay. Chỉ được
nạp vào bộ nhớ và được thực thi khi nó
được tham chiếu.

Operating System Concepts – 9th Edition 8.17 Silberschatz, Galvin and Gagne ©2013
8.3 Các cấu trúc chương trình (5/5)
❑ Cấu trúc Overlay
❑ Bộ nhớ để chạy chương trình overlay được chia thành các mức được gọi
là các mức overlay
❑ Mỗi mức overlay yêu cầu bộ nhớ có độ lớn bằng kích thước bộ nhớ của module lớn
nhất trong cùng mức.
❑ Mức 0 là mức dành cho module được nạp từ đầu và nằm cố định trong bộ nhớ trong
suốt quá trình thực thi.
❑ Các mức còn lại được để dành sẵn vùng nhớ tương ứng với mức đó
❑ Module nạp sau sẽ được ghi đè lên mã lệnh và dữ liệu của module được nạp trước đó
(Overlay)
❑ Tránh sử dụng các lời gọi đồng mức

Operating System Concepts – 9th Edition 8.18 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.19 Silberschatz, Galvin and Gagne ©2013
8.4 Tráo đổi bộ nhớ (1/1)
❑ Một tiến trình có thể tạm thời bị đưa ra
khỏi bộ nhớ chính và lưu trữ tạm thời
lên hệ thống lưu trữ thứ cấp (Swap out)
❑ Sau đó tiến trình có thể được nạp lại
vào bộ nhớ để tiếp tục thực thi (Swap in)
❑ Thường gặp trong các hệ thống có áp
dụng chiến lược lập lịch Round Robin.
❑ Cơ chế Overlay cũng áp dụng swapping
tương tự như trên.

Operating System Concepts – 9th Edition 8.20 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.21 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (1/10)
❑ Mô hình quản lý bộ nhớ là một mô hình đơn giản, không có bộ nhớ ảo
❑ Một tiến trình phải được nạp hoàn toàn vào bộ nhớ thì mới được thực thi (Trừ
khi sử dụng cơ chế Overlay)
❑ Các cơ chế quản lý bộ nhớ
❑ Phân chia cố định (fixed partitioning)
❑ Phân chia động (Dynamic partitioning)
❑ Phân trang
❑ Phân đoạn
❑ Phân đoạn kết hợp phân trang

Operating System Concepts – 9th Edition 8.22 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (2/10)
❑ Phân mảnh nội và phân mảnh ngoại
❑ 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 vùng nhớ có kích thước 4KB (4096 Byte) cho một tiến trình có kích thước
3982Byte
❑ 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 size block) và các tiến trình được cấp phát theo đơn vị khối.
❑ 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ể sử dụng cơ chế kết khối (compaction) để gom lại thành vùng nhớ liên tục

Operating System Concepts – 9th Edition 8.23 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (3/10)
❑ Phân mảnh nội và phân mảnh ngoại

Operating System Concepts – 9th Edition 8.24 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (4/10)
❑ Fixed partitioning
❑ Khi khởi động hệ thống, bộ nhớ chính được
chia thành nhiều phần rời nhau được gọi là
các partition có kích thước bằng nhau hoặc
không bằng nhau
❑ Tiến trình nào có kích thước nhỏ hơn hoặc
bằng kích thước partition thì có thể nạp vào
partition đó.
❑ Nếu chương trình có kích thước nhỏ hơn
partition thì phải dùng cơ chế overlay
➔ Không hiệu quả do bị phân mảnh nội.

Operating System Concepts – 9th Edition 8.25 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (5/10)
❑ Fixed partitioning
❑ Chiến lược thay đổi phân vùng - Partition có kích thước bằng nhau
❑ Nếu còn partition trống → tiến trình mới sẽ được nạp vào partition đó
❑ Nếu không còn partition trống, nhưng trong đó có tiến trình đang bị blocked → Swap
tiến trình đó ra bộ nhớ ngoài và nhường chỗ cho tiến trình mới

Operating System Concepts – 9th Edition 8.26 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (6/10)
❑ Fixed partitioning
❑ Chiến lược thay đổi phân vùng - Partition có
kích thước không bằng nhau.
❑ Giải pháp 1:
❑ Gán mỗi tiến trình vào partition 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
❖ Có thể có một số hàng đợi trống, trong
khi, có những hàng đợi dày đặc

Operating System Concepts – 9th Edition 8.27 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (7/10)
❑ Fixed partitioning
❑ Chiến lược thay đổi phân vùng - Partition có
kích thước không bằng nhau.
❑ Giải pháp 2:
❑ Chỉ có một hàng đợi chung cho tất cả
các partition
❖ Khi cần nạp một tiến trình vào bộ nhớ
chính → Chọn partition nhỏ nhất còn
trống

Operating System Concepts – 9th Edition 8.28 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (8/10)
❑ Dynamic partitioning
❑ Số lượng partition không cố định và partition có thể có kích
thước khác nhau
❑ Mỗi tiến trình được cấp phát chính xác dung lượng bộ nhớ cần
thiết
❖ Có thể gây ra hiện tượng phân mảnh ngoại

Operating System Concepts – 9th Edition 8.29 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (9/10)
❑ Dynamic partitioning

Operating System Concepts – 9th Edition 8.30 Silberschatz, Galvin and Gagne ©2013
8.5 Mô hình quản lý bộ nhớ (10/10)
❑ Dynamic partitioning
❑ Chiến lược thay thế
❑ Best-Fit: Chọn partition trống nhỏ nhất
phù hợp
❑ First-Fit: Chọn partition trống đầu tiên phù
hợp
❑ Next-Fit: Chọn partition trống phù hợp
đầu tiên kể từ vị trí cấp phát cuối cùng
❑ Worst-Fit: Chọn partition trống lớn nhất
phù hợp

Operating System Concepts – 9th Edition 8.31 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.32 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (1/22)
❑ Cho phép không gian địa chỉ thực (physical address space) của một tiến trình
có thể không liên tục nhau
❑ Bộ nhớ thực được chia thành các khối cố định và có kích thước bằng nhau,
gọi là Frame
❑ Thông thường kích thước của frame là 2x, từ khoảng 512 Byte đến 16MB
❑ Bộ nhớ logic (logical memory) hay không gian bộ nhớ logic là tập địa chỉ logic
mà một chương trình bất kỳ có thể sinh ra.
❑ Ví dụ:
MOV R1,1000 ;1000 là một địa chỉ logic
❑ Địa chỉ logic còn có thể được chương trình sinh ra bằng cách dùng
indexing, base register, …

Operating System Concepts – 9th Edition 8.33 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (2/22)
❑ Bộ nhớ logic cũng được chia thành các khối cố định có cùng kích thước gọi là
trang nhớ (page)
❑ Frame và page có kích thước bằng nhau
❑ Hệ điều hành phải thiết lập một bảng trang (Page table) để ánh xạ địa chỉ
logic thành địa chỉ thực
❑ Mỗi tiến trình có một bảng trang, được quản lý bằng một con trỏ lưu trưc
trong PCB. Công việc thiết lập bảng trang cho tiến trình là một phần của
chuyển ngữ cảnh
❑ Cơ chế phân trang khiến bộ nhớ bị phân mảnh nội, tuy nhiên, lại khắc phục
được phân mảnh ngoại.

Operating System Concepts – 9th Edition 8.34 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (3/22)

Operating System Concepts – 9th Edition 8.35 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (4/22)
❑ Chuyển đổi địa chỉ
❑ Địa chỉ logic gồm có
❑ Page number, p: được dùng làm chỉ mục dò tìm trong bảng trang. Mỗi mục trong bảng
trang chứa chỉ số frame của trang tương ứng trong bộ nhớ thực
❑ Page offset, d: được kết hợp với địa chỉ cơ sở (base address) để định vị địa chỉ thực
❑ Nếu Kích thước của không gian địa chỉ ảo là 2m, và kích thước của trang là
2n → Bảng trang có tổng cộng 2m/2n=2m-n mục (entry)

Operating System Concepts – 9th Edition 8.36 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (5/22)
❑ Phần cứng hỗ trợ phân trang

Operating System Concepts – 9th Edition 8.37 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (6/22)
❑ Chuyển đổi địa chỉ

Operating System Concepts – 9th Edition 8.38 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (7/22)
❑ Cài đặt bảng trang
❑ Bảng trang được lưu trữ trong bộ nhớ chính
❑ Mỗi tiến trình được hệ điều hành cấp một bảng trang
❑ Thanh ghi Page-table base (PTBR) trỏ đến bảng trang
❑ Thanh ghi Page-table length (PTLR) biểu thị kích thước của bảng trang. Thanh ghi này
có thể được dùng để bảo vệ bộ nhớ trong phân trang)
❑ Mỗi tác vụ truy cập dữ liệu hoặc lệnh cần hai thao tác truy xuất bộ nhớ
❑ Mỗi thao tác dùng page number (p) làm index để truy xuất mục trong bảng trang nhằm
lấy số frame và tiếp đến là một thao tác dùng page offset (d) để truy xuất dữ liệu/lệnh
trong frame
❑ Thường dùng một bộ phận cache phần cứng có tốc độ truy xuất và tìm kiếm cao, gọi là
thanh ghi kết hợp (associative register) hoặc translate look-aside buffers (TLBs)

Operating System Concepts – 9th Edition 8.39 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (8/22)
❑ Translate look-aside buffers (TLBs)
❑ Còn gọi là Associative register, là thanh ghi hỗ trợ tìm kiếm truy xuất dữ
liệu với tốc độ cực nhanh
❑ Ánh xạ địa chỉ ảo Soá muïc cuûa TLB
Page # Frame # khoaûng 8  2048
❑ Nếu page number nằm
trong TLB (Hit) → có thể TLB laø “cache” cuûa
baûng phaân trang
Lấy ngay được số frame
Khi coù chuyeån ngöõ
❑ Nếu không có trong TLB
caûnh, TLB bò xoùa
(Miss) → lấy số frame từ
Khi TLB ñaày, thay
bảng trang theá muïc duøng LRU

Operating System Concepts – 9th Edition 8.40 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (9/22)
❑ Phân trang bằng phần cứng với TLB

Operating System Concepts – 9th Edition 8.41 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (10/22)
❑ Thời gian truy xuất hiệu dụng (Effective access time - EAT)
❑ Thời gian tìm kiếm trong TLB (associative lookup): 
❑ Thời gian một chu kì truy xuất bộ nhớ: x
❑ Hit ratio (): tỉ số giữ lần chỉ số trang được tìm thấy (hit) trong TLB và số
lần truy xuất từ CPU
❑ Thời gian cần thiết để có được chỉ số frame
❑ Khi chỉ số trang có trong TBL (hit): + x
❑ Khi chỉ số trang không có trong TLB (miss): +x+x
❑ Thời gian truy xuất hiệu dụng:

EAT = ( + x) + ( + 2x)(1 – ) = (2 – )x + 

Operating System Concepts – 9th Edition 8.42 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (11/22)
❑ Thời gian truy xuất hiệu dụng (Effective access time - EAT)

Ví dụ 1: Đơn vị thời gian nano Ví dụ 2


giây (ns)
▪ Associative lookup = 20 ▪ Associative lookup = 20
▪ Memory access = 100 ▪ Memory access = 100
▪ Hit ratio = 0.8 ▪ Hit ratio = 0.98
▪ EAT = (100 + 20)  0.8 + ▪ EAT = (100 + 20)  0.98 +
(200 + 20)  0.2 (200 + 20)  0.02
= 1.2  100 + 20 = 1.02  100 + 20
= 140 = 122

Operating System Concepts – 9th Edition 8.43 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (12/22)
❑ Bảo vệ bộ nhớ
❑ Việc bảo vệ bộ nhớ được thực hiện bằng cách gắn với frame các bit bảo
vệ (protection bits) được giữ trong bảng trang. Các bit này thể hiện các
thuộc tính
❑ 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
❑ Valid: cho biết trang của tiến trình là một trang hợp lệ
❑ Invalid: cho biết trang không của tiến trình nào và là trang không hợp lệ

Operating System Concepts – 9th Edition 8.44 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (13/22)
❑ Bảo vệ bộ nhớ

Operating System Concepts – 9th Edition 8.45 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (14/22)
❑ Bảng trang hai mức
❑ Các hệ thống hiện đại đều hỗ trợ không gian địa chỉ ảo rất lớn (232 đến
264). Giả thiết là 232
❑ Giả sử kích thước trang nhớ là 4KB (212)
➔ Bảng trang sẽ có 232/212 = 220=1MB
❑ Giả sử mỗi mục gồm 4 Byte thì mỗi tiến trình cần 4MB cho bảng trang
❑ Giải pháp: Sử dụng bảng trang hai mức (two-level page table)

Operating System Concepts – 9th Edition 8.46 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (15/22)
❑ Bảng trang hai mức
❑ Phân trang một mức

❑ Phân trang hai mức


❑ Bảng trang cũng được chia thành hai phần nên
pagenumber cũng chia thành 2 phần
❑ Một địa chỉ logic sẽ gồm
❑ p1: chỉ số trang trong bảng trang mức 1 (outer-
page table)
❑ p2: chỉ số trang trong bảng trang mức 2

Operating System Concepts – 9th Edition 8.47 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (16/22)
❑ Bảng trang hai mức

Operating System Concepts – 9th Edition 8.48 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (17/22)
❑ Bảng trang hai mức
❑ Sơ đồ chuyển đổi địa chỉ (address-translation scheme) cho cơ chế bảng
trang hai mức, 32 bit địa chỉ

Operating System Concepts – 9th Edition 8.49 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (18/22)
❑ Bảng trang hai mức
❑ Giúp tiết kiệm bộ nhớ

❑ Vùng màu đỏ tương ứng với phần


không gian địa chỉ ảo

❑ Các mục đỏ được đánh dấu là


không có frame nên gây ra page
fault nếu được tham chiếu đến.
Khi đó hệ điều hành sẽ tạo thêm
bảng phân trang mức 2 mới

Operating System Concepts – 9th Edition 8.50 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (19/22)
❑ Bảng trang nhiều mức

page number page offset page numbers page offset

52 12 42 10 12

page numbers page offset page numbers page offset

32 10 10 12 22 10 10 10 12

Operating System Concepts – 9th Edition 8.51 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (20/22)
❑ Bảng trang băm (Hashed page table)
❑ Dùng bảng băm để giảm không gian của bảng trang
❑ Phổ biến trong các hệ thống lớn hơn 32 bit địa chỉ
❑ Để tránh đụng độ, mỗi mục của bảng băm được gắn một danh sách liên
kết. Mỗi phần tử của danh sách là một cặp: chỉ số trang ảo và chỉ số frame
❑ Chỉ số trang ảo (virtual page number) được biến đổi qua hàm băm thành một hashed
value.
❑ Cặp chỉ số sẽ được lưu vào danh sách liên kết tại mục có chỉ số là hashed value
❑ Giải thuật tìm trang
❑ Chỉ số trang ảo được biến đổi thành hashed value, là chỉ số của mục cần truy cập
trong bảng băm

Operating System Concepts – 9th Edition 8.52 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (21/22)
❑ Bảng trang băm (Hashed page table)

Operating System Concepts – 9th Edition 8.53 Silberschatz, Galvin and Gagne ©2013
8.6 Phân trang (Paging) (22/22)
❑ Chia sẻ trang nhớ

Operating System Concepts – 9th Edition 8.54 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.55 Silberschatz, Galvin and Gagne ©2013
8.7 Phân đoạn (Segmentation) (1/8)
❑ Dưới góc nhìn của người dùng, một chương trình cấu thành từ nhiều đoạn
(segment). Mỗi đoạn là một đơn vị logic của chương trình. Bao gồm
❑ Main program, procedure
❑ Local variables, global variables, common block, stack, symbol table,
array,…
❑ Thông thường một chương trình được biên dịch thì trình biên dịch sẽ tự động
xây dựng các segment

Operating System Concepts – 9th Edition 8.56 Silberschatz, Galvin and Gagne ©2013
8.7 Phân đoạn (Segmentation) (2/8)
❑ Ví dụ, một chương trình viết bằng C, trình
biên dịch sẽ tạo ra các đoạn sau:
❑ Main program: Đoạn mã lệnh của chương trình
chính
❑ Procedure (void function): Đoạn mã lệnh của
chương trình con không định kiểu
❑ Function sqrt: chương trình con tính căn bậc hai
❑ Stack: Đoạn ngăn xếp
❑ Symbol table: Đoạn chứa các biến global và local

❑ Trình loader sẽ gán mỗi segment một


định danh riêng

Operating System Concepts – 9th Edition 8.57 Silberschatz, Galvin and Gagne ©2013
8.7 Phân đoạn (Segmentation) (3/8)
❑ 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 được xác định
bằng tên đoạn và độ dời (offset)
bên trong đoạn đó.

Operating System Concepts – 9th Edition 8.58 Silberschatz, Galvin and Gagne ©2013
8.7 Phân đoạn (Segmentation) (4/8)
❑ Thực hiện phân đoạn
❑ Địa chỉ logic là một cặp giá trị: (segment number, offset)
❑ Bảng phân đoạn (Segment table): gồm nhiều mục, mỗi mục chứa
❑ Base: chứa địa chỉ khởi đầu của segment trong bộ nhớ
❑ Limit: xác định kích thước của segment
❑ Segment-table base register (STBR): trỏ đến vị trí bảng phân đoạn trong
bộ nhớ
❑ Segment-table length register (STLR): số lượng segment của chương trình
➔ Một chỉ số segment (s) là hợp lệ nếu s<STLR

Operating System Concepts – 9th Edition 8.59 Silberschatz, Galvin and Gagne ©2013
8.7 Phân đoạn (Segmentation) (5/8)
❑ Thực hiện phân đoạn

Operating System Concepts – 9th Edition 8.60 Silberschatz, Galvin and Gagne ©2013
8.7 Phân đoạn (Segmentation) (6/8)
❑ Phần cứng hỗ trợ phân đoạn

Operating System Concepts – 9th Edition 8.61 Silberschatz, Galvin and Gagne ©2013
8.7 Phân đoạn (Segmentation) (7/8)
❑ Chuyển đổi địa chỉ trong cơ chế phân đoạn

Operating System Concepts – 9th Edition 8.62 Silberschatz, Galvin and Gagne ©2013
8.7 Phân đoạn (Segmentation) (8/8)
❑ Chia sẻ các đoạn

Operating System Concepts – 9th Edition 8.63 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.64 Silberschatz, Galvin and Gagne ©2013
8.8 Kết hợp phân trang và phân đoạn (1/5)
❑ Kết hợp phân trang và phân đoạn nhằm kết hợp các ưu điểm đồng thời hạn
chế các khuyết điểm của phân trang và phân đoạn
❑ Vấn đề của phân đoạn: Nếu một đoạn quá lớn thì có thể không thể được
nạp vào bộ nhớ
❑ Giải quyết: Phân trang trong các đoạn.
➔ Chỉ cần giữ trong bộ nhớ các trang của đoạn hiện đang cần.

Operating System Concepts – 9th Edition 8.65 Silberschatz, Galvin and Gagne ©2013
8.8 Kết hợp phân trang và phân đoạn (2/5)
❑ Có nhiều cách kết hợp
❑ Cách thường được các hệ điều hành sử dụng là segmentation with paging
❑ Mỗi tiến trình sẽ có:
❑ Một bảng phân đoạn
➔ Mỗi đoạn có một bảng phân trang
❑ Nhiều bảng phân trang
❑ Một địa chỉ logic (địa chỉ ảo) bao gồm:
❑ Segment number: là chỉ số của một mục trong bảng phân đoạn, mục này chứa
địa chỉ cơ sở (base) của bảng phân trang của đoạn
❑ Page number: là chỉ số của một mục trong bảng phân trang, mục này chưa chỉ số
khung trong bộ nhớ thực
❑ Offset: độ dời của vị trí nhớ trong frame.

Operating System Concepts – 9th Edition 8.66 Silberschatz, Galvin and Gagne ©2013
8.8 Kết hợp phân trang và phân đoạn (3/5)
❑ Segmentation with paging
frame 0

frame 1

frame 2

frame 3

frame 4

frame 5

frame 6

Operating System Concepts – 9th Edition 8.67 Silberschatz, Galvin and Gagne ©2013
8.8 Kết hợp phân trang và phân đoạn (4/5)
❑ Segmentation with paging

Operating System Concepts – 9th Edition 8.68 Silberschatz, Galvin and Gagne ©2013
8.8 Kết hợp phân trang và phân đoạn (5/5)
❑ Segmentation with paging
❑ Segment base: địa chỉ thực của bảng phân trang
❑ Present bit và modified bit chỉ tồn tại trong bảng phân đoạn
❑ Các thông tin bảo vệ và chia sẻ vùng nhớ thường nằm trong bảng phân
đoạn. Ví dụ: read-only hoặc read-write bit,…

Operating System Concepts – 9th Edition 8.69 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.70 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Cơ sở (1/9)
❑ Các tham chiếu đến bộ nhớ được chuyển đổi thành địa chỉ thực khi tiến trình
thực thi
❑ Một tiến trình gồm các phần nhỏ (page hoặc segment). Các phần này được
nạp vào các vùng có thể không liên tục trong bộ nhớ chính

CPU The CPU sends virtual


package addresses to the MMU

CPU
Disk
Memory
controller
MMU

Bus
The MMU sends physical
addresses to the memory MMU: memory management unit

Operating System Concepts – 9th Edition 8.71 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Cơ sở (2/9)
❑ Nhận xét: không phải tất cả các phần của một tiến trình cần thiết phải được
nạp vào bộ nhớ chính tại cùng một thời điểm. Ví dụ:
❑ Đoạn mã điều khiển các lỗi hiếm khi xảy ra
❑ Các arrays, lists, tables được cấp phát bộ nhớ (cấp phát tĩnh) nhiều hơn
yêu cầu thực sự
❑ Một số tính năng ít khi được sử dụng trong một chương trình
❑ Ngay cả khi toàn bộ chương trình đều cần sử dụng thì có thể không cần sử
dụng cùng một lúc

Operating System Concepts – 9th Edition 8.72 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Cơ sở (3/9)
❑ Bộ nhớ ảo (Virtual memory)
❑ Cơ chế được thực hiện trong hệ điều hành để cho phép thực thi một tiến trình mà
chỉ cần giữ trong bộ nhớ chính một phần của không gian địa chỉ logic của nó.
Phần còn lại được giữ trên bộ nhớ ngoài (đĩa cứng).

❑ Ưu điểm của bộ nhớ ảo:


❑ Số lượng tiến trình trong bộ nhớ nhiều hơn
❑ Một tiến trình có thể thực thi ngay cả khi kích thước của nó lớn hơn bộ nhớ thực

❑ Nếu tiến trình chưa nạp vào bộ nhớ chính thì nó được giữ trong
một vùng đặc biệt trên đĩa gọi là không gian tráo đổi (swap space)
❑ Trong Linux: swap partition
❑ Trong Windows (pagefile.sys và swapfile.sys)

Operating System Concepts – 9th Edition 8.73 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Cơ sở (4/9)
❑ Cài đặt bộ nhớ ảo
❑ Phần cứng MMU (Memory Management Unit) phải hỗ trợ phân trang hoặc
phân đoạn.
❑ Hệ điều hành quản lý sự di chuyển của trang/đoạn giữa bộ nhớ chính và
bộ nhớ thứ cấp
❑ Thông thường các hệ điều hành thực hiện theo cơ chế phân trang
❑ Mỗi mục của bảng phân trang có thêm các bit trạng thái đặc biệt
❑ Present bit =1 ➔ Trang hợp lệ và hiện đang có trong bộ nhớ
=0 ➔ Trang không hợp lệ hoặc không có trong bộ nhớ
❑ Modified bit: cho biết trang có thể thay đổi kể từ khi được nạp vào bộ
nhớ hay không

Operating System Concepts – 9th Edition 8.74 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Cơ sở (5/9)
❑ Cài đặt bộ nhớ ảo
❑ Demand paging (Phân trang theo yêu cầu): các trang của tiến trình chỉ
được nạp vào bộ nhớ chính khi được yêu cầu
❑ Khi có một tham chiếu đến một trang mà không có trong bộ nhớ chính
(present bit = 0) thì phần cứng sẽ gây ra một ngắt (page-fault trap) và gọi
một dịch vụ của hệ điều hành, được gọi là page-fault service routine
(PFSR)
❑ Chuyển tiến trình về trạng thái waiting/blocked
❑ Phát ra một yêu cầu đọc đĩa để nạp trang được tham chiếu vào một
khung trống. Khi đợi I/O, một tiến trình khác được thực thi bởi CPU
❑ Sau khi I/O hoàn tất, đĩa gây ra một ngắt đến hệ điều hành. PFSR cập
nhật page table và chuyển tiến trình về trạng thái ready

Operating System Concepts – 9th Edition 8.75 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Cơ sở (6/9)
❑ Các bước xử lý page fault

Operating System Concepts – 9th Edition 8.76 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Cơ sở (7/9)
❑ Thay thế trang nhớ
❑ Xác định vị trí trên đĩa của trang đang cần
❑ Tìm một frame trống
❑ Nếu có frame trống thì dùng nó
❑ Nếu không có frame trống thì dùng một giải thuật thay trang để chọn một
trang “nạn nhân” (victim page)
❑ Ghi victim page lên đĩa và cập nhật bảng trang (page table) và bảng
khung (frame table) tương ứng
❑ Đọc trang đang cần vào frame trống và cập nhật page table và frame table
tương ứng

Operating System Concepts – 9th Edition 8.77 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Cơ sở (8/9)
❑ Thay thế trang nhớ

Operating System Concepts – 9th Edition 8.78 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Cơ sở (9/9)
❑ Frame-allocation algorithm (Thuật toán định vị khung)
❑ Cấp phát cho tiến trình bao nhiêu frame của bộ nhớ thực
❑ Page-replacement algorithm(Thuật toán thay đổi trang)
❑ Chọn frame của tiến trình sẽ được thay thế trang nhớ
❑ Mục tiêu: Số lượng page-fault nhỏ nhất
❑ Được đánh giá bằng cách thực thi giải thuật đối với một chuỗi tham chiếu
bộ nhớ (memory reference string) và xác định số lần xảy ra page fault

Operating System Concepts – 9th Edition 8.79 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (1/15)
❑ Giải thuật FCFS
❑ Chuỗi tham chiếu: 7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1
❑ Hệ thống có 3 frames
❑ Thay thế trang được đưa vào khung sớm nhất (trong các frames)
❑ Giả thiết đặt các biến c1, c2, c3 tương ứng với việc đếm số lần page tồn tại
trong frame.
❑ Khi page được nạp vào frame thì biến c tương ứng được gán =1
❑ Các page trong các frame còn lại không bị thay thì biến c được tăng lên
1 đơn vị
➔ Thay page trong frame mà có biến c tương ứng lớn nhất

Operating System Concepts – 9th Edition 8.80 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (2/15)
❑ Giải thuật FCFS

Operating System Concepts – 9th Edition 8.81 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (3/15)
❑ Giải thuật LRU (Least Recently Used) – Thay thế trang lâu không được sử
dụng.
❑ Thay thế trang mà lâu không được sử dụng nhất
❑ Sử dụng mảng d (displacement) với số phần tử tương ứng với số khung, ví
dụ, d1,d2,d3
❑ Nếu trang chưa tồn tại trong khung thì nạp trang vào khung hoặc thay
thế trang. Khi đó d tương ứng đặt bằng 1, ngược lại
❑ Nếu đã tồn tại trong khung thì tăng giá trị d tương ứng lên 1
❑ Khi cần thay thế trang thì xét các biến d tương ứng. Chọn trang cân thay
trong khung có d là lớn nhất

Operating System Concepts – 9th Edition 8.82 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (4/15)
❑ Giải thuật LRU

Operating System Concepts – 9th Edition 8.83 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (5/15)
❑ Giải thuật Optimal (OPT)– Thay thế trang sẽ lâu không được sử dụng.
❑ Thay thế trang sẽ lâu không sử dụng trong tương lai
❑ Sử dụng mảng p (position) với số phần tử tương ứng với vị trí gần nhất, ví
dụ, p1,p2,p3…pn
❑ Khởi tạo các giá trị p[i] bằng vị trí hiện tại đến vị trí gần nhất mà trang
được sử dụng
❑ Nếu trang tương ứng chưa tồn tai trong khung thì nạp vào khung, sau
đó đặt lại vị trí tiếp theo cho các biến p tương ứng
❑ Khi cần thay thế trang thì xét các biến p tương ứng. Chọn trang cần thay
trong khung mà có p là lớn nhất

Operating System Concepts – 9th Edition 8.84 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (6/15)
❑ Giải thuật OPT

Operating System Concepts – 9th Edition 8.85 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (7/15)
❑ Giải thuật Clock
❑ Các frame cấp cho tiến trình được xem như một bộ đệm xoay vòng
(circular buffer)
❑ Khi một trang được thay, con trỏ sẽ trỏ đến frame kế tiếp trong buffer
❑ Mỗi frame có một use bit. Bit này được lập (=1) khi
❑ Một trang được nạp lần đầu vào frame
❑ Trang chứa trong frame được tham chiếu
❑ Khi cần thay thế một trang, trang nằm trong frame đầu tiên có use bit = 0
sẽ được thay thế
❑ Khi tìm trang thay thế, tất cả use bit được reset về 0

Operating System Concepts – 9th Edition 8.86 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (8/15)
❑ Giải thuật Clock

Operating System Concepts – 9th Edition 8.87 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (9/15)
❑ So sánh LRU, FIFO và clock

❑ Dấu * thể hiện use bit tương ứng được lập (=1)
❑ Giải thuật clock bảo vệ các trang thường được tham chiếu
❑ Clock có hiệu suất tương đương với LRU

Operating System Concepts – 9th Edition 8.88 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (10/15)
❑ Số lượng frame cấp phát cho tiến trình
❑ Hệ điều hành quyết định việc cấp cho mỗi tiến trình bao nhiêu frame
❑ Cấp ít frame ➔ Nhiều page fault
❑ Cấp nhiều frame ➔ Giảm cấp độ đa chương
❑ Chiến lược cấp phát tĩnh (fixed-allocation)
❑ Số frame cấp cho mỗi tiến trình không đổi, được xác định vào thời điểm
nạp và có thể tùy thuộc vào từng ứng dụng
❑ Chiếnu lược cấp phát động (variable-allocation)
❑ Số frame cấp cho mỗi tiến trình có thể thay đổi kích thước khi thực thi
❑ Hệ điều hành phải mất chi phí để xác định các tiến trình

Operating System Concepts – 9th Edition 8.89 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (11/15)
❑ Thrashing
❑ Nếu một tiến trình không có đủ số frame cần thiết thì tỉ số page fault/sec rất
cao ➔ Giảm hiệu suất CPU rất nhiều

Tiến trình có 4 trang được cấp phát 3 frame


0 123
Chuỗi tham chiếu trang:
1 023
123023013012312
013
2
0 1 2 Thời gian
3 312

❑ Thrashing là hiện tượng các trang của một tiến trình bị hoán chuyển vào/ra
liên tục

Operating System Concepts – 9th Edition 8.90 Silberschatz, Galvin and Gagne ©2013
8.9 Bộ nhớ ảo – Các giải thuật thay thế (12/15)
❑ Thrashing

❑ Hiệu suất sử dụng CPU giảm khi cấp độ đa chương tăng lên ➔ dẫn đến
hiện tượng thrashing

Operating System Concepts – 9th Edition 8.91 Silberschatz, Galvin and Gagne ©2013
Bài 8: Quản lý bộ nhớ
8.1. Tổng quan
8.2. Các phương pháp nạp chương trình
8.3. Các cấu trúc chương trình
8.4. Tráo đổi bộ nhớ
8.5. Mô hình quản lý bộ nhớ
8.6. Phân trang
8.7. Phân đoạn
8.8. Kết hợp phân trang-phân đoạn
8.9. Bộ nhớ ảo
8.10. Câu hỏi và bài tập
Operating System Concepts – 9th Edition 8.97 Silberschatz, Galvin and Gagne ©2013
8.10 Câu hỏi và bài tập (1/6)
Câu hỏi 1 Giải thích sự khác biệt giữa địa chỉ logic và địa chỉ physic?
Câu hỏi 2 Giải thích sự khác biệt giữa hiện tượng phân mảnh nội vi và ngoại vi?
Câu hỏi 3 Tại sao kích thước trang luôn là lũy thừa của 2 ?
Câu hỏi 4 Tại sao trong hệ thống sử dụng kỹ thuật phân trang, một tiến trình không thể truy xuất
đến vùng nhớ không được cấp cho nó ? Làm cách nào hệ điều hành có thể cho phép sự truy
xuất này xảy ra ? Hệ điều hành có nên cho phép điều đó không ? Tại sao ?
Câu hỏi 5 Vì sao đôi lúc người ta kết hợp hai kỹ thuật phân trang và phân đoạn ?
Câu hỏi 6 Mô tả cơ chế cho phép một phân đoạn có thể thuộc về không gian điạ chỉ của hai tiến
trình.
Câu hỏi 7 Giải thích vì sao chia sẻ một module trong kỹ thuật phân đoạn lại dễ hơn trong kỹ
thuật phân trang?
Câu hỏi 8 Khi nào thì xảy ra lỗi trang ? Mô tả xử lý của hệ điều hành khi có lỗi trang.

Operating System Concepts – 9th Edition 8.98 Silberschatz, Galvin and Gagne ©2013
8.10 Câu hỏi và bài tập (2/6)
Bài tập 1
Giả sử bộ nhớ chính được phân thành các phân vùng có kích thước là 600K, 500K,
200K, 300K ( theo thứ tự ), cho biết các tiến trình có kích thước 212K, 417K, 112K
và 426K ( theo thứ tự ) sẽ được cấp phát bộ nhớ như thế nào, nếu sử dụng :
a) Thuật toán First fit
b) Thuật toán Best fit
c) Thuật toán Worst fit
Thuật toán nào cho phép sử dụng bộ nhớ hiệu qủa nhất trong trường hợp trên ?

Operating System Concepts – 9th Edition 8.99 Silberschatz, Galvin and Gagne ©2013
8.10 Câu hỏi và bài tập (3/6)
Bài tập 2
Xét bảng phân đoạn sau đây :
Segment Base Length
0 219 600
1 2300 14
2 90 100
3 1327 580
4 1952 96

Cho biết địa chỉ vật lý tương ứng với các địa chỉ logic sau đây :
a. (0,430) b. (1,10) c. (2,500)
d. (3,400) e. (4,112)

Operating System Concepts – 9th Edition 8.100 Silberschatz, Galvin and Gagne ©2013
8.10 Câu hỏi và bài tập (4/6)
Bài tập 3
const N = 1024*1024
Trong một hệ thống sử var A,B : array [1..N] of integer;
dụng kỹ thuật phân trang [Program 1]
theo yêu cầu, xét hai for i:=1 to N do
A[i]:=i;
đoạn chương trình:
for i:=1 to N do
B[A[i]]:=random(N);
[Program 2]
for i:=1 to N do
A[i]:= random(N);
for i:=1 to N do
B[A[i]]:=i;

Operating System Concepts – 9th Edition 8.101 Silberschatz, Galvin and Gagne ©2013
8.10 Câu hỏi và bài tập (5/6)
Bài tập 4
Xét chuỗi truy xuất bộ nhớ sau:
1, 2 , 3 , 4 , 2 , 1 , 5 , 6 , 2 , 1 , 2 , 3 , 7 , 6 , 3 , 2 , 1 , 2 , 3 , 6
Có bao nhiêu lỗi trang xảy ra khi sử dụng các thuật toán thay thế sau đây,
giả sử có 2, 3, 4, 5 khung trang ?
a) LRU
b) FIFO
c) Chiến lược tối ưu

Operating System Concepts – 9th Edition 8.102 Silberschatz, Galvin and Gagne ©2013
8.10 Câu hỏi và bài tập (6/6)
Bài tập 5
Cho chuỗi trang truy xuất như sau:
1, 0, 2, 1, 2, 4, 7, 3, 1, 4, 7, 5, 3, 2, 1, 4, 5, 7, 3
Giả sử hệ thống có 4 khung trang trống.
Tính số trang lỗi và số trang phải thay ra trong các giải thuật:
a/ FIFO
b/ OPT
c/ LRU.

Operating System Concepts – 9th Edition 8.103 Silberschatz, Galvin and Gagne ©2013
Thanks for attending!

Operating System Concepts – 9th Edit9on Silberschatz, Galvin and Gagne ©2013

You might also like