Bài giảng Nguyên lý hệ điều hành (handout): Chương 3 trang bị cho người học những kiến thức về quản lý bộ nhớ trong hệ điều hành như: Tổng quan, các chiến lược quản lý bộ nhớ, Bộ nhớ ảo, Quản lý bộ nhớ trong vi xử lý họ Intel.
Hệ điều hành Notes NGUYÊN LÝ HỆ ĐIỀU HÀNH Phạm Đăng Hải haipd@soict.hust.edu.vn Bộ mơn Khoa học Máy tính Viện Công nghệ Thông tin & Truyền Thông Ngày 14 tháng năm 2020 c om / 98 an co Notes ng Chương 3: Quản lý nhớ du on g th Chương Quản lý nhớ cu u / 98 Chương 3: Quản lý nhớ Notes Giới thiệu Mục đích hệ thống máy tính: thực chương trình Chương trình liệu (tồn phần) phải nằm nhớ thực Byte tích cực:Những byte nội dung thực thời điểm quan sát: Phần chương trình chưa đưa vào nhớ lưu nhớ thứ cấp (VD: đĩa cứng )⇒ Bộ nhớ ảo Cho phép lập trình viên khơng lo lắng giới hạn nhớ vật lý Để s/d CPU hiệu tăng tốc độ đáp ứng hệ thống: Cần luân chuyển CPU thường xuyên tiến trình Điều phối CPU (Phần 3- Chương ) Cần nhiều tiến trình sẵn sàng nhớ Hệ số song song hệ thống: Số tiến trình đồng thời tồn hệ thống Tồn nhiều sơ đồ quản lý nhớ khác Nhiều sơ đồ đòi hỏi trợ giúp từ phần cứng Thiết kế phần cứng tích hợp chặt chẽ với HDH / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Notes Nội dung Tổng quan Các chiến lược quản lý nhớ Bộ nhớ ảo Quản lý nhớ VXL họ Intel Chương 3: Quản lý nhớ Tổng quan Notes co Nội dung ng c om / 98 Tổng quan Các chiến lược quản lý nhớ Bộ nhớ ảo Quản lý nhớ VXL họ Intel du on g th an cu u / 98 Chương 3: Quản lý nhớ Tổng quan 1.1 Ví dụ Notes Tổng quan Ví dụ Bộ nhớ chương trình Liên kết địa Các cấu trúc chương trình / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Tổng quan 1.1 Ví dụ Notes Demo: Chu lệnh Tạo file thực thi dùng ngôn ngữ máy Tạo file thực thi từ nhiều modul Chương 3: Quản lý nhớ Tổng quan 1.1 Ví dụ Notes an g du on int main(int argc, char *argv[]){ int i; FILE * f = fopen("Toto.com","w+"); for(i= 0; i < 19;i++) fprintf(f,"%c",buf[i]); fclose(f); return 0; } th #include char buf[19]={ 0xEB,0x08,0x48,0x65,0x6C, 0x6C,0x6F,0x21,0x24,0x90, 0xB4,0x09,0xBA,0x02,0x01,0xCD,0x21,0xCD,0x20}; co Ví dụ 1: Tạo chương trình thực thi dùng ngôn ngữ máy ng c om / 98 cu u / 98 Chương 3: Quản lý nhớ Tổng quan 1.1 Ví dụ Notes Ví dụ 1: Kết File toto.com có kích thước 19 bytes Nội dung câu lệnh chương trình thực thi toto.com? / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Tổng quan 1.1 Ví dụ Notes Ví dụ 1: Nội dung file Dùng debug xem nội dung file dịch ngược hợp ngữ Chương 3: Quản lý nhớ Tổng quan 1.1 Ví dụ Notes B4 09 BA 02 01 CD 21 CD 20 CS:0000 PSP: Program Hello! Segment Prefix terminated CS:0100 JMP 010A ⇐CS:IP CS:0102 ’Hello!$’ CS:0109 NOP CS:010A MOV AH, ⇐CS:IP CS:010C MOV DX, 0102 ⇐CS:IP CS:010F INT 21 ⇐CS:IP CS:0111 INT 20 ⇐CS:IP CS:0113 Khi thực hiện, nạp toto.com vào nhớ địa CS:0100 on g th Dịch ngược JMP 010A DB ’Hello!$’ NOP MOV AH, MOV DX, 0102 INT 21 INT 20 an Nội dung file Toto.com (19 bytes) EB 08 48 65 6C 6C 6F 21 24 90 co Ví dụ 1: Thực file toto.com ng c om 10 / 98 du cu u 11 / 98 Các ghi đoạn CS, ES, DS,SS trỏ tới PSP Thanh ghi IP có giá trị 100 (CS:IP trỏ đến lệnh đầu tiên) SP trỏ tới cuối đoạn; Các ghi thông dụng bị xóa (0) Chương 3: Quản lý nhớ Tổng quan 1.1 Ví dụ Notes Ví dụ 2: Tạo file thực thi từ nhiều modul Toto project file main.c #include extern int x, y; extern void toto(); int main(int argc, char *argv[]){ toto(); printf("KQ: %d \n",x * y); return 0; } file M1.c int y = 10; file M2.c int x; extern int y; void toto(){ x = 10 * y; } Ket qua KQ: 1000 12 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Tổng quan 1.1 Ví dụ Notes Ví dụ 2: Q trình xử lý toto project Thư viện Header [printf] int y=10; [y←10] [x] [y←10] M1.c M1.o extern int x,y; extern void toto(); int main(){ toto() printf() } x y Compiler [printf] [toto] x y Link toto printf (tcc -c) (tlink) main.o main.c toto printf x y C:\>tcc - c -I\Tc\Include main.c m1.c m2.c M2.c M2.o toto.exe C:\>tlink \Tc\Lib\c0s +m1+m2+main, main.exe , , \Tc\Lib\cs.lib 13 / 98 [x] y [toto] Chương 3: Quản lý nhớ Tổng quan 1.2 Bộ nhớ chương trình co th an Tổng quan Ví dụ Bộ nhớ chương trình Liên kết địa Các cấu trúc chương trình du on g Notes ng c om int x; extern int y; toto() cu u 14 / 98 Chương 3: Quản lý nhớ Tổng quan 1.2 Bộ nhớ chương trình Notes Phân cấp nhớ Bộ nhớ tài nguyên quan trọng hệ thống Chương trình phải nằm nhớ để thực Bộ nhớ đặc trưng kích thước tốc độ truy nhập Bộ nhớ phân cấp theo tốc độ truy nhập Loại nhớ Kích thước Thanh ghi (Registers) Cache VXL Cache mức Bộ nhớ Bộ nhớ lưu trữ (Disk) Băng từ, đĩa quang bytes Kilo Bytes KiloByte-MegaByte MegaByte-GigaByte GigaByte-Terabytes Không giới hạn Tốc độ Tốc độ CPU(ηs) 10 nano seconds 100 nanoseconds Micro-seconds Mili-Seconds 10 Seconds 15 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Tổng quan 1.2 Bộ nhớ chương trình Notes Bộ nhớ 00000 00001 Memory Dùng lưu trữ liệu chương trình Là mảng nhớ kiểu bytes, words Mỗi ô nhớ có địa riêng FFFFE FFFFF Địa vật lý: địa x/hiện chân VXL Chương 3: Quản lý nhớ Tổng quan 1.2 Bộ nhớ chương trình Notes co Chương trình th an Tồn thiết bị lưu trữ Là file nhị phân thực thi Vùng tham số file Lệnh máy (mã nhị phân), Vùng liệu (biến toàn cục), ng c om 16 / 98 on g Phải đưa vào nhớ đặt tiến trình để thực (tiến trình thực chương trình) Hàng đợi vào (input queue) du Tập tiến trình nhớ ngồi (thơng thường disk) Đợi để đưa vào nhớ thực hiên cu u 17 / 98 Chương 3: Quản lý nhớ Tổng quan 1.2 Bộ nhớ chương trình Notes Thực chương trình Nạp chương trình vào nhớ Đọc phân tích (dịch) file thực thi (VD file *.com, file *.exe) Xin vùng nhớ để nạp chương trình từ file đĩa Thiết lập tham số, ghi tới giá trị thích hợp Thực thi chương trình CPU lấy lệnh nhớ vị trí xác định đếm chương trình (Program counter ) Cặp ghi CS:IP với VXL họ Intel (Ví dụ : 80x86 ) CPU giải mã lệnh Có thể lấy thêm tốn hạng từ nhớ Thực lệnh với toán hạng Nếu cần thiết, lưu kết vào nhớ địa xác định Thực xong Giải phóng vùng khơng gian nhớ dành cho chương trình Vấn đề Chương trình nạp vào vị trí nhớ Khi thực chương trình sinh chuỗi địa nhớ Truy nhập địa nhớ nào? 18 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Tổng quan 1.3 Liên kết địa Notes Tổng quan Ví dụ Bộ nhớ chương trình Liên kết địa Các cấu trúc chương trình Chương 3: Quản lý nhớ Tổng quan 1.3 Liên kết địa Notes Nạp th Modul thực g Liên kết Chương trình nhớ on Modul đối tượng Thư viện hệ thống nạp động Liên kết động Dịch Các modul đối tượng khác an Chương trình nguồn co Các bước xử lý chương trình ứng dụng ng c om 19 / 98 du Thư viện hệ thống Bộ nhớ cu u 20 / 98 Chương 3: Quản lý nhớ Tổng quan 1.3 Liên kết địa Notes Các kiểu địa Địa biểu tượng (symbolic) Là tên đối tượng chương trình nguồn Ví du: counter, x, y, Địa tương đối Sinh từ địa biểu tượng giai đoạn dịch (compiler ) Là vị trí tương đối đối tượng kể từ đầu modul Byte thứ 10 kể từ đầu modul EB08 ⇒ JMP +08: Nhảy tới vị trí cách vị trí Địa tuyệt đối Sinh từ địa tương đối giai đoạn nạp chương trình thực thi vào nhớ để thực Với PC: địa tương đối → Seg * 16+Ofs Là địa đối tượng nhớ vật lý-địa vật lý Ví du: JMP 010A⇒ Nhảy tới nhớ có vị trí 010Ah đoạn mã lệnh (CS) Nếu CS=1555h, tới vị trí: 1555h*10h+010Ah =1560Ah 21 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Tổng quan 1.3 Liên kết địa Notes Xác định địa Xác định địa câu lệnh liệu nhớ thực giai đoạn khác xử lý chương trình ứng dung Giai đoạn dịch: Sử dụng biết chương trình nằm đâu nhớ Khi dịch sinh mã (địa ) tuyệt đối Phải dịch lại vị trí bắt đầu thay đổi Thời điểm nạp: Sử dụng khơng biết c/trình nằm đâu nhớ Các đối tượng dịch mang địa tương đối Xác định địa hỗn lại tới khi nạp chương trình vào nhớ Trong thực hiện: S/dụng tiến trình thay đổi vị trí t/hiện Xác định địa hoãn lại tới thực thi chương trình Thường địi hỏi trợ giúp từ phần cứng Được sử dụng nhiều hệ điều hành Chương 3: Quản lý nhớ Tổng quan 1.3 Liên kết địa Notes th an co Địa vật lý-địa logic ng c om 22 / 98 Địa logic (địa ảo) on g Được sinh tiến trình, (CPU đưa ra) Được khối quản lý nhớ (MMU) chuyển sang địa vật lý truy nhập tới đối tượng chương trình Địa vật lý du Địa phần tử (byte/word ) nhớ Tương ứng với địa logic CPU đưa Chương trình làm việc với địa logic cu u 23 / 98 Chương 3: Quản lý nhớ Tổng quan 1.4 Các cấu trúc chương trình Notes Tổng quan Ví dụ Bộ nhớ chương trình Liên kết địa Các cấu trúc chương trình 24 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Tổng quan 1.4 Các cấu trúc chương trình Notes Các cấu trúc chương trình Cấu trúc tuyến tính Cấu trúc nạp động Cấu trúc liên kết động Cấu truc Overlays Chương 3: Quản lý nhớ Tổng quan 1.4 Các cấu trúc chương trình Notes co Cấu trúc tuyến tính I ng c om 25 / 98 M1 Biên tập M0 M1 M2 M3 th M2 an M0 g M3 on Sau biên tập, modul tập hợp thành chương trình hồn thiện du Chứa đầy đủ thơng tin để thực Các biến trỏ thay giá trị cụ thể Để thực hiện, cần định vị lần nhớ cu u 26 / 98 Chương 3: Quản lý nhớ Tổng quan 1.4 Các cấu trúc chương trình Notes Cấu trúc tuyến tính II Ưu điểm Đơn giản, dễ tổ chức biên tập định vị chương trình Thời gian thực nhanh Tính lưu động cao Nhược điểm Lãng phí nhớ Khơng phải tồn chương trình cần thiết cho thực chương trình Khơng thực chương trình có kích thước lớn kích thước nhớ vật lý 27 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Tổng quan 1.4 Các cấu trúc chương trình Notes Cấu trúc nạp động Hệ điều hành M0 M0 M1 M1 M3 M2 M1 M2 M3 M2 Mỗi modul biên tập riêng Khi thực hiện, hệ thống định vị modul gốc Cần tới modul se xin nhớ giải nạp modul vào Khi sử dụng xong modul, thiếu vùng nhớ đưa modul không cần thiết Chương 3: Quản lý nhớ Tổng quan 1.4 Các cấu trúc chương trình Notes th Sai lầm dẫn tới lãng phí nhớ tăng thời gian thực Tốc độ thực chậm Yêu cầu người sử dụng phải nạp xóa modul du on g Người dùng phải nắm rõ hệ thống Giảm tính lưu động an Có thể sử dụng vùng nhớ nhiều phần dành cho chương trình Hiệu sử dụng nhớ cao quản lý tốt co Cấu trúc nạp động (tiếp) ng c om 28 / 98 cu u 29 / 98 Chương 3: Quản lý nhớ Tổng quan 1.4 Các cấu trúc chương trình Notes toto() Cấu trúc liên kết động (DLL:Dynamic-link library) Các liên kết hoãn lại thực chương trình M Một phần đoạn mã (stub) sử dụng để tìm kiếm thủ tục tương ứng thư viện nhớ Hữu ích cho xây dựng thư viện toto Khi tìm thấy, stub thay với địa thủ tục thực thủ tục Hệ điều hành toto() M 30 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.3 Chiến lược phân đoạn Notes Ví dụ HĐH Địa = ?4420 3545 6540 Lỗiđầu truy Đoạn bắt tạinhập! 3200 Không gian địa logic 1400 subroutine array Đoạn P/tử 345 Đoạn 3200 Đoạn main program Jmp data Đoạn stack Đoạn Đoạn 2400 Offset 345 3545 M 0 0 A SCB Đoạn Đoạn L 1000 400 400 1100 1000 Đoạn Đoạn 4300 4420 4700 5700 6300 6700 Bộ nhớ Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.3 Chiến lược phân đoạn Notes Chuyển đổi địa co Khi thực chương trình Bảng quản lý đoạn nạp vào nhớ STBR (Segment-table base register ): Vị trí SCB nhớ STLR (Segment-table length register ): Số phần tử SCB an Truy nhập tới địa logic < s, d > s ≥ STLR : Lỗi STBR + sxK : Vị trí phần tử s SCB Kiểm tra trường dấu hiệu M phần tử SCB s ng c om 55 / 98 th M = 0: Đoạn s chưa tồn nhớ ⇒ Lỗi truy nhập ⇒ Hệ điều hành phải nạp đoạn Xin vùng nhớ có kích thước ghi trường L Tìm modul tương ứng nhớ nạp định vị vào vùng nhớ xin Sửa lại trường địa A trường dấu hiệu M(M = 1) Truy nhập nhớ trường hợp không gặp lỗi truy nhập g 2 d ≥ Ls : Lỗi truy nhập (vượt kích thước đoạn) d + As : Địa vật lý cần tìm cu u 56 / 98 du M = :Đoạn s tồn nhớ on Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.3 Chiến lược phân đoạn Notes Chuyển đổi địa chỉ: Sơ đồ truy nhập 57 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.3 Chiến lược phân đoạn Notes Nhận xét: ưu điểm Sơ đồ nạp modul không cần tham gia người sử dụng Dễ dàng thực nhiệm vụ bảo vệ đoạn Kiểm tra lỗi truy nhập nhớ Địa khơng hợp lệ :vươt q kích thước đoạn Kiểm tra tính chất truy nhập Đoạn mã: đọc Viết vào đoạn mã: lỗi truy nhập Kiểm tra quyền truy nhập modul Thêm trường quyền truy nhập(user/system) vào SCB Cho phép sử dụng chung đoạn (VD Soạn thảo văn bản) Tiến trình S3 Data (Read only ) S0 sqrt() S0 Tiến trình Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.3 Chiến lược phân đoạn Notes co Dùng chung đoạn : Vấn đề ng c om 58 / 98 th Call (0, 120) ? Read (1, 245) ? an Đoạn dùng chung phải số hiệu SCB Giải cách truy nhập gián tiếp du on g JMP + 08 Thanh ghi đoạn chứa số hiệu đoạn (ES:BX) cu u 59 / 98 Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.3 Chiến lược phân đoạn Notes Nhận xét : Nhược điểm Hiệu sử dụng phụ thuộc vào cấu trúc chương trình Bị phân mảnh nhớ Phân phối vùng nhớ theo chiến lược first fit /best fit Cần phải bố trí lại nhớ (dịch chuyển, swapping ) Có thể dựa vào bảng SCB • M ← : Đoạn chưa nạp vào • Vùng nhớ xác định A L trả DS tự Vấn đề lựa chọn modul cần đưa • Đưa modul tồn lâu • Đưa modul có lần sử dụng cuối cách xa • Đưa modul có tần xuất sử dụng thấp ⇒Cần phương tiên ghi lại số lần thời điểm truy nhập đoạn Giải pháp: phân phối nhớ theo đoạn (page)? 60 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Các chiến lược quản lý nhớ Chiến lược phân chương cố định Chiến lược phân chương động Chiến lược phân đoạn Chiến lược phân trang Chiến lược kết hợp phân đoạn-phân trang Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Nguyên tắc co Bộ nhớ vật lý chia thành khối có kích thước nhau: trang vật lý (frames) th an Trang vật lý đánh số 0, 1, 2, : địa vật lý trang Trang dùng làm đơn vị phân phối nhớ Bộ nhớ logic (chương trình) chia thành trang có kích thước trang vật lý: trang logic (pages) Khi thực chương trình ng c om 61 / 98 g Nạp trang logic (từ nhớ ngoài) vào trang vật lý Xây dựng bảng quản lý trang (PCB: Page Control Block) dùng để xác định mối quan hệ trang vật lý trang logic Mỗi phần tử PCB ứng với trang chương trình Địa truy nhập chia thành on Cho biêt biết trang vật lý chứa trang logic tương ứng Ví dụ PCB[8] = ⇒ ? du Số hiệu trang (p) : Chỉ số PCB để tìm đ/chỉ sở trang Độ lệch trang (d): Kết hợp địa sở trang để tìm đ/chỉ vật lý cu u 62 / 98 Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Ví dụ a b Trang c d e f Trang g h i j Trang k l m n Trang p q 0 2 PCB ij Trang k m l n Trang p q Bộ nhớ logic Truy nhập địa logic [ ] ? Địa [ ]: Trang 1, độ lệch Địa = 6*4 + = 26 (624 ) a bc Trang e d fg Trang h Bộ nhớ vật lý 63 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Ghi Dung lượng trang lũy thừa Cho phép ghép số hiệu trang vật lý độ lệch trang Ví dụ: Bộ nhớ n bit, kích thước trang 2k số hiệu trang độ lệch n−k k Khơng cần thiết nạp tồn trang logic vào Số trang vật lý phụ thuộc k/thước nhớ, số trang logic tùy ý PCB cần trường dấu hiệu (Mark) cho biết trang nạp vào nhớ chưa M = Trang chưa tồn M = Trang đưa vào nhớ vật lý Phân biệt chiến lược phân trang - phân đoạn Chiến lược phân đoạn Các modul phụ thuộc cấu trúc logic chương trình Chiến lược phân trang Các khối có kích thước độc lập kích thước chương trình Kích thước khối phụ thuộc phần cứng (VD: 29 → 213 bytes) Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes du Nếu đủ trang vật lý tự ⇒ nạp toàn on g th an co Thực chương trình → Nạp chương trình vào nhớ ng c om 64 / 98 Nếu không đủ trang vật lý tự ⇒ nạp phần cu u 65 / 98 Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Thực chương trình → Truy nhập nhớ Nạp chương trình Xây dựng bảng quản lý trang giữ nhớ PTBR (Page-table base register ) trỏ tới PCB PTLR(Page-table length register ) kích thước PCB Thực truy nhập Địa truy nhập chia thành dạng PTBR + p ∗ K : Địa phần tử p PCB nhớ K Kích thước phần tử PCB Kiểm tra Mp Mp = : Lỗi trang, sinh ngắt để tiến hành nạp trang Xin trang vật lý tự (Hết trang tự do?) Tìm kiếm trang logic nhớ nạp trang Sửa lại trường địa A dấu hiệu M Mp = : Trang tồn tại, Lấy Ap ghép với d địa cần tìm 66 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Chuyển đổi địa chỉ: Sơ đồ truy nhập Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Nạp trang thay trang co Nhận xét ng c om 67 / 98 Số trang vật lý dành cho chương trình lớn Thực nhanh hệ số song song giảm Hệ số song song cao thực chậm hay thiếu trang du on g th ⇒ Hiệu phụ thuộc chiến lược nạp trang thay trang Các chiến lược nạp trangg Nạp tất Nạp tồn chương trình Nạp trước Dự báo trang cần thiết Nạp theo yêu cầu Chỉ nạp cần thiết Các chiến lược thay trang FIFO First In First Out LRU Least Recently Used LFU Least Frequently Used an Số trang vật lý dành cho chương trình bé cu u 68 / 98 Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Ưu điểm Tăng tốc độ truy nhập Hai lần truy nhập nhớ (vào PCB vào địa cần tìm) Thực phép ghép thay phép cộng Khơng tồn tượng phân đoạn Hệ số song song cao Chỉ cần vài trang chương trình nhớ Cho phép viết chương trình lớn tùy ý Dễ dàng thực nhiệm vụ bảo vệ Địa truy nhập hợp lệ (vượt kích thước) Tính chất truy nhập (đọc/ghi) Quyền truy nhập (user/system) Cho phép sử dụng chung trang 69 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Dùng chung trang : Soạn thảo văn Mỗi trang 50K trang mã trang liệu 40 người dùng Không dùng chung Cần 8000K Dùng chung Chỉ cần 2150K Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes co Dùng chung trang: Nguyên tắc Cần thiết môi trường hoạt động phân chia Chỉ phiên phân chia tiến trình nhớ th an Giảm kích thước vùng nhớ cho tất tiến trình Phần mã dùng chung Ví dụ: Soạn thảo văn bản, chương trình dịch ng c om 70 / 98 Vấn đề: Mã dùng chung không đổi g Trang dùng chung phải vị trí khơng gian logic tất tiến trình ⇒ Cùng số hiệu bảng quản lý trang Phần mã liệu riêng biệt du on Riêng biệt cho tiến trình Có thể nằm vị trí nhớ logic tiến trình cu u 71 / 98 Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Nhược điểm Tồn tượng phân đoạn Luôn xuất trang cuối Giảm tượng phân đoạn trang giảm kích thước trang ? Hay gặp lỗi trang Bảng quản lý trang lớn Đòi hỏi hỗ trợ phần cứng Chi phí cho chiến lược phân trang lớn Khi chương trình lớn, bảng quản lý trang nhiều phần tử Chương trình 230 , trang 212 PCB có 220 phần tử Tốn nhớ lưu trữ PCB Giải quyết: Trang nhiều mức 72 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Trang nhiều mức Nguyên tắc: Bảng quản lý trang phân trang Ví dụ trang mức Máy 32 bít địa (232 ); trang kích thước 4K (212 ) chia Số hiệu trang -20 bit Độ lệch trang -12bit Bảng trang phân trang Số hiệu trang chia thành Bảng trang (thư mục trang ) - 10 bit Độ lệch thư mục trang - 10bit Địa truy nhập có dạng Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes du on g th an co Trang nhiều mức: Ví dụ trang mức ng c om 73 / 98 cu u 74 / 98 Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Trang nhiều mức: Truy nhập nhớ Khi thực : Hệ thống nạp thư mục trang vào nhớ Bảng trang trang không sử dụng không cần nạp vào nhớ Cần lần truy nhập tới nhớ Vấn đề: Với hệ thống 64 bit 75 / 98 Trang 3, 4, mức Cần 4, 5, lần truy nhập bơ nhớ ⇒ chậm Giải quyết: Bộ đệm chuyển hóa địa CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.4 Chiến lược phân trang Notes Bộ đệm chuyển hóa địa (TLB: translation look-aside buffers ) Tập ghi liên kết (associative registers) Truy nhập song song Mỗi phần tử gồm Khóa: Page number Giá trị: Frame nbr TLB chứa đ/chỉ trang truy nhập Khi có y/cầu Tìm p TLB Khơng có, tìm p PCB đưa < p, f > vào TLB 98% truy nhập nhớ thực qua TLB Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.5 Chiến lược kết hợp phân đoạn-phân trang co Notes ng c om 76 / 98 Các chiến lược quản lý nhớ an Chiến lược phân chương cố định Chiến lược phân chương động th Chiến lược phân đoạn Chiến lược phân trang du on g Chiến lược kết hợp phân đoạn-phân trang cu u 77 / 98 Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.5 Chiến lược kết hợp phân đoạn-phân trang Notes Nguyên tắc Chương trình biên tập theo chế độ phân đoạn Tạo bảng quản lý đoạn SCB Mỗi phần tử bảng quản lý đoạn ứng với đoạn, gồm trường M, A, L Mỗi đoạn biên tập riêng theo chế độ phân trang Tạo bảng quản lý trang cho đoạn Địa truy nhập: < s, p, d > Thực truy nhập địa STBR + s ⇒: địa phần tử s Kiểm tra trường dấu hiệu Ms , nạp PCBs cần As + p ⇒ Địa phần tử p PCBs Kiểm tra trường dấu hiệu Mp , nạp PCBs cần Ghép Ap với d địa cần tìm Được sử dụng VXL Intel 80386, MULTICS Quản lý nhớ VXL họ intel? Chế độ thực Chế độ bảo vệ 78 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.5 Chiến lược kết hợp phân đoạn-phân trang Notes Sơ đồ truy nhập nhớ Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ Notes Tổng kết M1 M A L − 2340 2140 5730 − 4264 − 1766 Bảng: SCB co 1766 B Kết hợp Phân đoạn - Phân trang M M A L 0 − 0 0 − 0 − A − − − − − an Phân đoạn M3 th 4264 B g M2 5730 B Bảng: SCB on 2340B Bảng: PCB2 du M0 ng c om 79 / 98 cu u 80 / 98 Chương 3: Quản lý nhớ Bộ nhớ ảo Notes Nội dung Tổng quan Các chiến lược quản lý nhớ Bộ nhớ ảo Quản lý nhớ VXL họ Intel 81 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Bộ nhớ ảo 3.1 Giới thiệu Notes Bộ nhớ ảo 3.1 Giới thiệu 3.2 Các chiến lược đổi trang Chương 3: Quản lý nhớ Bộ nhớ ảo 3.1 Giới thiệu Notes Đặt vấn đề co Câu lệnh phải nằm nhớ thực ! Tồn chương trình phải nằm nhớ ? ng c om 82 / 98 Cấu trúc động; cấu trúc Overlays : Nạp phần an Đòi hỏi ý đặc biệt từ lập trình viên ⇒Khơng cần thiết Đoạn chương trình xử lý báo lỗi th Lỗi xảy tra, thực Phần khai không dùng tới Khai báo ma trận 100x100, sử dụng 10x 10 g Thực c/trình có phần nằm nhớ cho phép Viết chương trình khơng gian địa áolớn tùy ý on virtual address space du Nhiều chương trình đồng thời tồn ⇒ tăng hiệu suất sử dụng CPU Giảm yêu cầu vào/ra cho việc nạp hoán đổi chương trình Kích thước phần hốn đổi (swap) nhỏ cu u 83 / 98 Chương 3: Quản lý nhớ Bộ nhớ ảo 3.1 Giới thiệu Notes Khái niệm nhớ ảo Dùng nhớ thứ cấp (HardDisk) lưu trữ phần chương trình chưa đưa vào nhớ vật lý Phân tách nhớ logic (của người dùng ) với nhớ vật lý Cho phép thể ánh xạ vùng nhớ logic lớn vào nhớ vật lý nhỏ Cài đặt theo Phân trang Phân đoạn 84 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Bộ nhớ ảo 3.1 Giới thiệu Notes Nạp phần trang chương trình vào nhớ Một số trang tiến trình nằm nhớ vật lý, số trang nằm đĩa(bộ nhớ ảo) Biểu diễn nhờ sử dụng bit bảng quản lý trang Khi yêu cầu trang, đưa trang từ nhớ thứ cấp vào nhớ vật lý Chương 3: Quản lý nhớ Bộ nhớ ảo 3.1 Giới thiệu Notes du on g th an co Xử lý lỗi trang ng c om 85 / 98 Nếu khơng có frames tự do, phải tiến hành đổi trang cu u 86 / 98 Chương 3: Quản lý nhớ Bộ nhớ ảo 3.1 Giới thiệu Notes Đổi trang Xác định vị trí trang logic đĩa Lựa chọn trang vật lý Ghi đĩa Sửa lại bit valid-invalid Nạp trang logic vào trang vật lý chọn Restart tiến trình 87 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Bộ nhớ ảo 3.2 Các chiến lược đổi trang Notes Bộ nhớ ảo 3.1 Giới thiệu 3.2 Các chiến lược đổi trang Chương 3: Quản lý nhớ Bộ nhớ ảo 3.2 Các chiến lược đổi trang Notes co Các chiến lược ng c om 88 / 98 OPT/MIN Thuật toán thay trang tối ưu th LRU (Least Recently Used): Trang có lần sử dụng cuối cách lâu an FIFO (First In First Out): Vào trước trước g LFU (Least Frequently used):Tần xuất sử dụng thấp du on MFU (Most Frequently used): Tần xuất sử dụng cao cu u 89 / 98 Chương 3: Quản lý nhớ Bộ nhớ ảo 3.2 Các chiến lược đổi trang Notes FIFO Ví dụ Nhận xét Hiệu chương trình có cấu trúc tuyến tính Kém hiểu chương trình theo nguyên tắc lập trình cấu trúc Đơn giản dễ thực Dùng hàng đợi lưu trang chương trình nhớ Chèn cuối hàng, Thay trang đầu hàng Tăng trang vật lý, không đảm bảo giảm số lần gặp lỗi trang 90 / 98 Dãy truy nhập: 5 frames: lỗi trang; frames: 10 lỗi trang CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Bộ nhớ ảo 3.2 Các chiến lược đổi trang Notes OPT ✞ ☎ Nguyên tắc: Đưa trang có lần sử dụng cách xa ✆ ✝ Số lần gặp lỗi trang Khó dự báo diễn biến chương trình Chương 3: Quản lý nhớ Bộ nhớ ảo 3.2 Các chiến lược đổi trang Notes LRU ✞ ☎ co Nguyên tắc: Đưa trang có lần sử dụng cuối cách xa ✆ ng c om 91 / 98 on Hiệu cho chiến lược thay trang Đảm bảo giảm số lỗi trang tăng số trang vật lý g th an ✝ Tập trang nhớ có n frames ln tập trang nhớ có n + frames du Y/cầu trợ giúp kỹ thuật để thời điểm truy nhập cuối Cài đặt nào? cu u 92 / 98 Chương 3: Quản lý nhớ Bộ nhớ ảo 3.2 Các chiến lược đổi trang Notes LRU: Cài đặt Bộ đếm Thêm trường ghi thời điểm truy nhập vào phần tử PCB Thêm vào khối điều khiển (C.U) đồng hồ/bộ đếm Khi có yêu cầu truy nhâp trang Tăng đếm Chép nội dung đếm vào trường thời điểm truy nhập phần tử tương ứng PCB Cần có thủ tục cập nhật PCB (ghi vào trường thời điểm) thủ tục tìm kiếm trang có giá trị trường thời điểm nhỏ Hiện tượng tràn số !? Dãy số Dùng dãy số ghi số trang Truy nhập tới trang, cho phần tử tương ứng lên đầu dãy Thay trang: Phần tử cuối dãy Thường cài đặt dạng DSLK chiều phép gán trỏ ⇒ tốn thời gian 93 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Bộ nhớ ảo 3.2 Các chiến lược đổi trang Notes Thuật toán dựa đếm Sử dụng đếm (một trường PCB) ghi nhận số lần truy nhập tới trang LFU: Trang có đếm nhỏ bị thay Trang truy nhập nhiều đến Trang quan trọng ⇒ hợp lý Trang khởi tạo, dùng giai đoạn đầu ⇒ không hợp lý ⇒Dịch đếm bit (chia đơi) theo thời gian MFU: Trang có đếm lớn nhât Trang có đếm nhỏ nhất, vừa nạp vào chưa sử dụng nhiều Chương 3: Quản lý nhớ Quản lý nhớ VXL họ Intel Notes co Nội dung ng c om 94 / 98 Tổng quan Các chiến lược quản lý nhớ Bộ nhớ ảo Quản lý nhớ VXL họ Intel du on g th an cu u 95 / 98 Chương 3: Quản lý nhớ Quản lý nhớ VXL họ Intel Notes Các chế độ Intel 8086, 8088 Chỉ có chế độ quản lý: Chế độ thực (Real Mode) Quản lý vùng nhớ lên đến 1MB ( 20bit ) Xác định địa ô nhớ giá trị 16 bit: Segment, Offset Thanh ghi đoạn: CS, SS, DS, ES, Thanh ghi độ lệch: IP, SP, BP Địa vật lý: Seg SHR +Ofs Intel 80286 Chế độ thực, tương thích với 8086 Chế độ bảo vệ (Protected mode), Sử dụng phương pháp phân đoạn Khai thác nhớ vật lý 16M (24bit ) Intel 80386, Intel 80486, Pentium, Chế độ thực, tương thích với 8086 Chế độ bảo vệ :Kết hợp phân đoạn, phân trang Chế độ ảo (Virtual mode) Cho phép thực mã 8086 chế độ bảo vệ 96 / 98 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 3: Quản lý nhớ Quản lý nhớ VXL họ Intel Notes Chế độ bảo vệ Intel 386, 486, Pentium, .c om 97 / 98 Notes 98 / 98 an th g on du u Tổng quan Ví dụ Bộ nhớ chương trình Liên kết địa Các cấu trúc chương trình Các chiến lược quản lý nhớ Chiến lược phân chương cố định Chiến lược phân chương động Chiến lược phân đoạn Chiến lược phân trang Chiến lược kết hợp phân đoạn-phân trang Bộ nhớ ảo 3.1 Giới thiệu 3.2 Các chiến lược đổi trang Quản lý nhớ VXL họ Intel cu co Kết luận ng Chương 3: Quản lý nhớ Notes CuuDuongThanCong.com https://fb.com/tailieudientucntt ... Chương 3: Quản lý nhớ Các chiến lược quản lý nhớ 2.1 Chiến lược phân chương cố định Notes Đơn chương trình Hệ điều hành chương trình ứng dụng sử dụng chung RAM Hệ điều hành vùng nhớ thấp Hệ điều hành. .. đợi 500 Chương du 600 an Mỗi phần gọi chương (partition) Chương không thiết có kích thước Chương sử dụng vùng nhớ độc lập Ví dụ: Xét hệ thống: Hệ điều hành 150 Chương 30 0 Chương ng c om 37 / 98... lược phân chương động Notes Ví dụ 0 Hệ điều hành Hệ điều hành 400 Vù n gt rốn gt ựd o Process Size P1 600 P2 1000 P3 30 0 P4 700 P5 500 File đợi time 10 20 15 2560 400 ? 2560 Chương 3: Quản lý nhớ