n Chương trình cần được nạp vào Bộ nhớ chính để thi hành n CPU chỉ có thể truy xuất trực tiếp Main Memory n Chương trình khi được nạp vaò BNC sẽ được tổ chức theo cấu trúc của tiến trì
Trang 1Chương 5 – Quản lý bộ nhớ
1
Trang 2Nội dung
n Nhu cầu bộ nhớ của tiến trình
n Các vấn đề về bộ nhớ
n Các công đoạn
n Các mô hình chuyển đổi địa chỉ
n Các yêu cầu
Trang 3n Chương trình cần được nạp vào Bộ nhớ
chính để thi hành
n CPU chỉ có thể truy xuất trực tiếp Main Memory
n Chương trình khi được nạp vaò BNC sẽ được tổ
chức theo cấu trúc của tiến trình tương ứng
n Ai cấp phát BNC cho tiến trình ?
n Chương trình nguồn sử dụng địa chỉ symbolic
n Tiến trình thực thi truy cập điạ chỉ thực trong BNC
n Ai chuyển đổi địa chỉ ?
Tổng quan
HĐH Bộ phận Quản lý Bộ nhớ Mô hình tổ chức ? Cơ chế hỗ trợ Chiến lược thực hiện
Trang 4Tổng quan : Các vấn đề về Bộ nhớ
n Cấp phát Bộ nhớ :
n Uniprogramming : Không khó
n Multiprogramming :
n BNC giới hạn, N tiến trình ?
n Bảo vệ ? Chia sẻ ?
n Tiến trình thay đổi kích thước ?
n Tiến trình lớn hơn BNC ?
n Chuyển đổi địa chỉ tiến trình
n Thời điểm chuyển đổi địa chỉ ?
n Công thức chuyển đổi ?
Trang 5Ví dụ
n Nếu nachos cần thêm không gian ?
n Nếu nachos có lỗi và thực hiện thao tác ghi vào địa chỉ 0x7100?
n Khi nào gcc biết rằng nó thường trú tại 0x4000?
n Nếu emacs cần nhiều bộ nhớ hơn dung lượng
vật lý hiện có?
0x7000
0x9000
Môi trường đa nhiệm
Trang 7Các bước huyển đổi
source program -> exe
7
Trang 8} B.C
Trang 10Nhu cầu bộ nhớ của tiến trình
n initialized global variables (0 / NULL)
n uninitialized global variables
n heap
n dynamic memory
n e.g., allocated using malloc
n grows against higher addresses
n stack segment
n variables in a function
n stored register states (e.g calling function EIP)
n grows against lower addresses
n system data segment (PCB)
804831e: ret 804831f <main>:
804831f: push %ebp 8048320: mov %esp,%ebp 8048322: sub $0x18,%esp 8048325: and $0xfffffff0,%esp 8048328: mov $0x0,%eax 804832d: sub %eax,%esp 804832f: movl $0x0,0xfffffffc(%ebp) 8048336: movl $0x2,0x4(%esp,1)
804833e: movl $0x4,(%esp,1)
8048345: call 8048314 <add>
804834a: mov %eax,0xfffffffc(%ebp) 804834d: leave
804834e: ret 804834f: nop
code segment
system data segment (PCB)
data segment
initialized variables uninitialized variables
Trang 11Logical and Physical Address Spaces
Trang 12Truy xuất bộ nhớ
n Địa chỉ của Instruction và data trong program
source code là symbolic:
n goto errjmp;
n X = A + B;
n Những địa chỉ symbolic này cần được liên kết
(bound) với các địa chỉ thực trong bộ nhớ vật lý trước khi thi hành code
n Address binding: ánh xạ địa chỉ từ không gian địa chỉ (KGĐC) này vào KGĐC khác
n Thời điểm thực hiện address binding ?
compile time
Trang 13tại 1 trong 3 thời điểm :
§ Compile-time:
§ Phát sinh địa chỉ tuyệt đối
§ Phải biết trước vị trí nạp chương trình
§ Phải biên dịch lại chương trình khi vị trí nạp thay
đổi
§ Load-time:
§ Khi biên dịch chỉ phát sinh địa chỉ tương đối
§ Khi nạp, biết vị trí bắt đầu sẽ tính lại địa chỉ
tuyệt đối
§ Phải tái nạp khi vị trí bắt đầu thay đổi
§ Execution-time:
§ Khi biên dịch,nạp chỉ phát sinh địa chỉ tuong đối
§ Trì hoãn thời điểm kêt buộc địa chỉ tuyệt đối đến
khi thi hành
§ Khi đó ai tính toán địa chỉ tuyệt đối ?
§ Phần cứng : MMU
Thời điểm kết buộc địa chỉ ?
Trang 14Chuyển đổi địa chỉ
gcc
virtual address
Physical address
MMU
Trang 15CPU, MMU and Memory
Trang 16Yêu cầu quản lý bộ nhớ
n Cần hỗ trợ Multiprogramming
n Lưu trữ cùng lúc nhiều tiến trình trong BNC ?
Trang 17vào BN ở vị trí nào để xử lý.
nhớ sau khi đã nạp C
n Tiến trình tăng trưởng ?
n HĐH sắp xếp lại các tiến trình để có thể sử
dụng BNC hiệu qủa hơn
Tái định vị (Relocation)
Trang 18n Không cho phép tiến trình truy cập đến
các vị trí nhớ đã cấp cho tiến trình khác (khi chưa có phép).
tại thời điểm biên dịch hay nạp, vì
chương trình có thể được tái định vị.
n Cần sự hỗ trợ của phần cứng
Bảo vệ (Protection)
Trang 19chiếu đến cùng một vùng nhớ mà không
tổn hại đến tính an toàn hệ thống :
n Tiết kiệm chỗ lưu trữ cho các module dùng
Trang 20n Người dùng viết chương trình gồm nhiều
module, với các yêu cầu bảo vệ cho từng module có thể khác nhau:
n instruction modules : execute-only
n data modules : read-only hay read/write
n một số module là private, số khác có thể là
public
ánh mô hình logic của chuơng trình
Tổ chức logic (Logical Organization)
Trang 21Tổ chức vật lý (Physical Organization)
quả
lại giữa BNChính và BNPhụ
Trang 22Các mô hình tổ chức bộ nhớ
n Cấp phát Liên tục (Contigous Allocation)
n Linker – Loader
n Base & Bound
Allocation)
n Segmentation
n Paging
Trang 24n kích thước bằng nhau
n kích thước khác nhau
n Mỗi tiến trình sẽ được
nạp vào một partition
Trang 25không bằng nhau :
n Sử dụng nhiều hàng đợi
n Cấp cho tiến trình partition với kích thước bé nhất (đủ lớn để chứa tiên trình)
n Khuyết điểm : phân bố các tiến trình vào các partition không đều, một số tiến trình phải đợi trong khi có partition khác trống
Trang 26Chiến lược cấp phát partitions cho tiến trình
n Kích thước partition
không bằng nhau :
n Sử dụng 1 hàng đợi
n Cấp cho tiến trình partition tự do với kích thước bé nhất (đủ lớn để chứa tiên trình)
n Cần dùng một CTDL để theo dõi các
partition tự do
Trang 27Nhận xét Fixed Partitioning
n Sử dụng BN không hiệu quả
n internal fragmentation : kích thước chương trình không đúng bằng kích thước partition
n Mức độ đa chương của hệ thống (Số tiến trình
được nạp) bị giới hạn bởi số partitions
3M
8M
P1 (2M)
P2 (4M)internal frag
internal frag
Trang 28Dynamic Partitioning
chia trước
n Các partition có kích
thước tùy ý, sẽ hình
thành trong quá trình
nạp các tiến trình vào
hệ thống
cấp phát đúng theo
kích thước yêu cầu
P1 (2M)P2 (4M)
Trang 29Dynamic Partitioning:
tình huống
n Chọn lựa partition để cấp phát cho tiến trình ?
n Đồng thời có nhiều partition tự do đủ lớn để chứa tiến trình
n Dynamic Allocation problem
n Tiến trình vào sau không lấp đầy chỗ trống tiến
trình trước để lại
n external fragmentation
P1 (2M)P2 (4M)P3 (8M)
Trang 30Ví duï Dynamic Partitioning
Trang 31Ví duï Dynamic Partitioning
Trang 32Giải quyết vấn đề Dynamic Allocation
n Các chiến lược thông dụng để chọn partition:
n First-fit : chọn partition tự do đầu tiên
n Best-fit : chọn partition tự do nhỏ nhất đủ chứa tiến
trình
n Worst-fit : chọn partition tự do lớn nhất đủ chứa tiến
P18M
First Fit
Trang 33Memory Compaction (Garbage
Collection)
n Giải quyết vấn đề External Fragmentation :
n Dồn các vùng bị phân mảnh lại với nhau để tạo thành partition liên tục đủ lớn để sử dụng
n Chi phí thực hiện cao
2MP11M
External
fragmentations
P21.5M
Trang 34Các mô hình chuyển đổi địa chỉ
chức nạp tiến trình vào KGVL
KGĐC vào KGVL
n Linker Loader
n Base & Bound
Trang 35Mô hình Linker-Loader
n Tại thời điểm Link, giữ lại các địa chỉ logic
n Vị trí base của tiến trình trong bộ nhớ xác định được vào thời điểm nạp :
địa chỉ physic = địa chỉ logic + base
(base)
Trang 36Nhận xét mô hình Linker-Loader
n Không cần sự hỗ trợ phần cứng để
chuyển đổi địa chỉ
§ Loader thực hiện
n Bảo vệ ?
§ Không hỗ trợ
n Dời chuyển sau khi nạp ?
§ Không hỗ trợ tái định vị
§ Phải nạp lại !
Trang 37n Tại thời điểm Link, giữ lại các địa chỉ logic
n Vị trí base , bound được ghi nhận vào 2 thanh ghi:
n Kết buộc địa chỉ vào thời điểm thi hành => tái
định vị được :
địa chỉ physic = địa chỉ logic + base register
n Bảo vệ : địa chỉ hợp lệ ⊆ [base, bound]
Trang 38Nhận xét mô hình Base & Bound
n Kết buộc địa chỉ tại thời điểm thi hành => cần
hỗ trợ của phần cứng
Trang 39Khuyết điểm của cấp phát liên tục
nạp tiến trình ?
n Bó tay
n Sử dụng BNC không hiệu qua”!
1MP18MP3 (9M)
P21M
?
Trang 40Các mô hình tổ chức bộ nhớ
n Linker – Loader
n Base & Bound
n Cấp phát Không liên tục (Non Contigous Allocation)
n Segmentation
n Paging
Trang 41Các mô hình cấp phát không liên tục
vùng nhớ không liên tục
nhiều partition
n Segmentation
n Paging
n Fixed partition : Paging
n Variable partition : Segmentation
Trang 42n Lập trình viên : chương trình là một tập các
segments
n Một segment là một đơn vị chương trình gồm các đối
tượng có cùng nhóm ngữ nghĩa
n Ví dụ : main program, procedure, function, local
variables, global variables,common block,stack, symbol table, arrays
n Các segment có thể có kích thước khác nhau
n Mô hình Segmentation :
n KGĐC : phân chia thành các segment
n KGVL : tổ chức thành dynamic partitions
n Nạp tiến trình :
Trang 43data (m) stack heap
KGDC
Quản lý địa chỉ
?
Trang 44Chuyển đổi địa chỉ trong mô hình Segmentation
Trang 45Logical-to-Physical Address Translation
in segmentation
Trang 46Nhận xét Mô hình Segmentation
n Cấp phát không liên tục => tận dụng bộ nhớ
hiệu quả
n Hỗ trợ tái định vị
n Từng Segment
n Hỗ trợ Bảo vệ và Chia sẻ được ở mức module
n Ý nghĩa của “mức module” ?
L Chuyển đổi địa chỉ phức tạp
J Đã có MMU
L Sử dụng dynamic partition : chịu đựng
L Dynamic Allocation : chọn vùng nhớ để cấp cho một
Trang 50Tổ chức Paging
n Điạ chỉ logic : <page-number, offset>
n Địa chỉ physic : <frame-number, offset>
n Chuyển đổi địa chỉ : <p,d> ð <f,d>
n Chuyển đổi địa chỉ vào thời điểm thi hành
n MMU thi hành
n Sử dụng Page Table để lưu thông tin cấp phát BNC, làm cơ sở thực hiện ánh xạ địa chỉ
n Mỗi tiến trình có một Page Table
Trang 51Logical addr
f
Page table
Trang 52Logical-to-Physical Address Translation
in Paging
Trang 54Lưu trữ Page Table
n Giả sử hệ thống sử dụng m bit địa chỉ
n Size of KGĐC = 2 m
n Kích thước page
n Trên nguyên tắc tùy ý, thực tế chọn pagesize = 2 n
n Tại sao ?
n Số trang trong KGĐC: #pages = 2m / 2n = 2m-n
n Ví dụ : 32-bits địa chỉ, pagesize = 4K
Trang 55Lưu trữ Page Table : Tiết kiệm không gian
n Sử dụng bảng trang đa cấp
n Chia bảng trang thành các phần nhỏ, bản
thân bảng trang cũng sẽ được phân trang
n Chỉ lưu thường trực bảng trang cấp 1, sau
đó khi cần sẽ nạp bảng trang cấp nhỏ hơn thích hợp
n Có thể loại bỏ những bảng trang chứa
thông tin về miền địa chỉ không sử dụng
n Sử dụng Bảng trang nghịch đảo
n Mô tả KGVL thay vì mô tả KGĐC -> 1 IPT cho toàn
bộ hệ thống
Trang 56Bảng trang đa cấp
n Bảng trang tuyến tính
n Sử dụng
page-number làm chỉ mục đến Page Table
n Phải lưu tất cả các
phần tử mô tả tất cả các trang trong KGĐC
n Những page không sử dụng : lãng phí
p d 0
1 2 3
p
7 8 9 10 11 12
f
5 16
2
Trang 57Bảng trang đa
cấp
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
12 13 14 15
Page Table cấp 1
Page Table cấp 2
Page Table cấp 2
Page Table cấp 2
Page Table cấp 2
57
Trang 58Mô hình bảng trang 2 cấp
Trang 59Ví dụ mô hình bảng trang 2 cấp
kích thước trang 4Kb.
nSố hiệu trang : 20 bits
nOffset tính từ đầu mỗi trang :12 bits
hiệu trang lại được chia làm 2 phần:
nSố hiệu trang cấp 1
nSố hiệu trang cấp 2
Trang 60Ví dụ mô hình bảng trang 2 cấp
page number page offset
Trang 61Bảng trang đa
1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
14 15 16 17
Page Table cấp 1
Page Table cấp 2
Page Table cấp 2
Page Table cấp 2
Page Table cấp 2
1 2 100
61
Trang 62Bảng trang nghịch đảo (Inverted Page Table)
n Sử dụng duy nhất một bảng trang nghịch đảo
cho tất cả các tiến trình
n Mỗi phần tử trong bảng trang nghịch đảo mô tả
một frame, có cấu trúc
n <page> : số hiệu page mà frame đang chứa đựng
n <idp> : id của tiến trình đang được sỡ hữu trang
n Mỗi địa chỉ ảo khi đó là một bộ ba <idp, p, d >
n Khi một tham khảo đến bộ nhớ được phát sinh,
một phần địa chỉ ảo là <idp, p > được đưa đến cho trình quản lý bộ nhớ để tìm phần tử tương
Trang 63Kiến trúc bảng trang nghịch đảo
Trang 64Lưu trữ Page table : Tiết kiệm thời gian
:
n Tra cứu Page Table để chuyển đổi địa chỉ
n Tra cưu bản thân data
n Tìm cách lưu PT trong cache
n Cho phép tìm kiếm nhanh
n PT lớn, cache nhỏ : làm sao lưu đủ ?
Lưu 1 phần PT
Trang 65Translation Lookaside Buffer (TLB)
để lưu tạm thời một phần của PT được gọi là Translation Lookaside Buffer (TLB)
n Cho phép tìm kiếm tốc độ cao
n Kích thước giới hạn (thường không quá 64
phần tử)
page và frame tương ứng đang chứa page
trước, nếu không tìm thấy số hiệu page
cần thiết, mới truy xuất vào PT để lấy
thông tin frame.
Trang 66Translation Lookaside Buffer
Trang 67f
Trang 68Sử dụng TBL
Trang 69Bảo vệ và chia sẻ trong Segmentation và Paging
n Segmentation : mỗi phần tử trong ST được
gắn thêm các bit bảo vệ
n Mỗi segment có thể được bảo vệ tùy theo ngữ nghĩa của các đối tượng bên trong segment
n Paging : mỗi phần tử trong PT được gắn thêm các bit bảo vệ
n Mỗi page không nhận thức được ngữ nghĩa của các đối tượng bên trong page, nên bảo vệ chỉ áp dụng cho toàn bộ trang, không phân biệt.
cùng trỏ đến 1 vị trí trong KGVL
n Segmentation : chia sẻ mức module chương
trình
n Paging : chia sẻ các trangCuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 70Sharing Pages: A Text Editor
Trang 71Sharing Pages: A Text Editor
ed 3 + data 1
ed 3 + data 3
ed 3 + data 2
Chia sẻ Page 2 = Chia sẻ cả code và
71
Trang 72Đánh giá các mô hình chuyển đổi địa chỉ
n tm : thời gian truy xuất BNC
n tc : thời gian truy xuất cache
n hit-ration : tỉ lệ tìm thấy một số hiệu trang p trong TLB
(Time Effective Acess) đến một đối tượng
trong BNC
n bao gồm thời gian chuyển đổi địa chỉ và thời
gian truy xuất dữ liệu
Trang 7373
Trang 74n Giả sử:
không vượt quá 200ns
Trang 75n EAT = (1 – p) x memory access + p (page fault