Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ - Đỗ Quốc Huy

Hệ Điều Hành  
(Nguyên lý các hệ điều hành)  
Đỗ Quốc Huy  
Bộ môn Khoa Học Máy Tính  
Viện Công Nghệ Thông Tin và Truyền Thông  
Chương 3 Quản lý bộ nhớ  
l Mục đích của hệ thống máy tính: thực hiện chương trình  
l Chương trình và dữ liệu (toàn bộ hoặc một phần) phải nằm trong bộ  
nhớ chính trong khi thực hiện  
l Byte tích cực:Những byte nội dung đang được thực hiện tại thời  
điểm quan sát  
l Phần chương trình chưa đưa vào bộ nhớ chính được lưu trên bộ nhớ  
thứ cấp (VD: đĩa cứng)Bộ nhớ ảo  
l Cho phép lập trình viên không lo lắng về giới hạn bộ nhớ vật lý  
l Để s/d CPU hiệu quả và tăng tốc độ đáp ứng của hệ thống:  
l Cần luân chuyển CPU thường xuyên giữa các tiến trình  
Điều phối CPU (Phần 3- Chương 2)  
l Cần nhiều tiến trình sẵn sàng trong bộ nhớ  
l Hệ số song song của hệ thống: Số tiến trình đồng thời tồn tại trong  
hệ thống  
l Tồn tại nhiều chiến lược quản lý bộ nhớ khác nhau  
l Nhiều chiến lược đòi hỏi trợ giúp từ phần cứng  
l Thiết kế phần cứng có thể được tích hợp chặt chẽ với HDH  
Chương 3 Quản lý bộ nhớ  
Tổng quan  
Các chiến lược quản lý bộ nhớ  
Bộ nhớ ảo  
Quản lý bộ nhớ trong VXL họ Intel  
Chương 3 Quản lý bộ nhớ  
1. Tổng quan  
lVí dụ  
lBộ nhớ và chương trình  
lLiên kết địa chỉ  
lCác cấu trúc chương trình  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.1 Ví dụ  
Quá trình biên dịch file C  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.1 Ví dụ  
Quá trình biên dịch file C  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.1 Ví dụ  
Quá trình biên dịch file C  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.1 Ví dụ  
Quá trình biên dịch file C  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.1 Ví dụ  
Quá trình biên dịch file C  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.1 Ví dụ  
Ví dụ : Tạo chương trình thực thi từ nhiều modul  
Toto project  
file main.c  
file M1.c  
#include <stdio.h>  
int y = 10;  
extern int x, y;  
extern void toto();  
int main(int argc, char *argv[]){  
toto();  
file M2.c  
int x;  
extern int y;  
void toto(){  
x = 10 * y;  
}
printf("KQ: %d \n",x * y);  
return 0;  
}
Kết quả  
KQ: 1000  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.1 Ví dụ  
Quá trình biên dịch toto project  
Thư viện  
Header  
[printf]  
[y10]  
int y=10;  
[y10]  
[x]  
M1.c  
M1.o  
extern int x,y;  
extern void toto();  
int main(){  
toto()  
x
y
[printf]  
-
-
Compiler  
Link  
(tcc -c)  
(tlink)  
toto  
printf  
[toto]  
printf()  
x
y
}
main.o  
main.c  
toto  
printf  
x
y
int x;  
extern int y;  
toto()  
[x]  
y
[toto]  
M2.o  
M2.c  
toto.exe  
Chương 3 Quản lý bộ nhớ  
1. Tổng quan  
lVí dụ  
lBộ nhớ và chương trình  
lLiên kết địa chỉ  
lCác cấu trúc chương trình  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.2 Bộ nhớ và chương trình  
Phân cấp bộ nhớ  
l Bộ nhớ là tài nguyên quan trọng của hệ thống  
l Chương trình phải nằm trong bộ nhớ trong để thực hiện  
l Bộ nhớ được đặc trưng bởi kích thước và tốc độ truy nhập  
l Bộ nhớ được phân cấp theo tốc độ truy nhập  
Tốc độ  
Loại bộ nhớ  
Kích thước  
Thanh ghi (Registers) bytes  
Tốc độ CPU(ηs) 10  
Cache trên VXL  
Cache mức 2  
Bộ nhớ chính  
Bộ nhớ lưu trữ (Disk)  
Băng từ, đĩa quang  
Kilo Bytes  
nano seconds  
100 nanoseconds e  
Micro-seconds  
Mili-Seconds 10  
Seconds  
KiloByte-MegaByte  
MegaByte-GigaByte  
GigaByte-Terabytes  
Không giới hạn  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.2 Bộ nhớ và chương trình  
Bộ nhớ chính  
00000  
00001  
Memory  
l Dùng lưu trữ dữ liệu và chương trình  
l Là mảng các ô nhớ kiểu bytes, words  
l Mỗi ô nhớ có một địa chỉ riêng  
FFFFE  
FFFFF  
l Địa chỉ vật lý: địa chỉ x/hiện ở chân VXL  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.2 Bộ nhớ và chương trình  
Chương trình  
l Tồn tại trên thiết bị lưu trữ ngoài  
l Là các file nhị phân thực thi được  
l Vùng tham số file  
l Lệnh máy (mã nhị phân),  
l Vùng dữ liệu (biến toàn cục), . .  
l Phải được đưa vào bộ nhớ trong và  
được đặt trong một tiến trình để  
thực hiện (tiến trình thực hiện  
chương trình)  
l Hàng đợi vào (input queue)  
l Tập các tiến trình ở bộ nhớ  
ngoài (thông thường: disk)  
l Đợi để được đưa vào bộ nhớ  
trong và thực hiên  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.2 Bộ nhớ và chương trình  
Thực hiện chương trình  
l Nạp chương trình vào bộ nhớ  
l Đọc và phân tích (dịch) file thực thi (VD file *.com, file *.exe)  
l Xin vùng nhớ để nạp chương trình từ file trên đĩa  
l Thiết lập các tham số, các thanh ghi tới giá trị thích hợp  
l Thực thi chương trình  
l CPU lấy các lệnh trong bộ nhớ tại vị trí được xác định bởi bộ đếm  
chương trình (Program counter)  
l Cặp thanh ghi CS:IP với VXL họ Intel (Ví dụ : 80x86)  
l CPU giải mã lệnh  
l Có thể lấy thêm toán hạng từ bộ nhớ  
l Thực hiện lệnh với toán hạng  
l Nếu cần thiết, lưu kết quả vào bộ nhớ tại một địa chỉ xác định  
l Thực hiện xong  
l Giải phóng vùng không gian nhớ dành cho chương trình  
l Vấn đề  
l Chương trình có thể được nạp vào vị trí bất kỳ trong bộ nhớ  
l Khi thực hiện chương trình sinh ra chuỗi địa chỉ bộ nhớ  
l Truy nhập địa chỉ bộ nhớ như thế nào?  
Chương 3 Quản lý bộ nhớ  
1. Tổng quan  
lVí dụ  
lBộ nhớ và chương trình  
lLiên kết địa chỉ  
lCác cấu trúc chương trình  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.3 Liên kết địa chỉ  
Các bước xử lý chương trình ứng dụng  
Chương trình  
nguồn  
Các modul đối  
tượng khác  
Thư viện hệ  
thống được  
nạp động  
Liên  
kết  
Modul  
đối tượng  
Dịch  
Chương trình  
trong bộ nhớ  
Modul  
thực hiện  
Nạp  
Thư viện  
hệ thống  
Bộ nhớ trong  
20 /
 
