470 likes | 913 Views
Quản lý bộ nhớ. Bối cảnh. Bộ nhớ của máy thì hữu hạn nhưng nhu cầu của chương trình thì vô hạn. Hệ thống thực hiện nhiều tiến trình cùng lúc, cần làm sao cho tiến trình này không ảnh hưởng đến tiến trình kia. Liên kết địa chỉ.
E N D
Bối cảnh • Bộ nhớ của máy thì hữu hạn nhưng nhu cầu của chương trình thì vô hạn. • Hệ thống thực hiện nhiều tiến trình cùng lúc, cần làm sao cho tiến trình này không ảnh hưởng đến tiến trình kia. Operating systems
Liên kết địa chỉ • Khi viết chương trình, lập trình viên chỉ quan tâm đến địa chỉ tượng trưng (tên biến, tên hàm, …). Khi thực thi, các địa chỉ này phải được ánh xạ thành địa chỉ thật. Có thể thực hiện việc ánh xạ tại các thời điểm: • Lúc biên dịch chương trình • Lúc nạp chương trình vào bộ nhớ • Lúc thực thi chương trình Operating systems
Địa chỉ vật lý và địa chỉ luận lý • Địa chỉ luận lý (hay địa chỉ ảo) là địa chỉ mà CPU “nhìn thấy”. • => Không gian địa chỉ ảo là tập hợp tất cả các địa chỉ mà CPU “nhìn thấy”. • Địa chỉ vật lý là địa chỉ thật mà đơn vị quản lý bộ nhớ quản lý. • => Không gian địa chỉ vật lý là khoảng địa chỉ mà đơn vị quản lý bộ nhớ “nhìn thấy”. Operating systems
Địa chỉ luận lý và địa chỉ vật lý Không gian vật lý Không gian luận lý Bộ nhớ vật lý Đơn vị quản lý bộ nhớ Operating systems
Đơn vị quản lý bộ nhớ (MMU) • MMU (Memory Management Unit) là khối phần cứng thực hiện việc chuyển đổi giữa địa chỉ luận và địa chỉ vật lý. • Có chức năng tách rời không gian vật lý với không gian luận lý. • Chương trình chỉ nhìn thấy không gian luận lý. Operating systems
Đơn vị quản lý bộ nhớ (MMU) • MMU được tích hợp bên trong CPU Địa chỉ luận lý Khối CPU Operating systems
Cấp phát động • Chỉ liên kết (link) chương trình khi chương trình được thực thi. • Chỉ nạp chương trình con vào bộ nhớ khi nó chính thức được gọi. • Cơ chế hóan đổi (swap): tạm thời chuyển phần tiến trình chưa sử dụng ra bộ nhớ ngòai (đĩa cứng), khi nào cần sẽ nạp vào lại. Operating systems
Swap Operating systems
Các cơ chế cấp phát bộ nhớ • Cấp phát liên tục (contigous allocation) • Cấp phát không liên tục: • Phân đọan (segmentation) • Phân trang (paging) Operating systems
Cấp phát liên tục • Mô hình 1 (linker-loader): quản lý địa chỉ bắt đầu và kích thước tiến trình Operating systems
Cấp phát liên tục • Mô hình 2 (base&limit) quản lý địa chỉ bắt đầu và địa chỉ kết thúc. Operating systems
Bảo vệ bộ nhớ trong cơ chế base&limit Operating systems
Hiện tượng phân mảnh bộ nhớ Các tiến trình có kích thước khác nhau. Sau khi thực thi xong và ra khỏi bộ nhớ sẽ tạo ra các vùng trống không đều nằm rải rác trong bộ nhớ => phân mảnh. Operating systems
Hiện tượng phân mảnh bộ nhớ • Phân mảnh trong (internal fragmentation): Tiến trình được đưa vào vùng trống lớn hơn kích thước tiến trình => có một phần dư không dùng. • Phân mảnh ngòai (external fragmentation): tổng cộng vùng nhớ trống còn nhiều nhưng không liên tục nên không cấp phát được. Operating systems
Các chiến lược cấp phát động • First-fit: Chọn vùng nhớ trống đầu tiên tìm thấy đủ rộng để chứa tiến trình. • Best-fit: Chọn vùng nhớ trống nhỏ nhất đủ sức chứa tiến trình. • Worst-fit: Chọn vùng nhớ trống lớn nhất để chứa tiến trình. • Chiến lược nào tốt nhất??? Operating systems
Phân đọan • Đối với người sử dụng, một chương trình được chia thành nhiều phần khác nhau: Operating systems
1 4 2 3 Phân đọan • Mỗi phần được đưa vào một vùng nhớ riêng, có kích thước khác nhau và liên hệ luận lý với nhau gọi là một đọan (segment) 1 2 3 4 Operating systems
Phân đọan • Mỗi đọan bộ nhớ trong không gian địa chỉ luận lý được nhận diện bằng địa chỉ bắt đầu của đọan (base) và kích thước của đọan đó (limit). • Cấu trúc địa chỉ luận lý có dạng <s, d> trong đó s là số hiệu phân đọan, d là địa chỉ tương đối trong phân đọan. Operating systems
Chuyển đổi địa chỉ trong cơ chế phân đọan Operating systems
Một hệ thống phân đọan Operating systems
Dùng chung các phân đọan Operating systems
Phân trang (paging) • Không gian bộ nhớ vật lý được chia thành các đọan có kích thước bằng nhau gọi là khung (frame) • Không gian địa chỉ ảo cũng được chia thành nhiều đọan có kích thước bằng nhau và bằng với khung trang, gọi là các trang địa chỉ (page) Operating systems
Trang và khung Operating systems
Địa chỉ luận lý trong chế độ phân trang Địa chỉ luận lý có dạng <p, d> P: số hiệu trang D: địa chỉ tương đối trong trang Operating systems
Chuyển đổi địa chỉ ảo thành địa chỉ vật lý Operating systems
Truy xuất bộ nhớ với cơ chế phân trang • Liên kết giữa trang và khung được chứa trong bảng trang (page table) • Mỗi thao tác truy xuất bộ nhớ gồm 2 công đọan: • Đọc bảng trang để tìm khung => tạo ra địa chỉ vật lý • Đọc dữ liệu từ địa chỉ vật lý Operating systems
Tăng tốc độ truy xuất bộ nhớ trong cơ chế phân trang Sử dụng bộ nhớ kết hợp TLB (Translation look aside buffer) Operating systems
Bảng trang nhiều cấp Cấu trúc địa chỉ trong bảng trang hai cấp p1 p2 d Operating systems
Bài tập 1 • Giả sử bộ nhớ chính được phân thành các đọan có kích thước là 600K, 500K, 200K, 300K ( theo thứ tự ). Hãy cho biết các tiến trình có kích thước 212K, 417K, 112K và 426K ( theo thứ tự ) sẽ được cấp phát bộ nhớ như thế nào, nếu sử dụng : a) Chiến lược First fit b) Chiến lược Best fit c) Chiến lược Worst fit Operating systems
Bài tập 2 • Tại sao kích thước trang luôn là lũy thừa của 2? • Xét một không gian địa chỉ có 8 trang, mỗi trang có kích thước 1K. Ánh xạ vào bộ nhớ vật lý có 32 khung. a) Địa chỉ luận lý gồm bao nhiêu bit ? b) Địa chỉ vật lý gồm bao nhiêu bit ? Operating systems
Bài tập 3 • Xét một hệ thống sử dụng kỹ thuật phân trang, với bảng trang được lưu trữ trong bộ nhớ chính. a) Nếu thời gian cho một lần truy xuất bộ nhớ bình thường là 200 ns, thì mất bao nhiêu thời gian cho một thao tác truy xuất bộ nhớ trong hệ thống này ? b) Nếu sử dụng TLBs với hit-ratio ( tỉ lệ tìm thấy) là 75%, thời gian để tìm trong TLBs xem như bằng 0, tính thời gian truy xuất bộ nhớ trong hệ thống ( effective memory reference time) Operating systems
Bàitập 4 Cho bảng phân đọan như hình dưới. Xác định địa chỉ vật lý ứng với các địa chỉ sau đây: • 0,430 • 1,10 • 2,500 • 3,400 • 4,112 Operating systems