Nội DungTổng quan về Bộ nhớ và Tiến trình Hoán vị swapping Cấp phát bộ nhớ kề nhau Contigous allocation Phân trang Paging Các cấu trúc bảng trang Phân đoạn Segmentation Kết hợp phân tran
Trang 2Mục Tiêu
I Mô tả chi tiết các phương pháp tổ chức bộ nhớ
I Giải thích các kỹ thuật quản lý bộ nhớ bao gồm phân trang và phânđoạn
I Một số ví dụ thực tế về quản lý bộ nhớ: quản lý phân đoạn trong bộ
xử lý Intel Pentium và quản lý địa chỉ bộ nhớ trong HĐH Linux
Trang 3Nội Dung
Tổng quan về Bộ nhớ và Tiến trình
Hoán vị (swapping)
Cấp phát bộ nhớ kề nhau (Contigous allocation)
Phân trang (Paging)
Các cấu trúc bảng trang
Phân đoạn (Segmentation)
Kết hợp phân trang và phân đoạn
Phụ lục – Một Số Ví Dụ
Trang 4Tổng quan về Bộ nhớ và Tiến trình
Tổng quan về bộ nhớ
Giới Thiệu Bộ Nhớ
I CPU chỉ có thể truy xuất trực tiếp thanh ghi và bộ nhớ chính
⇒ Để thực thi một chương trình, đoạn mã của chương trình phảiđược tải vào trong bộ nhớ chính và đặt trong một tiến trình
I Thanh ghi: một dạng bộ nhớ đặc biệt, đặt bên trong CPU và chỉ mấttối đa 1 chu kỳ CPU để truy xuất
I Bộ nhớ chính: tốc độ truy xuất chậm hơn thanh ghi, đòi hỏi vài chu kỳ
I Bộ nhớ cache: là bộ nhớ trung gian giữa thanh ghi và bộ nhớ chính,tốc độ truy xuất nhanh, chỉ chậm hơn thanh ghi
I Việc bảo vệ bộ nhớlà cần thiết để đảm bảo thực thi đúng đắn của cáctiến trình, đặc biệt trong môi trường đa nhiệm
Trang 5Tổng quan về Bộ nhớ và Tiến trình
Thanh ghi nền và thanh ghi giới hạn
Thanh Ghi Nền & Thanh Ghi Giới Hạn
I Hỗ trợ việc phân chia vùng nhớ
256000
base 120900 limit 420940
880000 1024000
process
process
process
Figure 8.1 A base and a limit register define a logical address space.
300040 and the limit register is 120900, then the program can legally access all addresses from 300040 through 420939 (inclusive).
Protection of memory space is accomplished by having the CPU hardware compare every address generated in user mode with the registers Any attempt
by a program executing in user mode to access operating-system memory or other users’ memory results in a trap to the operating system, which treats the attempt as a fatal error (Figure 8.2) This scheme prevents a user program from (accidentally or deliberately) modifying the code or data structures of either the operating system or other users.
The base and limit registers can be loaded only by the operating system, which uses a special privileged instruction Since privileged instructions can
be executed only in kernel mode, and since only the operating system executes
in kernel mode, only the operating system can load the base and limit registers.
Trang 6[HĐH] Ch5 Quản lý bộ nhớ
Tổng quan về Bộ nhớ và Tiến trình
Bảo vệ không gian nhớ
Bảo Vệ Không Gian Nhớ Bằng Phần Cứng
I Được thực thi bởi CPU, sử dụng t/ghi cơ sở và t/ghi giới hạn
I Hai thanh ghi chỉ có thể được thay đổi bởi HĐH, với quyền đặc biệt
8.1 Background 353
operating system 0
256000
base 120900 limit 420940
880000 1024000
process
process
process
Figure 8.1 A base and a limit register define a logical address space.
300040 and the limit register is 120900, then the program can legally access all
addresses from 300040 through 420939 (inclusive).
compare every address generated in user mode with the registers Any attempt
by a program executing in user mode to access operating-system memory or
other users’ memory results in a trap to the operating system, which treats the
attempt as a fatal error (Figure 8.2) This scheme prevents a user program from
(accidentally or deliberately) modifying the code or data structures of either
the operating system or other users.
The base and limit registers can be loaded only by the operating system,
which uses a special privileged instruction Since privileged instructions can
be executed only in kernel mode, and since only the operating system executes
in kernel mode, only the operating system can load the base and limit registers.
base
memory trap to operating system
monitor—addressing error
no no
Trang 7Hoán vị (swapping)
Hoán Đổi (Swapping)
I Là một kỹ thuật cho phép tổng không gian bộ nhớ của các tiến trìnhlớn hơn tổng không gian nhớ vật lý:
I Một (hay một phần) tiến trình có thể được di chuyển tạm thời từ bộ nhớ chính ra các thiết bị lưu trữ phụ ( cuộn ra – roll/swap out ) rồi sau
đó di chuyển ngược vào bộ nhớ chính để tiếp tục thực thi ( cuộn vào – roll/swap in ).
I Cho phép tăng độ đa nhiệmcủa các hệ thống đa chương
I Tốc độ của thiết bị lưu trữ phụ phải đủ nhanh để sao chép hiện trạng
bộ nhớ (memory image) của các tiến trình và cho phép truy cập trựctiếp các dữ liệu này
Trang 8[HĐH] Ch5 Quản lý bộ nhớ
Hoán vị (swapping)
Roll in, Roll out
Swap Out, Swap In
358 Chapter 8 Main Memory
programs would need to be relinked to gain access to the new library So that programs will not accidentally execute new, incompatible versions of libraries, version information is included in both the program and the library More than one version of a library may be loaded into memory, and each program uses its version information to decide which copy of the library to use Versions with minor changes retain the same version number, whereas versions with major changes increment the number Thus, only programs that are compiled with the new library version are affected by any incompatible changes incorporated
in it Other programs linked before the new library was installed will continue using the older library This system is also known asshared libraries.
Unlike dynamic loading, dynamic linking and shared libraries generally require help from the operating system If the processes in memory are protected from one another, then the operating system is the only entity that can check to see whether the needed routine is in another process’s memory space
or that can allow multiple processes to access the same memory addresses We elaborate on this concept when we discuss paging in Section 8.5.4.
A process must be in memory to be executed A process, however, can be
swappedtemporarily out of memory to abacking storeand then brought back into memory for continued execution (Figure 8.5) Swapping makes it possible for the total physical address space of all processes to exceed the real physical memory of the system, thus increasing the degree of multiprogramming in a system.
8.2.1 Standard Swapping
Standard swapping involves moving processes between main memory and
a backing store The backing store is commonly a fast disk It must be large
operating system
swap out
swap in
user space main memory
Trang 9Hoán vị (swapping)
Cài Đặt Hoán Đổi
Cài Đặt Hoán Đổi
I Phần chính của thời gian hoán đổi là thời gian chuyển dữ liệu(transfertime), thường tỷ lệ với kích thước bộ nhớ hoán đổi
I Hệ thống duy trì một hàng đợi sẵn sàngđể lưu trữ danh sách các tiếntrình sẵn sàng thực thi và đang được hoán đổi ra vùng lưu trữ phụ
I Thời gian chuyển ngữ cảnh trong cách tiếp cận này tương đối cao ⇒thường không khả thi trong thực tế
I Các phiên bản được sửa đổi của swapping được sử dụng trong các hệđiều hành hiện tại:
I Swapping bình thường bị vô hiệu hóa.
I Nó chỉ được kích hoạt khi nhu cầu bộ nhớ đạt đến 1 ngưỡng nào đó.
Trang 10Cấp phát bộ nhớ kề nhau (Contigous allocation)
Giới thiệu
Cấp Phát Bộ Nhớ Kề Nhau
I Là một trong các p/pháp cấp phát bộ nhớ được sử dụng đầu tiên
I Bộ nhớ chính thường được chia thành 2 phần:
ngắt).
I Tiến trình người dùng: được tổ chức trong vùng nhớ cao.
I Mỗi tiến trình được cấp phát một vùng nhớ đơn, liên tục
I Bộ quản lý bộ nhớ thực hiện ánh xạ địa chỉ luận lý sang vật lý vàothời gian thực thi (động):
I địa chỉ vật lý = địa chỉ luận lý + giá trị thanh ghi tái định vị.
Trang 11Cấp phát bộ nhớ kề nhau (Contigous allocation)
Bảo vệ vùng nhớ
Bảo vệ vùng nhớ
I Thanh ghi tái định vị được sử dụng để bảo vệ vùng nhớ của các tiếntrình người dùng và HĐH (mã lệnh và dữ liệu)
I Thanh ghi tái định vị: chứa địa chỉ vật lý thấp nhất của tiến trình.
I Thanh ghi giới hạn: chứa phạm vi địa chỉ luận lý của tiến trình.
logical address
trap: addressing error no yes physicaladdress
relocation register
' (
limit register
Trang 12Cấp phát bộ nhớ kề nhau (Contigous allocation)
Cấp phát đa phân khu động
Cấp Phát Đa Phân Khu Động
I Dùng cho hệ thống đa chương: mỗi t/trình được cấp phát 1 phân khu
I Cấp độ đa chương được xác định bởi số lượng phân khu
I K/thước mỗi phân khu có thể thay đổi tùy vào nhu cầu của t/trình
I Lỗ trống (hole): là vùng nhớ còn trống chưa được cấp phát
I Có thể nằm rãi rác trong bộ nhớ (do sự cấp phát, thu hồi bộ nhớ).
I Khi 1 t/trình xuất hiện, nó được phân 1 lỗ trống đủ chứa nó.
I Khi 1 t/trình kết thúc, vùng nhớ dành cho nó sẽ được thu hồi thành lỗ trống và kết hợp với lỗ trống liền kề nếu có.
I Hệ thống sẽ duy trì thông tin về các phân khu đã cấp phát và lỗ trống
Trang 13Cấp phát bộ nhớ kề nhau (Contigous allocation)
Cấp phát đa phân khu động
Chiến Lược Cấp Phát
I Làm thế nào để đáp ứng một yêu cầu bộ nhớ kích thước n?
I First-fit : Cấp phát lỗ trống đủ lớn đầu tiên.
Trang 14Cấp phát bộ nhớ kề nhau (Contigous allocation)
Cấp phát đa phân khu động
Sự Phân Mảnh
I Phân mảnh trong: Phân khu cấp phát cho tiến trình lớn hơn nhu cầu
I Phân mảnh ngoài: Các lỗ trống nằm rãi rác ⇒ có thể xảy ra trườnghợp tổng kích các lỗ trống lớn hơn như cầu nhưng chúng không nằmliên tục nên không thể cấp phát
I Khử phân mảnh ngoài: cô đặc lại bộ nhớ – sắp xếp lại bộ nhớ để gomcác lỗ trống lại
I chỉ thực hiện được khi việc tái định vị là động (thực hiện lúc thực thi).
I Một phương pháp khử phân mảnh ngoài là cấp phát không liên tục
Trang 15Phân trang (Paging)
Cơ Chế Phân Trang (Paging)
I Cho phép không gian địa chỉ vật lý cấp phát cho 1 tiến trình có thể
không liên tục nhau ⇒ tránh được phân mãnh ngoài bộ nhớ
I Bộ nhớ vật lý được chia thành các khối có kích thước cố định(2nbytes, thường từ 512K – 16MB), gọi là các khung(frame)
I Vùng nhớ luận lý của tiến trình cũng được chia thành các khối có kíchthước cố định (bằng kích thước frame), gọi là trang nhớ(page)
I Một chương trình cần n trang sẽ được cấp phát n khung.
I Hệ thống sẽ theo dõi các khung trống và thiết đặt một bảng trang
(table page) để ánh xạ địa chỉ luận lý sang địa chỉ vật lý
Trang 16Phân trang (Paging)
Định địa chỉ trong phân trang
Định Địa Chỉ Trong Phân Trang
I Một địa chỉ luận lý bao gồm:
trang để tìm ra chỉ số khung tương ứng (địa chỉ nền) trong bộ nhớ vật lý.
I Độ dời trang (page offset – d ): được kết hợp với địa chỉ nền để định vị địa chỉ vật lý bộ nhớ.
I Nếu kích thước của vùng nhớ luận lý là 2m bytes và kích thước trang
là 2n bytes thì m-n bits cao được dùng để đánh số trang và n bits thấpđược dùng để gán độ dời trang
Trang 17Phân trang (Paging)
Cấu trúc hệ thống dịch địa chỉ
Cấu Trúc Hệ Thống Dịch Địa Chỉ
physical memory
f
logical address
page table
physical address
p f
f0000 … 0000
f1111 … 1111
Trang 18[HĐH] Ch5 Quản lý bộ nhớ
Phân trang (Paging)
Mô hình phân trang
Mô Hình Phân Trang
page 0 page 1 page 2 page 3 logical
page table
frame number
1 4 3 7
0 1 2 3
0 1 2 3 4 5 6 7
Trang 19a c e f g
a c e f g i k l m n p
0 2 4 6 8 10 12 14
5 6 1 2
Trang 20Phân trang (Paging)
page 0 page 1 page 2 page 3 new process
new-process page table
14 0 1 2 3
13 18 20
Trang 21Phân trang (Paging)
Phân mảnh trong trong phân trang
Phân Mảnh Trong Trong Phân Trang
I Trang cuối cùng được cấp phát có thể không được sử dụng hết ⇒
phân mảnh trong
I Ví dụ:
I Kích thước trang: 2.048 bytes.
I Kích thước tiến trình: 72.766 bytes.
I 35 trang + 1.086 bytes
I Cấp phát: 36 trang.
I Trường hợp phân mảnh xấu nhất = kích thước 1 trang - 1 bytes
Trang 22Phân trang (Paging)
Cài đặt bảng trang
Cài Đặt Bảng Trang
I Bảng trang thường được lưu giữ trong bộ nhớ chính:
I Mỗi tiến trình có một bảng trang.
I Thanh ghi bảng trang nền: trỏ đến bảng trang.
I Thanh ghi chiều dài bảng trang: chỉ định kích thước của bảng trang.
I Mỗi tác vụ truy cập bộ nhớcần 2 thao tác truy cập vùng nhớ:
I 1 thao tác truy xuất bảng trang, sử dụng p để lấy số khung.
I 1 thao tác truy xuất bộ nhớ vật lý, sử dụng d để tính đ/chỉ vật lý.
thanh ghi kết hợp (associative register) hoặc bộ đệm tìm kiếm phụ cho việc dịch địa chỉ (Translation Look-aside Buffer – TLBs ).
Trang 23Phân trang (Paging)
Bộ nhớ kết hợp
Bộ Nhớ Kết Hợp – TLBs
I Là thanh ghi cực nhanh, chứa ánh xạgiữa trang và khung
I Có kích thước nhỏ: 64 – 1024 mục
I Được xem như là bộ đệm của bảng trang
I Cơ chế làm việc (ánh xạ hp, d i vào bộ nhớ vật lý):
I Ngược lại: truy xuất bảng trang để lấy số khung trang như bình thường Đồng thời, đưa ánh xạ trang–khung mới sử dụng vào TLBs.
Trang 24Phân trang (Paging)
Phân trang với TLB
Phân Trang Với TLB
page table f
CPU
logical address
p d
f d
physical address
physical memory
p TLB miss
page number numberframe
TLB hit
TLB
Trang 25Phân trang (Paging)
Thời gian truy xuất hiệu dụng (Effective Access Time – EAT)
Thời Gian Truy Xuất Hiệu Dụng
I Thời gian truy xuất hiệu dụng (EAT):
EAT = (ε + m)α + (ε + 2m)(1 − α)
= (2 − α)m + ε
I ε: thời gian tìm kiếm trên thanh ghi kết hợp (đ/vị thời gian).
I m: thời gian 1 chu kỳ truy xuất bộ nhớ.
I α: tỷ lệ tìm thấy (hit ratio) – tỷ số giữa số lần chỉ số trang được tìm thấy trong TLB trên tổng số lần truy cập bộ nhớ.
I Ví dụ: ε = 20ns, α = 0.8, m = 100ns ⇒ ETA = 140ns
Trang 26Phân trang (Paging)
Bảo vệ bộ nhớ
Bảo Vệ Bộ Nhớ (Memory Protection)
I Mỗi khung được gắn một số bit bảo vệ (protection bits) để chỉ địnhcác tiến trình có thể thực hiện các thao tác gì trên khung
I read-only, read-write, execute,
I Mỗi mục trong bảng trang được gắn 1 bit xác định tính hợp lệ:
I valid : trang tương ứng đang nằm trong không gian địa chỉ luận lý của tiến trình ⇒ trang hợp lệ (có thể truy xuất).
I invalid : trang tương ứng không nằm trong không gian địa chỉ luận lý của bất kỳ tiến trình nào ⇒ không hợp lệ (không thể truy xuất).
I Giải pháp khác bằng phần cứng: dùng thanh ghi độ dài bảng trang (page-table length register – PTLR) để xác định kích thước bảng trang.
Trang 27Phân trang (Paging)
Bảo vệ bộ nhớ
Bit Hợp Lệ, Không Hợp Lệ
page 0
page 0 page 1 page 2
page 3 page 4 page 5
frame number 0 1 2 3 4 5 6 7
2 3 4 7 8 9 0 0
v v v v v v i i page table
valid–invalid bit
10,468 12,287
page 1 page 2 page 3 page 4 page 5
Trang 28Phân trang (Paging)
Chia sẻ trang
Chia Sẻ Trang (Shared Page)
I Chia sẻ mã lệnh:
I Các tiến trình của cùng 1 ch/trình có thể chia sẻ trang chứa mã lệnh.
I Trang được chia sẻ thường được gán thuộc tính chỉ đọc
I Giao tiếp liên tiến trình:
I Các trang nhớ có thể được chia sẻ giữa các tiến trình để thực hiện giao tiếp liên tiến trình.
I Phải được gán thuộc tính đọc-ghi.
I Ngoài ra, mặc nhiên thì các luồng trong cùng một tiến trình có thểchia sẻ chung các trang nhớ trong cùng một không gian tiến trình
Trang 29Phân trang (Paging)
Chia sẻ trang
Chia Sẻ Trang (Shared Page) 8.5 Paging 377
7 6 5
ed 2 4
ed 1 3 2
data 1 1
0 3
4 6 1 page table
for P1process P1
for P3process P3
for P2process P2
data 3
2 data
ed 3
Figure 8.16 Sharing of code in a paging environment.
Each process has its own copy of registers and data storage to hold the data for
the process’s execution The data for two different processes will, of course, be
different.
Only one copy of the editor need be kept in physical memory Each user’s
page table maps onto the same physical copy of the editor, but data pages are
mapped onto different frames Thus, to support 40 users, we need only one
copy of the editor (150 KB ), plus 40 copies of the 50 KB of data space per user.
The total space required is now 2,150 KB instead of 8,000 KB —a significant
savings.
Other heavily used programs can also be shared—compilers, window
systems, run-time libraries, database systems, and so on To be sharable, the
code must be reentrant The read-only nature of shared code should not be
left to the correctness of the code; the operating system should enforce this
property.
The sharing of memory among processes on a system is similar to the
sharing of the address space of a task by threads, described in Chapter 4.
Furthermore, recall that in Chapter 3 we described shared memory as a method
of interprocess communication Some operating systems implement shared
memory using shared pages.
Organizing memory according to pages provides numerous benefits in
addition to allowing several processes to share the same physical pages We
cover several other benefits in Chapter 9.