690 likes | 1.18k Views
Chương 8: Quản lý bộ nhớ. Chương 8: Quản lý bộ nhớ. Kiến thức cơ bản Swapping Cấp phát khối bộ nhớ liên tục Phân trang (paging) Cấu trúc của bảng phân trang (page table) Phân đoạn (segmentation) Ví dụ: Intel Pentium. Mục tiêu. Chi tiết về các cách tổ chức phần cứng bộ nhớ
E N D
Chương 8: Quản lý bộ nhớ • Kiến thức cơ bản • Swapping • Cấp phát khối bộ nhớ liên tục • Phân trang (paging) • Cấu trúc của bảng phân trang (page table) • Phân đoạn (segmentation) • Ví dụ: Intel Pentium
Mục tiêu • Chi tiết về các cách tổ chức phần cứng bộ nhớ • Các kỹ thuật quản lý bộ nhớ, bao gồm phân trang và phân đoạn • Giới thiệu về Intel Pentium, hỗ trợ cả phân đoạn thuần túy và phân đoạn đi kèm phân trang
Kiến thức cơ bản • Chương trình phải được chuyển từ đĩa vào bộ nhớ và nằm trong một process để thực thi • Bộ nhớ chính và thanh ghi là tất cả các thiết bị lưu trữ mà CPU có thể truy cập trực tiếp • Truy cập thanh ghi hết một CPU clock (hoặc ít hơn) • Truy cập bộ nhớ chính có thể cần nhiều thời gian hơn • Cachenằm giữa bộ nhớ chính và các thanh ghi CPU • Bảo vệ bộ nhớ yêu cầu đảm bảo các thao tác chính xác
Thanh ghi Base và Limit • Một cặp thanh ghi basevàlimitđịnh nghĩa một vùng địa chỉ logic
Chỉ thị và dữ liệu trong bộ nhớ • Việc địa chỉ hóa (binding) chỉ thị và dữ liệu trong memory có thể diễn ra tại ba thời điểm sau: • Compile time: Nếu địa chỉ đã biết trước, ta có thể sinh ra absolute code; và phải biên dịch lại nếu vị trị bắt đầu bị thay đổi • Load time: Sinh ra relocatable code nếu ta không biết trước địa chỉ tại compile time • Execution time: Việc địa chỉ hóa được lùi lại tới run time nếu process có thể di chuyển giữa các segment khác nhau trong lúc thực thi. Cần phần cứng hỗ trợ việc sánh xạ địa chỉ (ví dụ: các thanh ghi base và limit)
Không gian địa chỉ logic và vật lý • Khái niệm không gian địa chỉ logic gắn với một vùng không gian địa chỉ vật lýlà trung tâm của vấn đề quản lý bộ nhớ • Địa chỉ logic– được sinh bởi CPU; còn được gọi là địa chỉ ảo • Địa chỉ vật lý– địa chỉ nhìn thấy bởi memory unit • Địa chỉ vật lý và logic là một trong lược đồ địa chỉ hóa compile-time và load-time; và khác nhau trong lược đồ địa chỉ hóa execution-time
Đơn vị quản lý bộ nhớ (MMU) • Thiết bị phần cứng ánh xạ địa chỉ ảo tới địa chỉ vật lý • Trong MMU scheme, giá trị trong thanh ghi relocation được cộng vào mọi địa chỉ sinh bởi một user process tại thời điểm nó được gửi tới bộ nhớ • User program sử dụng địa chỉ logic; không nhìn thấy địa chỉ vật lý
Dynamic Loading • Mã lệnh chỉ được nạp khi được gọi • Sử dụng bộ nhớ tiết kiệm hơn; mã lệnh không dùng đến sẽ không được nạp • Hữu ích khi một lượng code lớn cần thiết để xử lý một sự kiện ít khi xảy ra • Không cần OS hỗ trợ, được cài đặt ngay trong thiết kế chương trình
Dynamic Linking • Linking được để lại đến khi thực thi • Một đoạn code ngắn stub được dùng để định vị mã lệnh thư viện thường trú trong bộ nhớ (memory-resident library routine) • Stub thay thế bản thân nó bởi địa chỉ của routine và thực thi routine đó • OS cần phải kiểm tra xem routine có trong không gian bộ nhớ của process hay không • Dynamic linking rất cần thiết cho các thư viện • Hệ thống được gọi là chia sẻ thư viện (shared libraries)
Swapping • Một process có thể bị swap out tạm thời khỏi bộ nhớ ra thiết bị lưu trữ khác (backing store), rồi lại được đặt trở lại vào bộ nhớ để tiếp tục thực thi • Backing store– đĩa có tốc độ cao, dung lượng đủ để lưu các bản copy của toàn bộ memory image cho tất cả các user; phải cung cấp truy cập trực tiếp tới các memory image này • Roll out, roll in– một ví dụ về swap được dùng cho các thuật toán lập lịch dựa trên độ ưu tiên; process có độ ưu tiên thấp được swap out để process với độ ưu tiên cao được nạp và thực thi • Công việc chiếm nhiều thời gian trong lúc swap là transfer; transfer time tỉ lệ thuận với dung lượng bộ nhớ được swap • Các ví dụ khác về swap xuất hiện trong nhiều hệ thống (ví dụ như UNIX, Linux, và Windows) • Hệ thống duy trì một ready queuebao gồm các process sẵn sàng để thực thi và có memory image trên đĩa
Cấp phát liên tục • Bộ nhớ chính được chia làm hai phần (partition): • Phần thường trú dành cho OS, thường ở vùng địa chỉ thấp chứa các interrupt vector • Các user process được nạp vào vùng địa chỉ cao • Các thanh ghi relocation được dùng để bảo vệ không giân địa chỉ của các user process không bị chồng lên nhau, và không thay đổi mã và dữ liệu của OS • Base register chứa giá trị của địa chỉ vật lý thấp nhất • Limit register chứa độ dài của khoảng địa chỉ logic – mỗi địa chỉ logic phải nhỏ hơn limit register • MMU ánh xạ địa chỉ logic một cách động (dynamically)
Cấp phát liên tục • Cấp phát nhiều lần • Hole – vùng bộ nhớ trống (available); hole với các kích thước khác nhau xuất hiện rải rác trong memory • Một process được cấp phát bộ nhớ từ một hole đủ lớn để chứa process đó • OS duy trì thông tin về:a) các partition đã được cấp phát b) các free partition (hole) OS OS OS OS process 5 process 5 process 5 process 5 process 9 process 9 process 8 process 10 process 2 process 2 process 2 process 2
Vấn đề cấp phát bộ nhớ động • First-fit: Cấp phát hole đầu tiên đủ lớn • Best-fit: Cấp phát hole nhỏ nhất đủ lớn; phải tìm kiếm trong toàn bộ danh sách, hoặc danh sách được sắp theo kích thước • Hole còn lại có kích thước nhỏ nhất • Worst-fit: Cấp phát hole có kích thước lớn nhất; cũng phải tìm kiếm trong toàn bộ danh sách • Hole còn lại có kích thước lớn nhất Làm sao để đáp ứng request kích thước n với một danh sách các free hole First-fit và best-fit tốt hơn worst-fit về tốc độ và việc sử dụng bộ nhớ
Phân mảnh (fragmentation) • External Fragmentation– bộ nhớ rỗi đủ để đáp ứng request, nhưng không liên tục • Internal Fragmentation– bộ nhớ được cấp phát có thể lớn hơn một ít so với bộ nhớ được request; phần bộ nhớ thừa này nằm trong một partition, nhưng không được sử dụng • Giảm external fragmentation bằng compaction • Sắp xếp lại memory để đặt toàn bộ free memory trong một large block • Chỉ dùng được compaction nếu relocation là dynamic và được thực hiên tại execution time • Vấn đề I/O • Job vẫn chiếm memory khi nó thực thi I/O • I/O chỉ thực thi trong OS buffer
Phân trang (paging) • Không gian địa chỉ logic của một process có thể không liên tục; process được cấp phát bộ nhớ vật lý nếu có đủ • Chia bộ nhớ vật lý thành các block kích thước cố định gọi là frame(kích thước là lũy thừa của 2, nằm giữa 512 byte và 8,192 byte) • Chia bộ nhớ logic thành các khối có cùng kích thước gọi là page • Theo dõi các free frame • Để thực thi một program có kích thước n page, cần tìm n free frame để nạp program đó • Thiết lập một page table để chuyển địa chỉ logic thành địa chỉ vật lý • Internal fragmentation
Address Translation Scheme • Địa chỉ sinh bởi CPU được chia thành: • Page number (p)– sử dụng như một index tới một pagetable bao gồm base address của mỗi page trong bộ nhớ vật lý • Page offset (d)– cùng với base address định nghĩa địa chỉ vật lý được gửi tới memory unit • Không gian địa chỉ logic 2m và page size2n page offset page number p d m - n n
Ví dụ Paging 32-byte memory and 4-byte pages
Free Frames Sau cấp phát Trước cấp phát
Cài đặt Page Table • Page table được lưu trong main memory • Page-table base register (PTBR)trỏ tới page table • Page-table length register (PRLR)lưu kích thước của page table • Trong lược đồ này, mọi truy cập tới data/instruction cần hai memory access. Một tới page table và một tới the data/instruction. • Vấn đề này có thể được giải quyết bởi việc sử dụng một fast-lookup hardware cache gọi là associative memory hoặc là translation look-aside buffers (TLBs) • Một số TLB lưuaddress-space identifiers (ASIDs) trong mỗi TLB entry – xác định duy nhất process để cung cấp address-space protection cho process đó
Associative Memory • Associative memory – parallel search Address translation (p, d) • Nếu p ở trong associative register, ta lấy được frame # • Nếu không, ta lấy frame # từ page table trong bộ nhớ Page # Frame #
Thời gian truy cập hiệu dụng • Associative Lookup = time unit • Giả sử memory cycle là 1 microsecond • Hit ratio – tỉ lệ phần trăm của số lần page number được tìm thấy trong các associative register; tỉ lệ này có liên quan đến số associative register • Hit ratio = • Effective Access Time(EAT) EAT = (1 + ) + (2 + )(1 – ) = 2 + –
Memory Protection • Memory protection được cài đặt bởi associating protection bit với mỗi frame • Valid-invalidbit gắn với mỗi entry trong page table: • “valid” chỉ ra rằng page đó đang ở trong không gian địa chỉ logic của process và do đó là một page hợp lệ • “invalid” chỉ ra rằng page đó không ở trong không gian địa chỉ logic của process
Page chia sẻ (shared page) • Code chia sẻ • Một đoạn code chỉ đọc (read-only) được chia sẻ giữa các process (ví dụ như text editor, compiler, window system). • Code chia sẻ phải nằm trong không gian địa chỉ logic của tất cả các process • Code và dữ liệuriêng • Mỗi process giữ một bản copy riêng của code và data • Các page của code và data riêng có thể xuất hiện trong không gian địa chỉ logic
Cấu trúc của bảng phân trang • Bảng phân trang phân cấp (Hierarchical page table) • Hashed Page Table • Inverted Page Table
Bảng phân trang phân cấp • Chia không gian địa chỉ logic thành nhiều page table • Trường hợp đơn giản là two-level page table
Ví dụ Two-Level Paging • Một địa chỉ logic (trên máy 32-bit với 1K page size) được chia thành: • một page number gồm 22 bit • một page offset gồm 10 bit • Vì page table được phân trang nên page number được chia tiếp thành: • một page number 12-bit • một page offset 10-bit • Như vậy, một địa chỉ logic sẽ như sau: page offset page number p1 d p2 10 12 10
Hashed Page Table • Phổ biến với không gian địa chỉ > 32 bit • Virtual page number được băm (hash) tới một page table • Page table này chứa một dãy các phần tử cùng được băm tới một vị trí • Các virtual page number được so sánh với dãy này để tìm một phần tử có cùng giá trị • Nếu tìm thấy, physical frame tương ứng được sử dụng
Page Table nghịch đảo (inverted) • Một entry cho một page trong bộ nhớ • Entry chứa địa chỉ ảo của page được lưu tại vị trí nhớ thực đó, kèm theo thông tin về process sở hữu page đó • Giảm dung lượng bộ nhớ cần thiết để lưu trữ page table, nhưng tăng thời gian cần thiết để tìm kiếm trong page table khi một một truy xuất tới page xuất hiện • Sử dụng bảng băm (hash table) để giới hạn tìm kiếm trong một vài entry
Phân đoạn (Segmentation) • Lược đồ quản lý bộ nhớ hỗ trợ user view về memory • Một program là một collection của các segment • Một segment là một logical unit như sau: main program procedure function method object local variables, global variables common block stack symbol table arrays
1 4 2 3 Logical View của Segmentation 1 2 3 4 user space physical memory space
Kiến trúc Segmentation • Địa chỉ logic bao gồm một cặp: <segment-number, offset>, • Segment table– ánh xạ các địa chỉ vật lý hai chiều; mỗi table entry có: • base– chứa địa chỉ vật lý bắt đầu của segment ở trong bộ nhớ • limit– chỉ ra chiều dài của segment • Segment-table base register (STBR)trỏ tới vị trí của segment table trong bộ nhớ • Segment-table length register (STLR)chứa số lượng segment được sử dụng bởi một program; segment number s is legal if s < STLR
Kiến trúc Segmentation • Protection • Gắn với mỗi entry trong segment table: • validation bit = 0 illegal segment • read/write/execute privileges • Các protection bit được gắn với các segment; việc chia sẻ code xuất hiện tại segment level • Vì các segment khác nhau về chiều dài, memory allocation trở thành vấn đề cấp phát động