Bài giảng Hệ điều hành - Chương 7: Quản lý bộ nhớ (Phần 1) - Trần Thị Như Nguyệt

Chương 7: Quản lý bộ nhớ - 1  
Câu hỏi ôn tập chương 6  
Nêu điều kiện để thực hiện giải thuật Banker?  
Nêu các bước của giải thuật Banker?  
Nêu các bước của giải thuật yêu cầu tài nguyên?  
Nêu các bước giải thuật phát hiện deadlock?  
Khi deadlock xảy ra, hệ điều hành làm gì để phục  
hồi?  
Dựa trên yếu tổ nào để chấm dứt quá trình bị  
deadlock?  
Quản lý bộ nhớ  
2
Câu hỏi ôn tập chương 6 (tt)  
Cho 1 hệ thống có 4 tiến trình P1 đến P4 và 3 loại tài  
nguyên R1 (3), R2 (2) R3 (2). P1 giữ 1 R1 và yêu cầu  
1 R2; P2 giữ 2 R2 và yêu cầu 1 R1 và 1 R3; P3 giữ 1  
R1 và yêu cầu 1 R2; P4 giữ 2 R3 và yêu cầu 1 R1  
Vẽ đồ thị tài nguyên cho hệ thống này?  
Deadlo
Chuỗi an toàn? (nếu có)  
Quản lý bộ nhớ  
3
Câu hỏi ôn tập chương 6 (tt)  
Tìm Need?  
Hệ thống có an toàn không?  
Nếu P1 yêu cầu (0,4,2,0) thì có thể cấp phát  
cho nó ngay không?  
Quản lý bộ nhớ  
4
Mục tiêu  
Hiểu được các khái niệm cơ sở về bộ nhớ  
Hiểu được các kiểu địa chỉ nhớ và cách chuyển đổi  
giữa các kiểu này  
Hiểu được các cơ chế và mô hình quản lý bộ nhớ  
Quản lý bộ nhớ  
5
Nội dung  
Khái niệm cơ sở  
Các kiểu địa chỉ nhớ  
Chuyển đổi địa chnhớ  
Overlay và swapping  
Mô hình quản lý bộ nhớ  
Quản lý bộ nhớ  
6
Nội dung  
Khái niệm cơ sở  
Các kiểu địa chỉ nhớ  
Chuyển đổi địa chnhớ  
Overlay và swapping  
Mô hình quản lý bộ nhớ  
Quản lý bộ nhớ  
7
Khái niệm cơ sở  
Chương trꢀnh phải được mang vꢁo trong bộ nhớ vꢁ  
đꢂt nꢃ trong một tiến trꢀnh để được xꢄ lꢅ  
Input Queue – Một tập hợp của những tiến trꢀnh  
trên đꢆa mꢁ đang chꢇ để được mang vꢁo trong bộ  
nhớ để thực thi.  
User programs trải qua nhiều bước trước khi được  
xꢄ lꢅ (compiler – Linking – Loader – Exe)  
Quản lý bộ nhớ  
8
Khái niệm cơ sở (tt)  
Quản lꢅ bộ nhớ lꢁ công việc của hệ điều hꢁnh với  
sự hꢈ trợ của phần cứng nhꢉm phân phꢊi, sꢋp xếp  
cꢌc process trong bộ nhớ sao cho hiệu quả.  
Mục tiêu cần đꢍt được lꢁ nꢍp cꢁng nhiều process  
vꢁo bộ nhớ cꢁng tꢊt (gia tăng mức độ đa chương)  
Trong hầu hết cꢌc hệ thꢊng, kernel sꢎ chiếm một  
phần cꢊ định của bộ nhớ; phần cꢏn lꢍi phân phꢊi  
cho cꢌc process.  
Quản lý bộ nhớ  
9
Khái niệm cơ sở (tt)  
Cꢌc yêu cầu đꢊi với việc quản lꢅ bộ nhớ  
Cấp phꢌt bộ nhớ cho cꢌc process  
Tꢌi định vị (relocation): khi swapping,…  
Bảo vệ: hớ cꢃ hợp lệ  
không  
Chia sꢐ: cho phꢑp cꢌc process chia sꢐ vꢒng nhớ  
chung  
Kết gꢌn đa chnhớ luận lꢅ của user vꢁo địa chỉ  
thực  
Quản lý bộ nhớ  
10  
Nội dung  
Khái niệm cơ sở  
Các kiểu địa chỉ nhớ  
Chuyển đổi địa chnhớ  
Overlay và swapping  
Mô hình quản lý bộ nhớ  
Quản lý bộ nhớ  
11  
Các kiểu địa chỉ nhớ  
Địa chꢀ vꢁt lꢂ (physical address) (địa chꢀ thꢃc) lꢄ mꢅt vị trꢆ thꢃc  
trong bꢅ nhꢇ chꢆnh  
Địa chꢀ luꢁn lꢂ (logical address) lꢄ mꢅt vị trꢆ nhꢇ đưꢈc diꢉn tꢊ  
trong mꢅt chương trꢋnh (cꢌn gꢍi lꢄ địa chꢀ ꢊo virtual address).  
Cꢎc trꢋnh biên dịch (compiler) tạo ra mꢏ lệnh chương trꢋnh mꢄ trong  
đꢐ mꢍi tham chiếu bꢅ nhꢇ đꢑu lꢄ địa chꢀ luꢁn lꢂ  
Địa chꢀ tương đối (relative address) (địa chꢀ khꢊ tꢎi định vị,  
relocatable address) lꢄ mꢅt kiꢒu địa chꢀ luꢁn lꢂ trong đꢐ cꢎc địa chꢀ  
đưꢈc biꢒu diꢉn tương đối so vꢇi mꢅt vị trꢆ xꢎc định nꢄo đꢐ trong  
chương trꢋnh.  
Vꢆ dꢓ: 12 byte so vꢇi vị trꢆ bꢔt đầu chương trꢋnh,…  
Địa chꢀ tuyệt đối (absolute address): địa chꢀ tương đương vꢇi địa chꢀ  
thꢃc.  
Quản lý bộ nhớ  
12  
Nạp chương trình vào bộ nhớ  
Bꢅ linker: kết hꢈp cꢎc object module thꢄnh mꢅt file nhị phân khꢊ  
thꢃc thi gꢍi lꢄ load module.  
Bꢅ loader: nạp load module vꢄo bꢅ nhꢇ chꢆnh  
Quản lý bộ nhớ  
13  
Cơ chế thực hiện linking  
0
0
Module A  
CALL B  
Module A  
relocatable  
object modules  
JMP “L”  
length L  
Return  
Return  
L 1  
L 1  
L
Module B  
0
Module B  
CALL C  
JMP “L+M”  
load module  
length M  
length N  
L M 1 Return  
L M Module C  
Return  
M 1  
0
Module C  
L M N 1  
Return  
Return  
N 1  
Quản lý bộ nhớ  
14  
Cꢎc bưꢇc nạp chương trꢋnh vꢄo bꢅ nhꢇ  
ABBOTT.C  
COSTELLO.C  
int idunno;  
...  
“SOURCE  
CODE”  
...  
int whosonfirst (int x)  
{
...  
}
whosonfirst(idunno);  
...  
Khi mỗi file đưꢈc biên  
dịch, cꢎc địa chꢀ chưa  
biết, vì thế các cờ  
đưꢈc dùng đꢒ đꢎnh  
dấu  
Compiler  
Compiler  
ABBOTT.OBJ  
COSTELLO.OBJ  
...  
...  
“OBJECT  
CODE”  
MO
CALL whosonfirst  
...  
whosonfirst:  
...  
Trình linker kết nối  
các files, vì thế nó có  
thꢒ thay thế các chỗ  
đꢎnh dấu vꢇi địa chꢀ  
thꢁt  
Memory  
Linker  
HAHAHA.EXE  
H
...  
MOVE R1, 2388  
CALL 1547  
...  
...  
MOVE R1, R5  
...  
(value of idunno)  
...  
MOVE R1, 22388  
CALL 21547  
Loader/  
locator  
...  
...  
MOVE R1, R5  
...  
(value of idunno))  
Phꢊi xꢎc định địa 21547  
chꢀ bꢅ nhꢇ bꢔt đầu22388  
đꢒ thꢃc thi  
1547  
2388  
Nội dung  
Khái niệm cơ sở  
Các kiểu địa chỉ nhớ  
Chuyển đổđa chnhớ  
Overlay và swapping  
Mô hình quản lý bộ nhớ  
Quản lý bộ nhớ  
16  
Chuyển đổi địa chỉ  
Chuyꢒn đổi địa chꢀ: 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.  
Biꢒu diꢉn địa chꢀ nhꢇ  
Trong source code: symbolic (cꢎc biến, hằng, pointer,…)  
Trong thời điꢒm biên dịch: thường lꢄ địa chꢀ khꢊ tꢎi định vị  
Vꢆ dꢓ: a ở vị trꢆ 12 byte so vꢇi vị trꢆ bꢔt đầu module  
Thời điꢒm liking/loading: cꢐ thꢒ lꢄ địa chꢀ thꢃc.  
Vꢆ dꢓ: dữ liệu nằm tại địa chꢀ bꢅ nhꢇ thꢃc 2030  
2000  
0
int i;  
goto p1;  
p1  
2250  
250  
symbolic address  
relocatable address  
physical memory  
Quản lý bộ nhớ  
17  
Chuyển đổi địa chỉ (tt)  
Địa chꢀ lệnh vꢄ dữ liệu đưꢈc chuyꢒn đổi thꢄnh địa chꢀ thꢃc cꢐ thꢒ  
xꢊy ra tại ba thời điꢒm khꢎc nhau.  
Compile time: nếu biết trưꢇc địa chꢀ bꢅ nhꢇ của chương trꢋnh thꢋ cꢐ  
thꢒ kết gꢎn địa chꢀ tuyệt đối lúc biên dịch  
Vꢆ dꢓ: chương trꢋnh .COM của MS-DOS  
Khuyết điꢒm: phꢊi biên dịch lại nếu thay đổi địa chꢀ nạp chương  
trình  
Load time: vꢄo thời điꢒm loading, loader phꢊi chuyꢒn đổi địa chꢀ  
khꢊ tꢎi định vị thꢄnh địa chꢀ thꢃc dꢃa trên mꢅt địa chꢀ nꢑn  
Địa chꢀ thꢃc đưꢈc tꢆnh toꢎn vꢄo thời điꢒm nạp chương trꢋnh  
phꢊi tiến hꢄnh reload nếu địa chꢀ nꢑn thay đổi  
Quản lý bộ nhớ  
18  
Sinh địa chỉ tuyệt đối vào thời điểm dịch  
Symbolic  
addresses  
Absolute  
addresses  
Physical memory  
addresses  
1024  
1024  
PROGRAM  
JUMP i  
JUMP 1424  
LOAD 2224  
JUMP 1424  
LOAD 2224  
i
j
424  
LOAD j  
DATA  
Link/Load  
Compile  
2224  
2224  
Source code  
Absolute load module  
Process image  
Quản lý bộ nhớ  
19  
Sinh địa chỉ tuyệt đối vào thời điểm nạp  
Relative  
(relocatable)  
addresses  
Symbolic  
addresses  
Physical memory  
addresses  
PROGRAM  
0
1024  
JUMP i  
JUMP 400  
JUMP 1424  
1424  
i
j
LOAD j  
DATA  
LOAD 1200  
LOAD 2224  
Compile  
Link/Load  
1200  
2224  
Relative  
load module  
Source code  
Process image  
Quản lý bộ nhớ  
20  
Tải về để xem bản đầy đủ
pdf 42 trang yennguyen 19100 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Chương 7: Quản lý bộ nhớ (Phần 1) - Trần Thị Như Nguyệt", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_he_dieu_hanh_chuong_7_quan_ly_bo_nho_phan_1_tran_t.pdf