Tải bản đầy đủ (.pdf) (75 trang)

hệ điều hành05 quản lý bộ nhớ sinhvienzone com

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.33 MB, 75 trang )

Chương 5 – Quản lý bộ nhớ

SinhVienZone.com

/>
1


Nội dung
n

Tổng quan
n
n

n

Chuyển đổi đòa chỉ
n
n

n

Các công đoạn
Các mô hình chuyển đổi đòa chỉ

Vai trò Quản lý bộ nhớ của HĐH
n

n


Nhu cầu bộ nhớ của tiến trình
Các vấn đề về bộ nhớ

Các yêu cầu

Các mô hình tổ chức bộ nhớ
n
n

Mô hình Liên tục
Mô hình Không liên tục
SinhVienZone.com

/>
2


Tổng quan
n

Chương trình cần được nạp vào Bộ nhớ
chính để thi hành
n
n

n

n

CPU chỉ có thể truy xuất trực tiếp Main Memory

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
Ai cấp phát BNC cho tiến trình ?

Chương trình nguồn sử dụng đòa chỉ symbolic
n
n

Tiến trình thực thi truy cập điạ chỉ thực trong BNC
Ai chuyển đổi đòa chỉ ?
HĐH
Bộ phận Quản lý Bộ nhớ

Mô hình tổ chức ?
SinhVienZone.com

Cơ chế hỗ trợ

Chiến lược thực hiện
/>
3


Tổng quan : Các vấn đề về Bộ nhớ
n

Cấp phát Bộ nhớ :
n Uniprogramming :
Không khó
n Multiprogramming :

n
n

BNC giới hạn, N tiến trình ?
Bảo vệ ? Chia sẻ ?

Tiến trình thay đổi kích thước ?
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 thức chuyển đổi ?
n

n

n
n

n

Phụ thuộc vào Mô hình tổ chức BNC ?
Cần sự hỗ trợ của phần cứng ?

Tiến trình thay đổi vò trí trong BNC ?

SinhVienZone.com

/>
4



Ví dụ
OS

Môi trường đa nhiệm

gcc
nachos
emacs

n
n

n
n

0x9000
0x7000
0x4000
0x3000
0x0000

Nếu nachos cần thêm không gian ?
Nếu nachos có lỗi và thực hiện thao tác ghi vào
đòa chỉ 0x7100?
Khi nào gcc biết rằng nó thường trú tại 0x4000?
Nếu emacs cần nhiều bộ nhớ hơn dung lượng
vật lý hiện có?
SinhVienZone.com


/>
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
SinhVienZone.com

/>
6


Caùc böôùc huyeån ñoåi
source program -> .exe

SinhVienZone.com

/>
7



A.C

B.C

int x;
int y;
x = 12;
y = 5;
F();

F()
{
printf(“Hi”);
}

B.O

A.O
0 // x
2 // y
4 // [0] = 12;
5 // [2] = 5;
6 // jmp F
//external
// object

0 -2 // F() …

0 //
3 //

5 //
7 //
8 //
9 //

F()
x
y
[3] = 12;
[5] = 5;
jmp 0

OS

?
?
?
?
?
?

//
//
//
//
//
//

F()
x

y
[?] = 12;
[?] = 5;
jmp ?

Test.exe
SinhVienZone.com

/>
8


Thuật ngữ

n

n

n

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
Đòa chỉ physic - là đòa chỉ thực tế mà
trình quản lý bộ nhớ nhìn thấy và thao tác
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
Không gian vật lý – là tập hợp tất cả các
đòa chỉ vật lý tương ứng với các đòa chỉ ảo


SinhVienZone.com

/>
9


Nhu cau boọ nhụự cuỷa tieỏn trỡnh
low address

Tin trỡnh gm cú:
n

code segment
n
n
n

n

read from program file by exec
usually read-only
can be shared

data segment
n
n
n

initialized global variables (0 / NULL)

uninitialized global variables
heap
n
n
n

n

stack segment
n
n
n

n

n
n
n


8048314 <add>:

segment pointers
pid
program and stack pointers


code segment

8048314:

8048315:

push
mov

%ebp
%esp,%ebp

8048317:
804831a:

mov
add

0xc(%ebp),%eax
0x8(%ebp),%eax

804831d:
804831e:

pop
ret

%ebp

initialized variables

804831f <main>:
804831f:
push


%ebp

8048320:
8048322:
8048325:

mov
sub
and

%esp,%ebp
$0x18,%esp
$0xfffffff0,%esp

8048328:

mov

$0x0,%eax

804832d:

sub

%eax,%esp

804832f:
8048336:


movl
movl

$0x0,0xfffffffc(%ebp)
$0x2,0x4(%esp,1)

movl
call

$0x4,(%esp,1)
8048314 <add>

mov
leave

%eax,0xfffffffc(%ebp)

804834d:
804834e:
804834f:

ret
nop

variables in a function
804833e:
8048345:
stored register states (e.g. calling function
EIP)
804834a:

grows against lower addresses

system data segment (PCB)
n

n

dynamic memory
e.g., allocated using malloc
grows against higher addresses

system data segment (PCB)

uninitialized variables
data segment
process A
heap

...



Stack cho cỏc thread

stack
possible
stacks
for more threads
high address


SinhVienZone.com

data segment

n

/>
10


Logical and Physical Address Spaces

SinhVienZone.com

/>
11


Truy xuất bộ nhớ
n

Đòa chỉ của Instruction và data trong program
source code là symbolic:
n
n

n

n


n

goto errjmp;
X = A + B;

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
Address binding: ánh xạ đòa chỉ từ không gian
đòa chỉ (KGĐC) này vào KGĐC khác
Thời điểm thực hiện address binding ?
n
n
n

compile time
load time
execution time.

SinhVienZone.com

/>
12


Thời điểm kết buộc đòa chỉ ?
Có thể thực hiện việc kết buộc đòa chỉ
tại 1 trong 3 thời điểm :

n


§

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 :

SinhVienZone.com

MMU

/>
13


Chuyeån ñoåi ñòa chæ

MMU

gcc

Translation box

Load Store

CPU

virtual
address

data

SinhVienZone.com

legal addr?
Illegal?

Physical
address

Physical
memory

error

/>
14


CPU, MMU and Memory

SinhVienZone.com

/>
15



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

n

n

Lưu trữ cùng lúc nhiều tiến trình trong BNC ?

Các yêu cầu khi tổ chức lưu trữ tiến
trình:
1.
2.
3.
4.
5.

Relocation
Protection
Sharing
Logical Organization
Physical Organization


SinhVienZone.com

/>
16


Tái đònh vò (Relocation)
n

n

Không biết trước chương trình sẽ được nạp
vào BN ở vò trí nào để 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ình tăng trưởng ?
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.

SinhVienZone.com

/>
17


Bảo vệ (Protection)

n

n

n

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).
Không thể thực hiện việc kiểm tra hợp lệ
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ò.
Thực hiện kiểm tra tại thời điểm thi hành
n

Cần sự hỗ trợ của phần cứng.

SinhVienZone.com

/>
18


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


n

Tiết kiệm chỗ lưu trữ cho các module dùng
chung.
Cho phép các tiến trình cộng tác có khả năng
chia sẻ dữ liệu.

SinhVienZone.com

/>
19


Tổ chức logic (Logical Organization)
n

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
n
n

n

instruction modules : execute-only.
data modules : read-only hay read/write.
một số module là private, số khác có thể là
public.


OS cần hỗ trợ các cơ chế có thể phản
ánh mô hình logic của chng trình

SinhVienZone.com

/>
20


Tổ chức vật lý (Physical Organization)
n

n

Cấp phát vùng nhớ vật lý sao cho hiệu
quả
Và dễ dàng chuyển đổi chương trình qua
lại giữa BNChính và BNPhụ

SinhVienZone.com

/>
21


Các mô hình tổ chức bộ nhớ
n

Cấp phát Liên tục (Contigous Allocation)

n
n

n

Linker – Loader
Base & Bound

Cấp phát Không liên tục (Non Contigous
Allocation)
n
n

Segmentation
Paging

SinhVienZone.com

/>
22


Cấp phát Liên tục (Contigous Allocation)
n

Nguyên tắc :
n

n


n
n

Không gian đòa chỉ : liên tục
Không gian vật lý : có thể tổ chức
n
n

n

Chương trình được nạp toàn thể vào BNC để
thi hành
Cần một vùng nhớ liên tục, đủ lớn để chứa
Chương trình

Fixed partition
Variable partition

2 mô hình đơn giản
n
n

Linker – Loader
Base & Bound
SinhVienZone.com

/>
23



Fixed Partitioning
n

n

Phân chia KGVL thành
các partitions
Có 2 cách phân chia
partitions :
n
n

n

kích thước bằng nhau
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 ?
SinhVienZone.com

/>
24



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ằ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ó
SinhVienZone.com

/>

25


×