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

BÀI 7 QUẢN LÍ BỘ NHỚ pdf

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.26 MB, 12 trang )



BÀI 7 QUẢN LÍ BỘ NHỚ
Group6789.com

I. KHÁI NIỆM
-
QLBN
là công việc của HĐH với sự hỗ trợ của phần cứng nhằm phân
phối, sắp xếp các P trong bộ nhớ sao cho hiệu quả
- Mục tiêu: chứa càng nhiều P càng tốt
- Kernel chiếm một phần cố định của bộ nhớ, phần còn lại chia cho các P

II. CÁC KIỂU
ĐỊA CHỈ
NHỚ
-
Đ

a ch


v

t lý (Physical Ad
d
ress):
là địa chỉ thực trong
bộ nhớ chính
- Địa chỉ luận lý (Logical Address): là một địa chỉ nhớ
được diễn tả trong một trương trình (còn gọi là địa chỉ ảo)


 Địa chỉ tương đối (Relative adress): là 1 kiểu địa
chỉ luận lý (địa chỉ khả tái định vị) trong đó địa chỉ
được biểu diễn tương đối so với một vị trí xác
định nào đo trong chương trình
 Địa chỉ tuyệt đối (absolute address): địa chỉ
tương ứng với địa chỉ thực
Cách nạp chương trình vào bộ nhớ.

- Linker kết hợp các Object module tạo thành file nhị phân khá phức tạp được gọi là
load module
- Sau đó bộ Loader có nhiệm vụ nạp load module vào bộ nhớ chính.






Cơ chế thực hiện Linking

- Thay vì các Module Object được tách ra ban đầu, chúng ta sẽ gộp chúng lại thành một
load module bằng cách định vị lại địa chỉ tương đối của từng Object Module.
III. CHUYỂN
ĐỔI ĐỊA CHỈ
NHỚ
-
Chuy

n đ

i đ


a ch


là một
quá trình ánh x

một địa chỉ
từ không gian địa chỉ này sang không gian địa chỉ khác.
-


Các thời điểm mà địa chỉ lệnh (instruction) và địa chỉ dữ liệu (data) có
thể biến thành địa chỉ vật lý
1. Compile time



Ta có i là instruction (địa chỉ lệnh) và j là địa chỉ dữ liệu. i và j được chuyển
đổi thành các địa chỉ thực ngay sau khi Compile nếu ta biết được địa chỉ vật
lý bộ nhớ của chương trình
Khuyết điểm:phải biên dịch lại nếu thay đổi địa chỉ nạp chương trình (thay
đổi địa chỉ vật lý trong bộ nhớ)
2. Load time

Ta có i và j được chuyển đổi thành các địa chỉ khả tái định vị vào thời điểm
Compile. Vào thời điểm Loading, loader phải chuyển đổi các địa chỉ khả
tái định vị này thành địa chỉ thực dựa trên một địa chỉ nền (base address).
Khuyết điểm: địa chỉ nền thay đổi  phải reload vì ta có địa chỉ thực của
chương trình đã được tính toán vào thời điểm nạp chương trình



3. Excution time (thời gian thực thi):


- Nếu trong quá trình thực thi,
process có thể di chuyển từ
segment (khúc) này đến segment
khác trong bộ nhớ thì quá trình
chuyển đổi địa chỉ bộ nhớ bị gián
đoạn
- Cần sự hỗ trợ của phần cứng để
ánh xạ địa chỉ.
- Có các cơ chế swapping, paging,
segmentation.



IV. DYNAMIC
LINKING
VS
DYNAMIC LOADING
- Dynamic linking: là quá trình link đến một module ngoài (external
module) sau khi đã tạo xong load module
Ví dụ trong windows: module ngoài là các file .dll còn trong linux là .so
- Load module chứa các stub(gốc) tham chiếu (refer) đến routine
(function) của external module
- Khi stub được thực thi lần đầu (tức là khi process gọi routine), stub sẽ
nạp routine vào bộ nhớ, tự thay thế địa chỉ của routine và routine được
thực thi

- Stub cần sự hỗ trợ của OS để biết được routine có được nạp vào bộ nhớ
hay chưa
- Ưu điểm của Dynamic linking:
External Module thường là 1 thư viện cung cấp các tiện ích của
OS. Các chương trình có thể dùng chúng mà không cần sửa đổi
hay biên dịch lại. mà không cần sửa đổi hay biên dịch lại.

Code sharing: External module chỉ cần nạp vào bộ nhớ một lần. các
process cần dùng external module này thì cùng chia sẻ code giúp tiết
kiệm không gian nhớ và ổ đĩa.
Dynamic linking cần sự hỗ trợ của OS để biết được phần thủ tục nào
đó là phần mã chia sẻ, hay là phần mã của riêng 1 process.


