Nguyên lý hệ điều hành Quản lý nhớ Nguyễn Hải Châu Khoa Công nghệ thông tin Trường Đại học Công nghệ Các bước xử lý chương trình NSD Giới thiệu z Chương trình HĐH đưa vào nhớ, sau tạo tiến trình để thực z Input queue – Là hàng chờ tiến trình đĩa chờ đưa vào nhớ để thực z Các chương trình NSD phải qua số bước chuẩn bị trước thực Chuyển đổi địa Có cách chuyển đổi địa lệnh liệu chương trình vào nhớ: z z z Khi dịch chương trình (compile-time): Sinh mã có địa cố định; phải dịch lại cần thay đổi địa Khi nạp chương trình (load-time): Phải sinh mã định vị lại địa nhớ thời điểm dịch chương trình Khi thực chương trình (execution-time): Ánh xạ địa chương trình thực tiến trình chuyển segment nhớ Cần có hỗ trợ từ phần cứng (ví dụ ghi base limit) Không gian địa logic (ảo) địa vật lý (địa thật) z Để quản lý nhớ cách hoàn chỉnh, cần có hai cách nhìn địa khác nhau: z z z Địa logic (Logical address) – sinh CPU; gọi địa ảo (virtual address) Địa vật lý (Physical address); gọi địa thật – sinh đơn vị quản lý nhớ Địa thật ảo giống lược đồ ánh xạ địa “compile-time” “load-time” khác “execution-time” more information and additional documents, connect with me here: http://facebook.com/ngphutien/ file sources: https://mega.co.nz/#!Bh0HEDrD!wj2EkBJwc1339g9P5KwgsV5ypScRSn5S8NWVde2R1Mo Đơn vị quản lý nhớ (MMU) z z z Sử dụng ghi relocation Là thiết bị phần cứng dùng để ánh xạ địa ảo sang địa vật lý Trong MMU, có ghi relocation (định vị lại) dùng để tính toán địa thực (vật lý) từ địa ảo tiến trình NSD Chương trình NSD làm việc địa ảo địa vật lý Nạp chương trình động (Dynamic loading) z z z z Liên kết động (dynamic linking) thư viện chung (shared library) Các hàm, thủ tục không nạp sử dụng (được gọi đến) Cách nạp động sử dụng nhớ hiệu hơn: Các hàm, thủ tục không dùng đến không nạp vào nhớ Hữu ích có đoạn mã lớn sử dụng với tần suất thấp Không cần có đặc điểm đặc biệt từ hệ điều hành phần cứng/phần mềm Overlays z z z z z Liên kết chương trình thực chương trình thực Một đoạn mã ngắn (stub) dùng để định vị hàm tương ứng nạp sẵn nhớ Stub thay địa hàm/thủ tục cần thiết, sau thực hàm/thủ tục HĐH cần kiểm tra hàm/thủ tục nạp chưa Liên kết động có lợi xây dựng thư viện chung, sửa lỗi (các miếng vá – patch) 10 Ví dụ overlays z Chỉ lưu nhớ phần lệnh liệu phải sử dụng suốt trình thực z Sử dụng tiến trình có yêu cầu nhớ lớn dung lượng cấp phát z Cài đặt người sử dụng, lập trình overlays phức tạp 11 12 Swapping z Swapping: Đưa tiến trình backing store để lưu trữ tạm thời, sau đưa trở lại nhớ để thực z z z z Minh họa swapping Backing store – Vùng đĩa có tốc độ truy cập cao, đủ lớn để chứa nhiều tiến trình NSD, truy cập trực tiếp Roll out, roll in – Phương án swap dành cho lập lịch có ưu tiên: Tiến trình ưu tiến thấp: roll out, ưu tiên cao: roll in để tiếp tục thực Thời gian swap tỷ lệ thuận với dung lượng nhớ swap vào/ra UNIX, Linux, and Windows sử dụng swapping 13 14 Cấp phát nhớ liên tục Cấp phát liên tục (Contiguous allocation) z Bộ nhớ thường chia thành phần: z z z z 15 Phần dành cho hệ điều hành (resident) thường dùng phần thấp nhớ với ngắt NSD dùng phần cao nhớ Mỗi tiến trình cấp phát vùng liên tục nhớ Thanh ghi relocation dùng để bảo vệ tiến trình NSD để tránh thay đổi mã liệu HĐH Thanh ghi relocation chứa giá trị nhỏ địa vật lý, ghi limit chứa độ lớn miền địa ảo (địa ảo < limit) 16 Cấp phát liên tục (tiếp): MFT Minh họa ghi relocation, limit z z z z z 17 Bộ nhớ chia thành khối với cỡ cố định, tiến trình cấp phát khối Khi tiến trình kết thúc, khối nhớ cấp phát cho tiến trình giải phóng để cấp phát cho tiến trình khác Mức độ đa chương trình bị hạn chế khối Cỡ tiến trình bị hạn chế cỡ khối Các HĐH/máy tính sử dụng MFT: IBM/360 18 Cấp phát liên tục (tiếp): MVT z Các chiến lược cấp phát Cấp phát MVT z z z z Hole – khối nhớ rỗi; khối rỗi với kích cỡ khác rải rác nhớ Một tiến trình cấp phát khối nhớ đủ lớn để thực HĐH có thông tin khối cấp phát khối rỗi HĐH Tiến trình HĐH Tiến trình HĐH HĐH Tiến trình Tiến trình Tiến trình Tiến trình z Tiến trình Tiến trình 10 Tiến trình z z 19 Tiến trình Tiến trình First-fit: Cấp phát khối nhớ thỏa mãn điều kiện Best-fit: Cấp phát khối nhớ bé thỏa mãn điều kiện: Phải duyệt toàn danh sách khối nhớ Worst-fit: Cấp phát khối nhớ lớn thỏa mãn điều kiện: Phải duyệt toàn danh sách khối nhớ First-fit best-fit tốt worst-fit theo nghĩa tốc độ tận dụng nhớ 20 Tiến trình Vấn đề phân mảnh z z z External Fragmentation (Phân mảnh ngoài): Tổng dung lượng đáp ứng nhu cầu cấp phát khối không liên tục Internal Fragmentation (Phân mảnh trong) – Dung lượng nhớ cấp phát cho tiến trình không sử dụng hết Giảm phân mảnh ngoài: Compaction z z z z z z z z z z Phân trang (Paging) Xáo trộn khối để khối nhớ rỗi nằm liên tục Compaction thực relocation động, thực execution-time Ví dụ: Tiện ích Defragmentation Windows 21 22 Phân trang (paging) Cách đánh địa theo trang Phân trang chiến lược cấp phát nhớ cho phép không gian địa logic tiến trình không liên tục; tiến trình cấp phát nhớ vật lý có nhớ rỗi Bộ nhớ vật lý chia thành frame cỡ cố định, nhỏ (là lũy thừa 2, ví dụ 512, 1024, 8192) Chia nhớ ảo thành khối cỡ gọi trang (page) HĐH có danh sách frame rỗi Để thực chương trình cỡ n trang, cần tìm n frame rỗi để nạp chương trình Có bảng trang để ánh xạ trang→frame Bảng trang: chung HĐH, tiến trình có copy z 23 Địa đánh cách phân cấp: z z z z Số hiệu trang (Page number - p) – Được sử dụng làm số đến phần tử bảng trang chứa địa sở frame nhớ vật lý Offset trang (Page offset - d) – Địa tương đối trang Địa ảo có m bit, sử dụng m-n bit cao làm số hiệu trang n bit thấp làm offset Không có phân mảnh ngoài, có phân mảnh trong: z z Giảm cỡ trang→Giảm phân mảnh trong→Giảm hiệu Tăng cỡ trang→Tăng hiệu suất→Tăng phân mảnh 24 Chuyển đổi địa Ví dụ phân trang 25 Ví dụ phân trang 26 Bảng frame rỗi Cỡ trang bytes 27 Cài đặt bảng trang z z z z Trước cấp phát Sau cấp phát 28 Cài đặt bảng trang (tiếp) Bảng trang lưu nhớ Thanh ghi sở bảng trang (page-table base register) (PTBR) trỏ đến bảng trang Thanh ghi độ dài bảng trang (page-table length register) (PTLR) lưu cỡ bảng trang Sử dụng bảng trang, thao tác truy cập liệu/lệnh cần tới lần truy cập nhớ (1 cho bảng trang, cho liệu/lệnh) 29 z z z z Truy cập nhớ hai lần: Giảm tốc độ Giải vấn đề lần truy cập nhớ: Sử dụng phần cứng cache có tốc độ truy cập cao gọi nhớ kết hợp (associative memory) vùng đệm hỗ trợ chuyển đổi (translation look-aside buffers -TLB) Mỗi phần tử TLB có hai phần: khóa giá trị Số lượng phần tử TLB thường từ 64 đến 1024 30 Bộ nhớ kết hợp z Bộ nhớ kết hợp Page # z Phân trang phần cứng với TLB Frame # Chuyển đổi địa (A´, A´´) if A´ nằm ghi kết hợp, lấy frame# else lấy frame# từ bảng trang nhớ 31 Thời gian truy cập hiệu z z z z z 32 Bảo vệ nhớ Thời gian tìm kiếm ghi kết hợp = ε (đơn vị thời gian) Thời gian truy cập nhớ n đơn vị thời gian Hit ratio: Số phần trăm (%) địa trang tìm thấy ghi kết hợp/TLB Hit ratio = α Thời gian truy cập hiệu (EAT): EAT = (n + ε) α + (2n + ε)(1 – α) = 2n + ε – αn z z Bộ nhớ bảo vệ nhờ kết hợp bit bảo vệ phần tử bảng trang Bit hợp lệ-không hợp lệ (valid-invalid) kết nối với phần tử bảng trang: z z “valid” trang thuộc không gian địa logic tiến trình → trang hợp lệ “invalid” trang không thuộc không gian địa logic tiến trình 33 Ví dụ bit valid (v)/invalid (i) bảng trang 34 Các trang chung z Mã dùng chung z z z Mã lệnh liệu riêng z z 35 Nhiều tiến trình (soạn thảo, compiler ) dùng chung đoạn mã reentrant (đoạn mã không tự thay đổi nó) Đoạn mã chung phải xuất vị trí địa không gian địa logic/ảo tất tiến trình Mỗi tiến trình có riêng chứa lệnh liệu Các trang chứa lệnh liệu riêng vị trí không gian địa tiến trình 36 Ví dụ trang chung Cấu trúc bảng trang Bảng trang phân cấp Bảng trang băm Bảng trang ngược 37 Bảng trang phân cấp z z 38 Ví dụ bảng trang hai cấp Bộ nhớ máy tính lớn (232-264 bytes): Nếu dùng bảng trang cấp bảng trang có cỡ lớn: Tốn nhớ, tìm kiếm chậm z z z z Không gian địa logic quản lý nhiều bảng trang nhiều cấp z Một kỹ thuật đơn giản bảng trang hai cấp Có thể có bảng trang hai, ba, bốn cấp Địa trang: 20 bits Địa offset: 12 bits Bảng trang cấp (địa 20 bit) chia thành: z z z Địa logic (trên máy 32-bit, trang cỡ 4K=212) chia thành: 10-bit địa trang cấp 10-bit địa trang cấp Khi địa logic có dạng: Địa trang Offset p1 p2 d 10 10 12 p1 số đến bảng trang ngoài, p2 số đến trang (thực sự) bảng trang 39 40 Tính địa với bảng trang hai cấp Sơ đồ bảng trang hai cấp 41 42 Bảng trang băm z Thường sử dụng địa > 32 bit z Số hiệu/địa trang băm bảng trang Bảng trang chứa dãy phần tử (các trang) băm vị trí z Số hiệu trang so sánh dãy trang băm vị trí để từ tìm frame vật lý Bảng trang băm 43 Bảng trang ngược z z z z z 44 Kiến trúc bảng trang ngược Giải pháp giảm nhớ lưu bảng trang Mỗi phần tử bảng ứng với frame Mỗi phần tử chứa địa ảo trang thông tin tiến trình sử dụng trang Giảm dung lượng nhớ cần để lưu bảng trang, tăng thời gian cần để tìm bảng cần tham chiếu đến trang Sử dụng bảng băm để hạn chế số lần tìm kiếm phần tử bảng trang 45 46 Phân đoạn Phân đoạn (Segmentation) z z 47 Phương thức quản lý nhớ cho phép NSD “nhìn” nhớ cách dễ dàng góc độ lập trình Một chương trình gồm nhiều phân đoạn, phân đoạn thể góc độ lập trình dạng: main program, // Chương trình function, // Các hàm method, // Các phương thức object, // Các đối tượng, lớp local/global variables, // Các biến common block, // Các khối chung stack, // Ngăn xếp symbol table, arrays // Bảng ký hiệu, mảng 48 Chương trình nhìn từ NSD Phân đoạn: Cách nhìn logic 4 Không gian địa NSD 49 Kiến trúc phân đoạn z z z z z base: Địa vật lý bắt đầu phân đoạn (segment) limit: Độ dài phân đoạn (segment) z Thanh ghi sở bảng phân đoạn (Segmenttable base register STBR) trỏ đến base Thanh ghi độ dài bảng phân đoạn (Segmenttable length register - STLR) số lượng phân đoạn sử dụng tiến trình; Số hiệu phân đoạn s hợp lệ thỏa mãn điều kiện: s < STLR 51 Kiến trúc phân đoạn (tiếp) z z z z z z Động Sử dụng bảng phân đoạn z z Có phân đoạn dùng chung Sử dụng số hiệu phân đoạn (segment number) z Cấp phát (allocation) z z first fit/best fit Phân mảnh Bảo vệ nhớ:Mỗi phân đoạn có: z Dùng chung (sharing) z 52 Kiến trúc phân đoạn (tiếp) Định vị lại (relocation) z 50 Kiến trúc phân đoạn (tiếp) Địa ảo/logic đôi: Bảng phân đoạn (segment table) – ánh xạ địa vật lý cấp; phần tử bảng có: z Không gian nhớ vật lý z 53 Bit kiểm tra = ⇒ phân đoạn không hợp lệ read/write/execute privileges Protection bits associated with segments; code sharing occurs at segment level Do phân đoạn có cỡ biến đổi → Gặp vấn đề tương tự cấp phát nhớ liên tục Kết hợp phân đoạn với phân trang để tăng hiệu sử dụng nhớ, dễ cấp phát (ví dụ: MULTICS, Intel 386) 54 Phần cứng phân đoạn Ví dụ phân đoạn 55 56 Tóm tắt z z z z Địa logic (ảo)/Địa vật lý (thật) Các phương án ánh xạ địa chương trình vào nhớ Cấp phát nhớ liên tục, phân mảnh, chiến lược cấp phát first-fit, best-fit, worst-fit Phân trang z z z Trang, frame Bảng trang, bảng trang phân cấp, bảng trang ngược Phân đoạn, bảng phân đoạn 57 10 ... phát khối nhớ thỏa mãn điều kiện Best-fit: Cấp phát khối nhớ bé thỏa mãn điều kiện: Phải duyệt toàn danh sách khối nhớ Worst-fit: Cấp phát khối nhớ lớn thỏa mãn điều kiện: Phải duyệt toàn danh sách... liên tục Cấp phát liên tục (Contiguous allocation) z Bộ nhớ thường chia thành phần: z z z z 15 Phần dành cho hệ điều hành (resident) thường dùng phần thấp nhớ với ngắt NSD dùng phần cao nhớ Mỗi... không liên tục; tiến trình cấp phát nhớ vật lý có nhớ rỗi Bộ nhớ vật lý chia thành frame cỡ cố định, nhỏ (là lũy thừa 2, ví dụ 512, 1024, 8192) Chia nhớ ảo thành khối cỡ gọi trang (page) HĐH có danh