z Thời gian nạp Load time: phải sinh ra mã có thể định vị lại relocatable code nếu vị trí bộ nhớ không được biết trước khi biên dịch z Thời gian thực hiện Execution time: sự gắn kết bị l
Trang 1CHƯƠNG 7: BỘ NHỚ CHÍNH
Main Memory
Trang 28.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
NỘI DUNG
Background
Swapping
Cấp phát bộ nhớ kề (Contiguous Memory Allocation)
Phân trang (Paging)
Cấu trúc của bảng trang (Structure of the Page Table)
Phân đoạn (Segmentation)
Ví dụ: Intel Pentium
Trang 48.4 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Background
Chương trình phải được mang (từ đĩa) vào trong bộ nhớ và được
sắp xếp bên trong một quá trình để chạy
Chỉ có bộ nhớ chính và các thanh ghi là các lưu trữ mà CPU có thể
truy xuất trực tiếp
Truy xuất thanh ghi mất một xung đồng hồ (hoặc ít hơn)
Truy xuất bộ nhớ chính có thể mất nhiều xung đồng hồ
Cache ở giữa bộ nhớ chính và các thanh ghi CPU.
Bộ nhớ đòi hỏi phải được bảo vệ để đảm bảo hoạt động đúng
Trang 5THANH GHI CƠ SỞ VÀ THANH GHI GIỚI HẠN
Base and Limit Registers
Một cặp thanh ghi cơ sở và thanh ghi giới hạn xác định không
gian địa chỉ logic
Trang 68.6 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
NHỚ
Gắn kết địa chỉ chỉ thị và dữ liệu với địa chỉ bộ nhớ xảy ra trong
ba giai đoạn khác nhau
z Thời gian biên dịch (compile time): nếu vị trí bộ nhớ
được biết trước, mã tuyệt đối (absolute code) có thể được
sinh ra; phải biên dịch lại nếu vị trí khởi đầu thay đổi
z Thời gian nạp (Load time): phải sinh ra mã có thể định vị
lại (relocatable code) nếu vị trí bộ nhớ không được biết
trước khi biên dịch
z Thời gian thực hiện (Execution time): sự gắn kết bị làm
trễ đến tận khi thời gian chạy nếu quá trình có thể được dichuyển trong khi thực hiện từ một đoạn bộ nhớ sang mộtđoạn khác Cần hỗ trợ phần cứng cho các ánh xạ địa chỉ(các thanh ghi cơ sở và giới hạn)
Trang 7XỬ LÝ NHIỀU BƯỚC CỦA MỘT CHƯƠNG
TRÌNH NGƯỜI DÙNG
Trang 88.8 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
KHÔNG GIAN ĐỊA CHỈ LOGIC vs KHÔNG
Quan niệm của một không gian địa chỉ logic gắn kết với một
không gian địa chỉ vật lý tách biệt là tâm đối với quản trị bộ nhớ
z Địa chỉ logic (Logical address) – được sinh ra bởi CPU;
cũng được tham khảo như địa chỉ ảo
z Địa chỉ vật lý (Physical address) – địa chỉ được nhìn thấy
bởi đơn vị bộ nhớ (memory unit)
Các địa chỉ logic và vật lý là như nhau trong các sơ đồ gắn kết
địa chỉ thời gian biên dịch và thời gian nạp; các địa chỉ logic vàvật lý khác nhau trong sơ đồ gắn kết địa chỉ thời gian thực hiện
Trang 9ĐƠN VỊ QUẢN TRỊ BỘ NHỚ
Thiết bị phần cứng ánh xạ địa chỉ ảo với địa chỉ vật lý
Trong sơ đồ MMU, giá trị trong thanh ghi tái định vị được cộng với
mỗi địa chỉ được sinh ra bởi một quá trình người dùng tại thời điểm
nó được gửi đến bộ nhớ
Chương trình người dùng giao tiếp với các địa chỉ logic, không bao
giờ nhìn thấy các địa chỉ thực
Trang 108.10 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
TÁI ĐỊNH VỊ ĐỘNG DÙNG MỘT THANH GHI
TÁI ĐỊNH VỊ
Trang 11NẠP ĐỘNG Dynamic Load
Thủ tục (Routine) không được nạp đến tận khi được gọi
Sử dụng không gian bộ nhớ tốt hơn, thủ tục không được dùng đến
không bao giờ được nạp
Hữu dụng khi các lượng lớn code cần thiết cho quản lý các trường
hợp không thường xuyên xảy ra
Không có hỗ trợ đặc biệt từ HĐH được yêu cầu được thực thi qua
thiết kế chương trình
Trang 128.12 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
LIÊN KẾT ĐỘNG Dynamic Linking
Liên kết bị trì hoãn đến tận thời gian thực hiện
Mảnh code nhỏ, stub, được dùng để định vị thủ tục thư viện
thường trú trong bộ nhớ thích hợp
Stub tự sắp đặt lại với địa chỉ thủ tục và thực hiện thủ tục
HĐH cần kiểm tra thủ tục nằm trong không gian địa chỉ quá
trình
Liên kết động đặc biệt hữu dụng đối với các thư viện
Hệ thống được biết như các thư viện chia sẻ (shared
libraries)
Trang 13 Một quá trình có thể được hoán chuyển tạm thời ra khỏi bộ nhớ lên lưu trữ
ngoài, và sau đó được mang trở lại vào bộ nhớ để tiếp tục thực hiện
Lưu trữ ngoài – đĩa nhanh, đủ lớn để chứa được các bản sao của tất cả
các ảnh bộ nhớ người dùng; phải cung cấp truy xuất trực tiếp đến các ảnh
bộ nhớ này
Roll out, roll in – biến thể của swapping được dùng cho các thuật toán lập
lịch biểu dựa trên ưu tiên; quá trình độ ưu tiên thấp bị chuyển ra, quá trình
có độ ưu tiên cao được nạp vào và được thực hiện
Phần lớn thời gian swap là thời gian truyền; tổng thời gian truyền tỷ lệ với
lượng bộ nhớ được swapped
Các phiên bản được sửa đổi được tìm thấy trên nhiều HĐH (UNIX, Linux,
và Windows)
Hệ thống duy trì một hàng đợi sẵn sàng (ready queue) các quá trình sẵn
sàng chạy có ảnh bộ nhớ trên đĩa
Trang 148.14 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Trang 15Cấp phát kề
Bộ nhớ chính thông thường chia thành hai phần:
z HĐH thường trú, thường được lưu trong bộ nhớ thấp vớivector interrupt
z Các quá trình người dùng được lưu trong bộ nhớ cao
Các thanh ghi tái định vị được dùng để bảo vệ các quá trình
Trang 168.16 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Bảo vệ bộ nhớ với base register và limit register
Trang 17Cấp phát kề (Cont.)
Cấp phát đa ngăn (multiple-partition allocation)
z Lỗ (Hole) – khối bộ nhớ sẵn có; các lỗ kích cỡ khác nhau vàtrải ra trên bộ nhớ
z Khi quá trình đến nó được cấp phát một lỗ đủ lớn để chứa quátrình
z Hệ điều hành duy trì thông tin về :a) các ngăn được cấp phát b) các ngăn tự do (hole)
OS process 5
process 8 process 2
OS process 5
process 2
OS process 5
process 2
OS process 5 process 9
process 2 process 9
process 10
Trang 188.18 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
First-fit: Cấp phát lỗ đầu tiên phù hợp
Best-fit: Cấp phát lỗ nhỏ nhất trong các lỗ phù hợp
Worst-fit: Cấp phát lỗ lớn nhất
Làm thế nào thỏa mãn yêu cầu kích cỡ n từ một danh sách các lỗ tự do
First-fit và best-fit tốt hơn worst-fit về tốc độ và sử dụng lưu trữ
Trang 19Phân mảnh (Fragmentation)
Phân mảnh ngoài (External Fragmentation) – Tổng không gian
bộ nhớ đủ để đáp ứng yêu cầu nhưng không kề (gồm những mảnhnhỏ nằm rải rác trong bộ nhớ)
Phân mảnh trong (Internal Fragmentation) – Bộ nhớ được cấp
phát cho quá trình lớn hơn bộ nhớ được yêu cầu, phần bộ nhớ
“dư” trở nên “lãng phí”
Giảm sự phân mảnh ngoài bởi “dồn nén” - compaction
z Dồn nội dung bộ nhớ đã được cấp phát về một phía bộ nhớ, như vậy các “mảnh” nhỏ bộ nhớ tự do sẽ được “dổn về phíangược lại, hợp lại thành một khối lớn
z “Dồn nén” - Compaction chỉ có thể thực hiện với tái định vịđộng và được tiến hành ở thời gian chạy
Trang 208.20 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Bộ nhớ vật lý được chia thành các khối kích thước cố định,
được gọi là các khung - frames (kích thước là lũy thừa của 2,
thường nằm trong khoảng 512 bytes đến 8,192 bytes)
Bộ nhớ logic (của quá trình) được chia thành các khối cùng
kích thước, được gọi là các trang - pages
Trang 21Sơ đồ dịch địa chỉ
Địa chỉ được sinh ra bởi CPU được chia thành hai phần:
z Số trang - Page number (p) – được dùng như chỉ số
trong bảng trang, “ô” ở chỉ số đó lưu địa chỉ cơ sở củakhung chứa trang
z Độ dời trang - Page offset (d) – Được tổ hợp với địa
chỉ cơ sở để xác định địa chỉ vật lý
z Đối với không gian địa chỉ logic 2m và kích thước trang 2n
page number page offset
Trang 228.22 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Trang 23Mô hình phân trang của bộ nhớ logic và bộ
nhớ vật lý
Trang 248.24 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Bộ nhớ 32-byte và kích thước trang 4-byte
Trang 25Các khung tự do
Trang 268.26 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Bảng trang được duy trì trong bộ nhớ chính
Thanh ghi cơ sở bảng trang - Page-table base register (PTBR) trỏ
tới bảng trang
Thanh ghi độ dài bảng trang - Page-table length register (PRLR)
chỉ ra kích thước của bảng trang
Theo sơ đồ này, mỗi truy xuất data/instruction đòi hỏi hai truy xuất bộ
nhớ: Một cho bảng trang và một cho data/instruction
Vấn đề hai truy xuất bộ nhớ có thể được giải quyết bởi sử dụng cache
phần cứng tìm kiếm nhanh đặc biệt được gọi là bộ nhớ kết hợp
(associative memory or translation look-aside buffers - TLBs)
Một vài TLBs lưu bộ định danh không gian địa chỉ - address-space
identifiers (ASIDs) trong mỗi đầu vào TLB – xác định duy nhất mỗi
quá trình để cung cấp bảo vệ không gian địa chỉ cho quá trình đó
Trang 27Bộ nhớ kết hợp
Bộ nhớ kết hợp – Tìm kiếm song song
Dịch địa chỉ (p, d)
z Nếu p có trong thanh ghi kết hợp lấy ra số khung
z Nếu không lấy số khung từ bảng trang trong bộ nhớ
Page # Frame #
Trang 288.28 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Trang 29Thời gian truy xuất hiệu quả
Tìm kiếm kết hợp (Associative Lookup) = ε (đơn vị thời gian)
Giả sử thời gian chu kỳ bộ nhớ là 1 microsecond
Hit ratio – phần trăm thời gian một số trang được tìm thấy
trong các thanh ghi kết hợp; tỷ số này liên quan đến số cácthanh ghi kết hợp
Hit ratio = α
Effective Access Time (EAT)
EAT = (1 + ε) α + (2 + ε)(1 – α)
= 2 + ε – α
Trang 308.30 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Bảo vệ bộ nhớ được thực thi bởi kết hợp bit bảo vệ với mỗi
khung
Bit Valid-invalid được gắn với mỗi đầu vào bảng trang:
z “valid” chỉ ra rằng trang kết hợp là trong không gian địa chỉlogic của quá trình, và như vậy là một trang hợp lệ
z “invalid” chỉ ra rằng trang không ở trong không gian địa chỉcủa quá trình
Trang 31Bit Valid (v) / Invalid (i) trong một bảng trang
Trang 328.32 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Code riêng và Data riêng (Private code and data)
z Mỗi quá trình giữ một bản sao code và dữ liệu tách biệt
z Các trang của code riêng và data riêng có thể xuất hiệnbất kỳ nơi nào trong không gian địa chỉ logic
Trang 33Ví dụ các trang chia sẻ
Trang 348.34 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Bảng trang phân cấp
Bảng trang băm
Bảng trang nghịch đảo
Trang 35Bảng trang phân cấp
Bảng trang được xem như “không gian địa chỉ logic” được phân
trang và có bảng trang tương ứng
Một kỹ thuật đơn giản là bảng trang hai mức
Trang 368.36 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Two-Level Page-Table Scheme
Trang 37Ví dụ phân trang hai mức
Địa chỉ logic (trên máy 32-bit với kích thước trang 1K) được chia thành:
z Số trang gồm 22 bits
z Độ dời trang gồm 10 bits
Vì bảng trang được phân trang, số trang được chia thành :
z Số trang 12-bit
z Độ dời 10-bit
Như vậy, một địa chỉ logic như sau:
trong đó p 1 là chỉ số cho bảng trang ngoài, p 2 là độ dời của bảng trang trong
page number page offset
12 10 10
Trang 388.38 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Trang 39Sơ đồ phân trang đa mức
Trang 408.40 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Thông thường dùng trong không gian địa chỉ > 32 bits
Số trang ảo được băm vào một bảng trang Bảng trang này chứa
một danh sách các phần tử băm đến cùng vị trí
Số trang ảo được so sánh với các số trang trong danh sách Nếu
tương thích, khung vật lý tương ứng được trích ra
Trang 41Bảng trang băm băm
Trang 428.42 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Một đầu vào cho một trang bộ nhớ thực (khung)
Đầu vào gồm địa chỉ ảo của trang được được chứa trongtrang thực tương ứng, với thông tin về quá trình sở hữutrang
Giảm bộ nhớ cần thiết để lưu trữ bảng trang nhưng tăngthời gian tìm kiếm
Trang 43Kiến trúc bảng trang nghịch đảo
Trang 448.44 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Sơ đồ quản trị bộ nhớ hỗ trợ góc nhìn người dùng
Một chương trình là một bộ các đoạn Một đoạn là một đơn vị logic:
main program,procedure, function,method,object,local variables, global variables,common block,
stack,symbol table, arrays
Trang 45Góc nhìn người dùng về một chương trình
Trang 468.46 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
2
3
user space physical memory space
Trang 47Kiến trúc phân đoạn
Địa chỉ logic gồm:
<Số đoạn, độ dời>
Bảng đoạn - Segment table – ánh xạ địa chỉ vật lý hai chiều;
mỗi đầu vào bảng đoạn gồm:
z base – chứa địa chỉ vật lý đầu đoạn
z limit – Xác định chiều dài đoạn
Thanh ghi cơ sở bảng đoạn - Segment-table base
register (STBR) trỏ tới vị trí bảng đoạn trong bộ nhớ
Thanh ghi độ dài bảng đoạn - Segment-table length
register (STLR) chỉ ra số đoạn được dùng bởi một chương
trình
Số doạn s là hợp lệ nếu s < STLR
Trang 488.48 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Bảo vệ
z Kết hợp với mỗi dầu vào bảng đoạn:
Bit validation (= 0 ⇒ đoạn bất hợp lệ)
Trang 49Phần cứng phân đo đo ạn
Trang 508.50 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Trang 51Example: The Intel Pentium
Supports both segmentation and segmentation with paging
CPU generates logical address
z Given to segmentation unit
Which produces linear addresses
z Linear address given to paging unit
Which generates physical address in main memory
Paging units form equivalent of MMU
Trang 528.52 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Logical to Physical Address Translation in
Pentium
Trang 53Intel Pentium Segmentation
Trang 548.54 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Pentium Paging Architecture
Trang 55Linear Address in Linux
Broken into four parts:
Trang 568.56 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th Edition, Feb 22, 2005
Three-level Paging in Linux
Trang 57End of Chapter 7