V. OVERLAY
AND
SWAPPING
Overlay(Phủ lắp)
- Mục tiêu: chỉ giữ lại những lệnh or data cần thiết, giải phóng các vùng
dữ liệu chưa hoặc không cần dùng.
- Phù hợp với các process có kích thước lớn hơn so với bộ nhớ mà nó
được cấp.
- Chế độ user mode. Không cần Can thiệp từ OS.




- Trong hình có 2 phần (pass 1+2).Vùng nhớ còn 90Kb. Không thể nhét 2
thằng vào được. Do đó từng thằng sẽ vào, sau khi thằng 1 được thực
hiện xong, nó giải phóng, và thằng tiếp theo sẽ được vào.


SWAPPING
- Một process có thể tạm thời bị swap ra ngoài bộ nhớ chính và lưu trữ ở
một bộ hệ thống lưu trữ khác. Sau đó sẽ được nạp lại để tiếp tục quá
trình.
(được swap theo Round-Robin và Priority- based scheduling)
- Hiện nay ít hệ thống sử dụng cơ chế swapping trên.
VI. PHÂN MẢNH

(Fragmentation)
Phân mảnh ngoại
(external fragmentation)
- Kích thước không gian nhớ
không đủ để thỏa mãn yêu
cầu cấp phát, tuy nhiên
không gian nhớ này không
liên tục. Có thể dùng cơ
chết kết nối để gom chúng
lại thành một vùng nhớ

Phân mảnh nội
(internal fragmentation)
- Kích thước vùng nhớ được cấp phát
có thể lớn hơn vùng nhớ được yêu
cầu.
- Hiện tượng phân mảnh nội xảy ra
khi bộ nhớ thực được chia thành
các khối có kích thước cố định và
các process được cấp phát theo đơn
vị khối




6.1 Phân vùng bộ nhớ cố
định
(Fixed partitioning)


- Bộ nhớ chính được chia thành nhiều phần (partitions) có kích thước
bằng nhau
- Process nào có size < hoặc == kích thước partition đó thì được vào.
- Nếu chương trình có kích thước lớn hơn partition thì phải dùng cơ chế
overlay


- Xảy ra hiện tượng phân mảnh nội  Không hiểu quả

Chiến lược Placement

TH1: Các Partitions có kích thước bằng nhau:
- Nếu partition nào trống, process sẽ được nạp vào partition đó
- Nếu không, tìm trong bộ nhớ có process nào đang bị blocked, sau đó
tiến hành swap process đó ra bộ nhớ phụ và thay process mới vào
TH2: Các partitions có kích thước không bằng nhau:
 Giải pháp 1:
- Tạo hàng đợi cho mỗi partition
- Gán mỗi process phù hợp với partitions
- ĐƯỢC LỢI: giảm thiểu phân mảnh nội.
- VÂN ĐỀ: có thể có một số hàng đợi không chứa Process nào.
 Giải pháp 2:

- Cho 1 hàng đợi chung cho mọi partitions.
- Khi cần nạp một process vào bộ nhớ chính, chọn partition còn
trống và hợp size nhất.

6.2 Phân vùng bộ nhớ
động
(Dynamic Partitions)

- Số lượng partitions không cố định và kích thước của chúng khác
nhau
- Mỗi process được cấp phát chính xác bộ nhớ cần thiết.
- Nhận xét  đến một lúc nào đó, bộ nhớ sẽ không đủ để cấp phát
cho 1 process mới nên gây ra hiện tượng phân mảnh ngoại

Chiến lược placement
4 Chiến lượt cơ bản:
- Best – fit:Chọn khối nhớ trống nhỏ nhất:
- First – fit: Chọn khối nhớ trống phù hợp đầu tiên kể từ đầu bộ nhớ
- Next – fit: Chọn khối nhớ trống phù hợp đầu tiên kể từ vị trí cấp
phát cuối cùng
- Worst – fit: chọn khôi nhớ trống lớn nhất


VII. CƠ CHẾ
PHÂN
TRANG
(Paging)
- RAM được chia thành các frame.
- Bộ nhớ luận lý (không gian địa chỉ luận lý) là tập địa chỉ luận lý
mà một process bất kì sinh ra được chia thành các page

- Bảng phân trang (pagetable) ánh xạ địa chỉ luận lí th
ành
địa chỉ thực

A Chuyển đổi địa chỉ trong PAGING

Nhìn vào hình vẽ ta có:
Địa chỉ luận lí bao gồm :
- p: là số hiệu trang (page number)
- d: Địa chỉ tương đối trong trang (Page offset)
Nếu kích thước của Không gian địa chỉ ảo là 2
m
và kích thước của mỗi
trang là 2
n
thì ta sẽ có được tổng cộng là 2
m-n
trang. Tức là lúc đó ta cũng sẻ
có được một Page Table có chừng ấy số trang.

B Cài đặt bảng trang
Bảng phân trang được lưu trữ ở trong bộ nhớ chính.
- Ứng với 1 process sẽ có 1 bảng phân trang.
- Thanh ghi Page-Table base (PTBR) trỏ đến bảng phân trang.
- Thanh ghi Page- Table Length (PTLR) biểu thị kích thước của bảng


