– Quản lý bộ nhớ
1
Nội dung
n
n
n
Tổng quan
n
Nhu cầu bộ nhớ của tiến trình
n
Các vấn đề về bộ nhớ
Chuyển đổi đòa chỉ
n
Các côn
n
Các mô hình chuyển đổi đòa chỉ
Vai trò Quản lý bộ nhớ của HĐH
n
n
g đoạn
Các yêu cầu
Các mô h
ình tổ chức bộ nhớ
n
Mô hình Liên tục
n
Mô hình Không liên tục
2
Tổng quan
n
Chương trình cần được nạp vào Bộ nhớ chính để thi hành
CPU chỉ có thể truy xuất trực tiếp Main Memory
n
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
n
Ai cấp ph
BNC
cho tiến
Chương trình nguồnát
sử
dụng
đòa trình
chỉ?symbolic
chỉ thực trong BNC
n
n
Tiến trình thực thi truy cập điạ
Ai chuyển đổi đòa chỉ ?
Bộ phận Quản lý Bộ nhớ
HĐH
Mô hình tổ chức ?
Cơ chế hỗ trợ
Chiến lược thực hiện
3
Tổng quan : Các vấn đề về Bộ nhớ
n
n
Cấp phát Bộ nhớ :
n
Uniprogramming :
n
Multiprogramming :
n
BNC giới hạn, N tiến trình ?
n
Bảo vệ ? Chia sẻ ?
Không khó
rình thay đổi kích thước
n
Tiến t
n
Tiến trình lớn hơn BNC ?
?
Chuyển đổi đòa chỉ tiến trình
n
Thời điểm chuyển đổi đòa chỉ ?
n
Công
n
thức chuyển đổi ?
n
Phụ thuộc vào Mô hình tổ chức BNC ?
n
Cần sự hỗ trợ của phần cứng ?
Tiến trình thay đổi vò trí trong BNC ?
4
Ví dụ
0x9000
OS
0x7000
Môi trường đa nhiệm
gcc
0x4000
nachos
0x3000
emacs
0x0000
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ỉ 0x
n
7100? nó thường trú tại 0x4000?
Khi nào gcc biết rằng
n
Nếu emacs cần nhiều bộ nhớ hơn dung lượng vật lý hiện có?
5
Caùc böôùc chuyeån ñoåi chöông trình
C program: test.c
Compiler
Object:test.o
Linker
lib.o
Executable: test.exe
Loader
Memory
6
Caùc böôùc huyeån ñoåi source
program -> .exe
7
A.C
B.C
int x;
F()
int y; x =
{
OS
printf(“Hi”);
12;
}
y = 5;
F();
B.O
A.O
0 //
x
2 //
y
? // F()
0 -2 //
F() …
x
? //
y
? // [?] = 12;
4 // [0] = 12;
5 //
? //
[2] = 5;
6 // jmp F
3 //
//external
// object
? //
0 // F()
? // jmp ?
x
5 //
[?] = 5;
y
7 // [3] = 12;
8 //
[5] = 5;
9 // jmp 0
Test.exe
CuuDuongThanCong.com
/>
8
Thuật ngữ
n
Đòa chỉ logic – còn gọi là đòa chỉ ảo , là tất cả các đòa chỉ do
bộ xử lý tạo ra
n
Đòa chỉphysic
-
là đòa chỉthực
tế mà trình quản
và thao
lýtác
bộ nhớ nhìn thấy
n
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
n
Không gian vật lý – là tập hợp tất cả các đòa chỉ vật
ảo
đòa chỉ
lý tương ứng với các
CuuDuongThanCong.com
/>
9
Nhu cau boọ nhụự cuỷa tieỏn trỡnh
low address
system data segment (PCB)
Tin trỡnh gm cú:
n
code segment
n
n
read from program file by exec
n
usually read-only
n
can be shared
data segment
push
%ebp
8048315:
mov
%esp,%ebp
8048317:
mov
0xc(%ebp),%eax
804831a:
add
0x8(%ebp),%eax
804831d:
pop
%ebp
804831e:
ret
initialized global variables (0 / NULL)
804831f <main>:
n
uninitialized global variables
804831f:
n
heap
8048320:
dynamic memo
n
e.g., allocated using malloc
ry
grows against higher addresses
n
variables in a function
n
stored register states (e.g. calling funct8i0o4n83E45I:P)
n
n
grows against lower addresses
system data segment (PCB)
segment pointers
n
pid
n
program and stack pointers
n
code segment
initialized variables
uninitialized variables
push
%ebp
data segment
mov
%esp,%ebp
n
stack segment
n
n
8048314:
n
n
n
8048314 <add>:
data segment
n
process A
heap
8048322:
$0x18,%esp
8048325:
8048328:
sub
mov
$0x0,%eax
and
$0xfffffff0,%esp
804832d:
sub
%eax,%esp
804832f:
movl
$0x0,0xfffffffc(%ebp)
8048336:
movl
$0x2,0x4(%esp,1)
804833e:
movl
$0x4,(%esp,1)
call
8048314 <add>
804834a:
mov
%eax,0xfffffffc(%ebp)
804834d:
leave
804834e:
ret
804834f:
nop
...
Stack cho cỏc thread
stack
possible stacks for
more threads
10
Logical and Physical Address Spaces
Truy xuất bộ nhớ
Đòa chỉ của Instruction và data trong program source code là symbolic:
n
n
n
goto errjmp;
n
X = A + B;
Những đòa chỉ symbolic này cần được liên kết (bound) với ộ nhớ vật
lý
các đòa chỉ thực trong b
trước khi thi hành code
Address binding: ánh xạ đòa chỉ từ không gian đòa chỉ (KGĐC)
n
KGĐC khác
n
Thời điểm thực hiện address binding ?
n
compile ti
n
load time
n
execution time.
me
này vào
Thời điểm kết buộc đòa chỉ ?
n
Có thể thực hiện việc kết buộc đòa chỉ tạ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
y đổi
Execution-time:
tái nạp khi vò trí bắt đầu tha
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 ?
§
CuuDuongTha
P hần cứng : MMU
nCong.c
om
/>
13
Chuyeån ñoåi ñòa chæ
MMU
gcc
Translation box
Physical
Load
Store
virtual
legal addr?
address
Illegal?
CPU
error
d ata
add
ress
Physical
memory
CPU, MMU and Memory
Yêu cầu quản lý bộ nhớ
Tăng hiệu suất sử dụng CPU
n
Cần hỗ trợ Multiprogramming
n
Lưu trữ cùng lúc nhiều tiến trình trong BNC ?
n
n
Các yêu cầu khi tổ chức lưu trữ tiến trình:
1.
Relocation
2.
Protection
3.
Sharing
4.
Logical
5.
Physical Organization
Organization
Tái đònh vò (Relocation)
Không biết trước chương trình sẽ được nạp vào BN ở vò trí nào
n
để xử lý.
Một tiến trình có thể được di dời trong bộ nhớ sau khi đã nạp C
n
n
Tiến trìn
n
h tăng
trưởng
? để có thể sử dụng BNC hiệu qủa
HĐH sắp xếp lại
các tiến
trình
hơn.
Bảo vệ (Protection)
Không cho phép tiến trình truy cập đến các vò trí nhớ đã cấp
n
cho tiến trình khác (khi chưa có phép).
Không thể thực hiện
n
việc kiểm tra hợp lệ tại thời đ
vì
iểm
biên
dòch
hay
chương trình có thể
được
tái
đònh
vò.na
Thực hiện kiểm tra tại thời điểm thi hành
n
n
Cần sự hỗ trợ của phần cứng.
ïp,
Chia sẻ (Sharing)
n
Cần cho phép nhiều tiến trình tham chiế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 chung.
n
Cho phép các tiến trình cộng tác có khả năng chia sẻ dữ liệu.
Tổ chức logic (Logical Organization)
Người dùng viết chương trình gồm nhiều module, với các yêu
n
cầu bảo vệ cho từng module có thể khác nhau:
n
instruction modules : execute-only.
n
data mo
n
n
d/write.
một số module
là :private,
sốhay
khác
dules
read-only
rea có thể là public.
OS cần hỗ trợ các cơ chế có thể phản ánh mô trình
hình logic của chng
Tổ chức vật lý (Physical Organization)
n
Cấp phát vùng nhớ vật lý sao cho hiệu quả
n
Và dễ dàng chuyển đổi chương trình qua lại giữa BNChính và
BNPhụ
Các mô hình tổ chức bộ nhớ
Cấp phát Liên tục (Contigous Allocation)
n
n
Linker – Loader
n
Base & Bound
Cấp phát
n
n
Segmentation
n
Paging
Không liên
tục
n Contigous
Allocation)
(No
Cấp phát Liên tục (Contigous Allocation)
n
n
Nguyên tắc :
n
Chương trình được nạp toàn thể vào BNC để thi hành
n
Cần một vùng nhớ liên tục, đủ lớn để chứa Chương
Không gian đòa chỉ : liên tục
trình
n
Không gian vật lý : có thể tổ chức
n
Fixed partition
n
Variable
partition
n
2 mô hình đơn giản
n
Linker – Loader
n
Base & Bound
23
Fixed Partitioning
n
Phân chia KGVL thành các partitions
n
Có 2 cách phân chia partitions :
n
n
kích thước bằng nhau
n
kích thước khác nhau
Mỗi tiến trình sẽ được nạp vào
một partition để thi hành
n
Chiến lược cấp phát partition ?
Chiến lược cấp phát partitions cho tiến trình
n
Kích thước partition bằng nhau
n
n
không có gì phải suy nghó !
Kích thước partition không bằn
n
Sử dụng nhiều hàng đợi
n
Cấp cho tiến trình partition với kích
nhau(đủ
: lớn để
thước bégnhất
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
CuuD
p h a ûi đ ợi trong khi
uon
gTh
anC
ong.
com
/>
25