96  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.3 Liên kết địa chỉ  
Các kiểu địa chỉ  
l Địa chỉ biểu tượng (symbolic)  
l Là tên của đối tượng trong chương trình nguồn  
l Ví d: counter, x, y,...  
l Địa chỉ tương đối  
l Sinh ra từ địa chỉ biểu tượng trong giai đoạn dịch (compiler)  
l Là vị trí tương đối của đối tượng kể từ đầu modul  
l Byte thứ 10 kể từ đầu modul  
l EB08 JMP +08: Nhảy tới vị trí cách vị trí hiện tại 8 ô  
l Địa chỉ tuyệt đối  
l Sinh ra từ địa chỉ tương đối trong giai đoạn nạp chương trình thực thi vào bộ  
nhớ để thực hiện  
l Với PC: địa chỉ tương đối <Seg :Ofs>Seg * 16+Ofs  
l Là địa chỉ của đối tượng trong bộ nhớ vật lý-địa chỉ vật lý  
l Ví d: JMP 010ANhảy tới ô nhớ có vị trí 010Ah tại cùng đoạn mã lệnh  
(CS)  
l Nếu CS=1555h, sẽ đi tới vị trí: 1555h*10h+010Ah =1560Ah  
Chương 3: Quản lý bộ nhớ  
1. Tng quan  
1.3 Liên kết địa chỉ  
Xác định địa chỉ  
Xác định địa chỉ câu lệnh và dữ liệu trong bộ nhớ có thể thực hiện tại các  
giai đoạn khác nhau khi xử lý chương trình ứng dng  
l Giai đoạn dịch:  
l Sử dụng khi biết chương trình sẽ nằm ở đâu trong bộ nhớ  
l Khi dịch sẽ sinh ra mã (địa chỉ) tuyệt đối  
l Phải dịch lại khi vị trí bắt đầu thay đổi  
l Thời điểm nạp:  
l Sử dụng khi không biết c/trình sẽ nằm ở đâu trong bộ nhớ  
l Các đối tượng được dịch ra sẽ mang địa chỉ tương đối  
l Xác định địa chỉ được hoãn lại tới khi khi nạp chương trình vào bộ nhớ  
l Trong khi thực hiện:  
l S/dụng khi các tiến trình có thể thay đổi vị trí trong khi t/hiện  
l Xác định địa chỉ được hoãn lại tới khi thực thi chương trình  
l Thường đòi hỏi trợ giúp từ phần cứng  
l Được sử dụng trong nhiều hệ điều hành  
Tải về để xem bản đầy đủ
pdf 137 trang Thùy Anh 27/04/2022 6540
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 3: Quản lý bộ nhớ - Đỗ Quốc Huy", để 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_3_quan_ly_bo_nho_do_quoc_huy.pdf