phân trang



Dễ dàng thấy được sau khi có địa chỉ logic PTBR sẽ trỏ đến page trong
page table và kết hợp với page offset để cho ra địa chỉ vật lý

C EAT(Effective Acess Time)
- Thời gian tìm kiếm (lookup) trong TLB là : 
- Thời gian 1 chu trình truy xuất bộ nhớ (memory acess) là: x
- Hit ratio: tỉ số giữa số lần chỉ số trang được tìm thấy trong TLB
với số lần truy xuất khởi nguồn từ CPU (kí hiệu )
- Khi chỉ số trang có trong TLB (hit) : +x
- Khi chỉ số trang không có tỏng TLB (miss): +x+x
EAT= ( + x) + ( + 2x)(1 – ) =(2 – )x + 
Trong đó:
( + x) : là tích của Hitraito với thời gian khi chỉ số trang có trong TLB.
( + 2x)(1 – ) : là tích của thời gian khi chỉ số trang không có trong TLB
với 1-Hitraito.
Ví dụ: đơn vị tính bằng nano giây
- Look up: 190;
- Memory access 15;
- Hitraito:0.8
Lúc đó EAT = (190+15)*0.8 +(15x2+190)*(1-0.8)=208

D Bảng Trang Đa Cấp
- Bao gồm bảng trang cấp 1 và bảng trang cấp 2.
- Bảng trang cấp 1 (outer-page table)chứa các địa chỉ
của bảng trang cấp 2.
-
Bảng trang cấp 2 (page table) là tập hợp các page )


-


E. Bảo vệ bộ nhớ

- Gắn frame (khung trang) với các bit bảo vệ được giữ trong bảng
phân trang.
- Các bit này biểu thị các thuộc tính: read-only, read-write, execute-
only
- Ngoài ra còn có một valid/invalid bit gắn với mỗi entry (mục) trong
bảng phân trang.

Nhận xét:Cơ chế phân trang làm không gian địa chỉ ảo tách biệt hoàn
toàn với không gian bộ nhớ thức. nghĩa là phải thực hiện phép ánh xạ.

VIII.
PHÂN ĐOẠN
(Segmentation)
- Thực tế cho thấy, dưới con mắt của người dùng, chương trình được
chia thành các đoạn. Mỗi đoạn (segment) là một đơn vị luận lí của
chương trình.
- Thông thường khi 1 chương trình được biên dịch. Trình biên dịch sẽ
tự động xây dựng các segment. Sau đó trình loader sẽ gán mỗi
segment một số định danh riêng

1.

Cơ chế phân đoạn:


- Không gian địa chỉ ảo là một tập các segment, mỗi đoạn có tên và
kích thước riêng.

- Địa chỉ luận lý: được định vị bằng tên và độ dời bên trong đoạn đó
(tương tự như paging)

2. Cài đặt phân đoạn (Segment Hardware):
- Địa chỉ luận lý là một cặp giá trị (segment number, offset).
- Bảng phân đoạn (segment table) chứa:
 Base: chứa địa chỉ khởi đầu của segment trong bộ
nhớ
 Limit: xác định kích thước segment.
- STBR (Segment table base Register): Thanh ghi trỏ đến vị trí bảng
phân đoạn trong bộ nhớ.
- STLR (Segment table Length Register): Thanh ghi mô tả số lượng
segment của 1 chương trình

Vd:
Segment 1: có địa chỉ thưc trong bộ nhớ vật lý là 6300 và độ dài 400.
Segment 2: có địa chỉ thực trong BNVL là 4300 và kính thước 1100.

PHẦN CỨNG THAM GIA HỖ TRỢ PHÂN ĐOẠN(NGƯỢC LẠI VỚI
PAGING)




Chia sẻ các đoạn tương tự như chia sẻ trang: dùng chung cùng 1 data
nào đó để tiết kiệm bộ nhớ
IX. KẾT HỢP
PHÂN
TRANG VÀ
PHÂN ĐOẠN

- Mục đích: giải quyết được những khuyết điểm, phát huy ưu điểm
của cả hai hình thức.
Vấn đề của phân đoạn: Nếu một đoạn quá lớn thì nó có thể không nạp
đươc vào bộ nhớ
- Ý tưởng: chia đoạn thành các page, khi đó ta chỉ cần giữ trong bộ
nhớ các page của đoạn hiện đang cần
-

Hình vẽ cho chúng ta thấy giả sử s= 5,p=4,d=234
S=5 => STBR sẽ trỏ đến bảng phân đoạn đến seg thứ 5. Trong đó có
địa chỉ thực và giới hạn
Như đã nói, mỗi seg được chia ra thành các trang. Muốn truy cập


trang p=4 ta phải xác định được vị trí của page đó (bằng cách sử
dụng PTBR).
Sau đó kết hợp với d=234 (page offset) ta sẽ được vị trí chính xác
của nó trong bộ nhớ vật lý

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×