Bài giảng Hệ điều hành - Chương 7: Main Memory - Hà Duy An

Là một trong các phương pháp cấp phát bộ nhớ được dùng đầu tiên

• Bộ nhớ chính thường được chia làm 2 phần:

o Phần thường trú của hệ điều hành: thường được tổ chức trong vùng nhớ

thấp với các vector ngắt.

o Các tiến trình người dùng được tổ chức trong vùng nhớ cao;

mỗi tiến trình được cấp phát duy nhất một vùng nhớ liên tục trong bộ

nhớ

• Sơ đồ thanh ghi tái định vị được sử dụng để bảo vệ các tiến trình

người dùng với nhau, và để chống việc thay đổi mã lệnh và dữ liệu

của hệ điều hành:

o Thanh ghi tái định vị (relocation register) chứa giá trị của địa chỉ vật lý

nhỏ nhất

o Thanh ghi giới hạn (limit register) chỉ ra phạm vi cho phép của các địa

chỉ luận lý - mỗi địa chỉ luận lý phải nhỏ hơn giá trị trong thanh ghi

giới hạn.

o MMU ánh xạ động địa chỉ luận lý > vật lý

Cấp phát đa phân khu:

o Mức độ đa chương được xác định bởi số lượng phân khu

o Kích thước phân khu thay đổi tùy thuộc vào nhu cầu của tiến trình

o Lỗ hổng (hole): các lỗ hổng với kích thước khác nhau nằm rải rác trong bộ nhớ.

o Khi một tiến trình xuất hiện, nó được cấp cho lỗ hổng đủ chứa nó.

o Khi tiến trình kết thúc vùng nhớ tương ứng được giải phóng, và được kết hợp với lỗ

hổng lân cận (nếu có)

o Hệ điều hành duy trì thông tin về:

a) Những phân khu đã được cấp b) Các lỗ hổng

 

pdf57 trang | Chia sẻ: trungkhoi17 | Lượt xem: 1392 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng Hệ điều hành - Chương 7: Main Memory - Hà Duy An, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Khoa Công Nghệ Thông Tin & Truyền Thông Đại học Cần Thơ Giảng viên: Hà Duy An 1.Tổng quan 2.Hoán vị (Swapping) 3.Cấp phát bộ nhớ liên tục 4.Phân đoạn (Segmentation) 5.Phân trang (Paging) 6.Cấu trúc bảng trang 10/28/2013 Chương 7: Main Memory2 • Chương trình phải được mang vào bộ nhớ và được đặt vào một tiến trình để thực thi. • Bộ nhớ chính và các thanh ghi là hai thiết bị lưu trữ mà CPU có thể truy cập trực tiếp • Đơn vị bộ nhớ (memory unit) chỉ nhìn thấy một luồng địa chỉ + yêu cầu đọc, hay địa chỉ + dữ liệu và yêu cầu ghi • Các thanh ghi có thể được truy cập chỉ với một chu kỳ CPU (hay ít hơn) • Truy cập bộ nhớ chính cần nhiều chu kỳ CPU hơn • Cache nằm ở giữa bộ nhớ chính và các thanh ghi • Các thao tác trên bộ nhớ cần được đảm bảo chính xác 10/28/2013 Chương 7: Main Memory4 • Một cặp thanh ghi nền (base) và giới hạn (limit) xác định không gian địa chỉ của tiến trình trên bộ nhớ • CPU phải kiểm tra tất cả truy cập bộ nhớ từ không gian người dùng nằm trong khoảng giới hạn của thanh ghi nền và giới hạn 10/28/2013 Chương 7: Main Memory5 10/28/2013 Chương 7: Main Memory6 • Tập hợp các chương trình trên đĩa, sẵn sàng được mang vào bộ nhớ để thực thi hình thành một hàng đợi nhập (input queue) o Nếu không có sự hỗ trợ nào, chương trình phải được nạp vào từ địa chỉ: 0000 • Hầu hết các hệ thống máy tính cho phép các tiến trình có thể nằm ở bất kỳ phần nào trong bộ nhớ vật lý • Các địa chỉ ở trong các dạng thức khác nhau tại mỗi giai đoạn khác nhau của chương trình: o Các địa chỉ tượng trưng trong chương trình nguồn. o Các địa chỉ tái định vị khi biên dịch. o Các địa chỉ tuyệt đối khi nạp (loading) hoặc nối kết (linking). => Mỗi giai đoạn, việc gắng kết sẽ ánh xạ từ một không gian địa chỉ này sang một không gian địa chỉ khác. 10/28/2013 Chương 7: Main Memory7 • Việc gắn kết địa chỉ (address binding) của các chỉ thị và dữ liệu vào địa chỉ bộ nhớ có thể diễn ra tại 3 giai đoạn khác nhau: o Thời điểm biên dịch (compile time): Nếu vị trí vùng nhớ được biết trước, thì có thể sinh ra mã lệnh tuyệt đối (absolute code); tuy nhiên chương trình phải được biên dịch lại nếu vị trí bắt đầu của vùng nhớ thay đổi. o Thời điểm nạp (load time): trình biên dịch phải sinh ra mã lệnh có thể tái định vị (relocatable code) nếu không thể biết được vị trí vùng nhớ tại thời điểm biên dịch. Trong trường hợp này việc gắng kết bị trì hoãn cho đến thời điểm nạp. Chương trình phải được nạp lại nếu vị trí bắt đầu của vùng nhớ thay đổi o Thời điểm thực thi (execution time): Việc gắn địa chỉ bị trì hoãn cho đến thời điểm thực thi nếu tiến trình có thể phải di chuyển được từ phân đoạn bộ nhớ (segment) này đến phân đoạn bộ nhớ khác khi thực thi. Cần thêm sự hỗ trợ của phần cứng để ánh xạ địa chỉ(ví dụ như các thanh ghi cơ sở (base) và giới hạn (limit)). 10/28/2013 Chương 7: Main Memory8 10/28/2013 Chương 7: Main Memory9 • Cơ chế cho phép không gian địa chỉ luận lý tách biệt khỏi không gian địa chỉ vật lý, chính là trọng tâm của cơ chế quản lý bộ nhớ. o Địa chỉ luận lý (logical address): được sinh ra bởi CPU, cũng được xem là địa chỉ ảo (virtual address). o Địa chỉ vật lý (physical address): địa chỉ được nhìn thấy bởi bộ quản lý bộ nhớ. • Địa chỉ luận lý và vật lý là như nhau trong sơ đồ gắn kết địa chỉ tại thời điểm biên dịch và nạp chương trình. • Địa chỉ luận lý và địa chỉ vật lý sẽ khác nhau trong sơ đồ gắn kết địa chỉ tại thời điểm thực thi. 10/28/2013 Chương 7: Main Memory10 • Bộ quản lý bộ nhớ (Memory management Unit – MMU): thiết bị phần cứng làm nhiệm vụ ánh xạ địa chỉ ảo sang địa chỉ vật lý => nhiều phương thức có thể được sử dụng • Một sơ đồ ánh xạ đơn giản là dùng thanh ghi tái định vị (relocation/base register): giá trị của thanh ghi tái định vị được cộng vào bất cứ địa chỉ nào sinh ra bởi tiến trình người dùng vào thời điểm nó được gửi đến bộ nhớ o MS-DOS trên Intel 80x86 sử dụng 4 thanh ghi tái định vị • Chương trình người dùng thực thi với các địa chỉ luận lý; nó không bao giờ thấy được địa chỉ vật lý thật sự 10/28/2013 Chương 7: Main Memory11 10/28/2013 Chương 7: Main Memory12 • Nạp tĩnh (static loading): toàn bộ chương trình và dữ liệu được nạp một lần vào bộ nhớ vật lý cho tiến trình để chạy. • Nạp động (dynamic loading): thường trình (routine) chỉ được nạp khi nó được gọi. o Tất cả các thường trình được lưu trên đĩa theo định dạng nạp có thể tái định vị. o Bộ nạp liên kết tái định vị (relocatable linking loader) được dùng để nạp các thường trình mong muốn. • Điều này làm tăng hiệu năng sử dụng bộ nhớ; các thường trình không được sử dụng sẽ không bao giờ được nạp. • Hữu ích khi một số lượng lớn các mã lệnh được cần để giải quyết các tình huống không thường xuất hiện. • Không cần sự hỗ trợ đặc biệt của hệ điều hành: o Nạp động được cài đặt thông qua cách thiết kế chương trình. o HĐH có thể hỗ trợ bằng cách cung cấp các thư viện để cài đặt nạp động 10/28/2013 Chương 7: Main Memory13 • Liên kết tĩnh (static linking): các thư viện hệ thống và mã chương trình được kết hợp với nhau bởi bộ nạp (loader) thành một chương trình nhị phân có thể thực thi (executable image). • Liên kết động (dynamic linking): việc liên kết bị hoãn lại đến tận thời điểm thực thi. • Một đoạn mã lệnh nhỏ, stub, được sử dụng để định vị thường trình thư viện thường trú (memory-resident library routine) tương ứng hay cách thức nạp thư viện cần thiết vào nếu thường trình cần tham chiếu chưa được nạp vào bộ nhớ. • Stub thay thế chính nó bằng địa chỉ của thường trình và thực thi thường trình đó • Hệ điều hành cần phải kiểm tra thường trình có nằm trong không gian địa chỉ của các tiến trình hay không. o Nếu không, thêm nó vào • Liên kết động hữu ích đặc biệt cho các thư viện chia sẻ (shared libraries). 10/28/2013 Chương 7: Main Memory14 • Một tiến trình có thể được hoán vị tạm thời ra khỏi bộ nhớ, đến vùng lưu trữ phụ (backing store) và rồi lại được mang trở lại bộ nhớ để tiếp tục thực thi. • Vùng lưu trữ phụ: đĩa tốc độ cao, đủ lớn để sao chép tất cả ảnh bộ nhớ (memory image) cho tất cả người dùng; phải cho phép truy cập trực tiếp đến các ảnh này. • Hàng đợi sẳn sàng bao gồm tất cả các tiến trình sẳn sàng để thực thi nằm trong bộ nhớ và nằm trong vùng lưu trữ phụ • Nếu tiến trình kế tiếp được cấp CPU không nằm trong bộ nhớ => cần phải hoán vị một tiến trình ra, và mang tiến trình cần thiết vào bộ nhớ • Thời gian chuyển ngữ cảnh trường hợp này là rất cao • Giả sử tiến trình 100MB hoán vị ra đĩa với tốc độ 50MB/sec o Thời gian hoán vị ra: 2000ms o Cộng thời gian hoán vị vào một tiến trình có cùng kích thước o Tổng thời gian chuyển đổi ngữ cảnh: 4000ms 10/28/2013 Chương 7: Main Memory15 10/28/2013 Chương 7: Main Memory16 • Phần chính của thời gian hoán vị là thời gian chuyển dữ liệu; tổng thời gian chuyển dữ liệu tỷ lệ thuận với lượng bộ nhớ được hoán vị. o Giảm kích thước dữ liệu cần hoán vị – nếu biết chính xác dung lượng bộ nhớ thật sự cần dùng • Các ràng buộc khác: o Có cần hoán vị tiến trình vào chính xác vùng nhớ trước đó hay không? o Khi tiến trình đang thực hiện tao tác I/O • Phiên bản chuẩn của hoán vị không được dùng trong HĐH hiện đại. Tuy nhiên, các phiên bản cải tiến của kỹ thuật này được dùng trong nhiểu hệ thống (như: Unix, Linux, và Windows): o Hoán vị thông thường được vô hiệu hóa o Chỉ bắt đầu khi số lượng bộ nhớ đã cấp phát lớn hơn một ngưỡng nào đó 10/28/2013 Chương 7: Main Memory17 10/28/2013 Chương 7: Main Memory18 • Là một trong các phương pháp cấp phát bộ nhớ được dùng đầu tiên • Bộ nhớ chính thường được chia làm 2 phần: o Phần thường trú của hệ điều hành: thường được tổ chức trong vùng nhớ thấp với các vector ngắt. o Các tiến trình người dùng được tổ chức trong vùng nhớ cao; mỗi tiến trình được cấp phát duy nhất một vùng nhớ liên tục trong bộ nhớ • Sơ đồ thanh ghi tái định vị được sử dụng để bảo vệ các tiến trình người dùng với nhau, và để chống việc thay đổi mã lệnh và dữ liệu của hệ điều hành: o Thanh ghi tái định vị (relocation register) chứa giá trị của địa chỉ vật lý nhỏ nhất o Thanh ghi giới hạn (limit register) chỉ ra phạm vi cho phép của các địa chỉ luận lý - mỗi địa chỉ luận lý phải nhỏ hơn giá trị trong thanh ghi giới hạn. o MMU ánh xạ động địa chỉ luận lý > vật lý 10/28/2013 Chương 7: Main Memory19 10/28/2013 Chương 7: Main Memory20 • Cấp phát đa phân khu: o Mức độ đa chương được xác định bởi số lượng phân khu o Kích thước phân khu thay đổi tùy thuộc vào nhu cầu của tiến trình o Lỗ hổng (hole): các lỗ hổng với kích thước khác nhau nằm rải rác trong bộ nhớ. o Khi một tiến trình xuất hiện, nó được cấp cho lỗ hổng đủ chứa nó. o Khi tiến trình kết thúc vùng nhớ tương ứng được giải phóng, và được kết hợp với lỗ hổng lân cận (nếu có) o Hệ điều hành duy trì thông tin về: a) Những phân khu đã được cấp b) Các lỗ hổng 10/28/2013 Chương 7: Main Memory21 OS process 5 process 8 process 2 OS process 5 process 2 OS process 5 process 2 OS process 5 process 9 process 2 process 9 process 10 Làm thế nào để thỏa mãn yêu cầu bộ nhớ có kích thước n từ số các lỗ hổng hiện tại? • First-fit: cấp lỗ hổng đầu tiên đủ lớn. • Best-fit: cấp lỗ hổng nhỏ nhất nhưng đủ lớn; phải tìm kiếm toàn bộ danh sách các lỗ hổng, trừ khi danh sách này được sắp thứ tự theo kích thước lỗ hổng. Chiến lược này sinh ra lỗ hổng còn lại nhỏ nhất. • Worst-fit: cấp lỗ hổng lớn nhất; cũng phải tìm cho ra lỗ hổng có kích thước lớn nhất trong toàn bộ danh sách. Chiến lược này sinh ra lỗ hổng còn lại lớn nhất First-fit và best-fit thì tốt hơn worst-fit khi ta quan tâm đến tốc độ và hiệu quả sử dụng bộ nhớ. Hiệu quả sử dụng bộ nhớ là như nhau với First-fit và best-fit, tuy nhiên first-fit nhìn chung nhanh hơn. 10/28/2013 Chương 7: Main Memory22 • Phân mảnh ngoài: tổng không gian bộ nhớ còn đủ để thỏa mãn yêu cầu nhưng chúng không nằm liền nhau. • Phân mảnh trong: phần bộ nhớ cấp cho tiến trình lớn hơn bộ nhớ yêu cầu một ít. Phần sai khác này nằm bên trong của phân khu và không được sử dụng. • Khử phân mảnh ngoài bằng cách cô đặc bộ nhớ o Sắp xếp lại nội dung bộ nhớ để gom các lỗ hổng lại thành một lỗ hổng duy nhất lớn hơn. o Sự khử phân mảnh chỉ có thể làm được khi việc tái định vị là động • Cách tiếp cận khác để khử phân mảnh ngoài là cho phép vùng nhớ của tiến trình nằm không liên tục trong bộ nhớ => cấp phát không liên tục. 10/28/2013 Chương 7: Main Memory23 • Sơ đồ quản lý bộ nhớ hỗ trợ việc phân chia bộ nhớ theo góc độ người dùng. • Một chương trình bao gồm một tập hợp các đoạn (segment). o Một đoạn là một đơn vị luận lý, ví dụ như: main program, procedure, function, method, object, local variables, global variables, common block, stack, symbol table arrays 10/28/2013 Chương 7: Main Memory25 10/28/2013 Chương 7: Main Memory26 1 3 2 4 1 4 2 3 Không gian người dùng Không gian bộ nhớ vật lý • Địa chỉ luận lý bao gồm một bộ đôi: • Bảng đoạn (Segment table): ánh xạ các địa chỉ luận lý hai chiều định nghĩa bởi người dùng vào các địa chỉ vật lý một chiều. • Mỗi mục từ trong bảng gồm hai phần: o base – chứa địa chỉ vật lý khởi đầu của đoạn trong bộ nhớ vật lý. o limit – chỉ định chiều dài của đoạn. • Segment-table base register (STBR): là thanh ghi chỉ đến vị trí của bảng đoạn trong bộ nhớ. • Segment-table length register (STLR): là thanh ghi chỉ ra số lượng các đoạn đang được sử dụng bởi chương trình; một đoạn có số hiệu s là hợp lệ nếu s < STLR. 10/28/2013 Chương 7: Main Memory27 10/28/2013 Chương 7: Main Memory28 10/28/2013 Chương 7: Main Memory29 • Bảo vệ (Protection): o Cơ chế bảo vệ: Kết hợp với mỗi mục từ trong bảng quản lý đoạn: • Bit hợp lệ (validation bit) = 0⇒ đoạn không hợp lệ • Các bit kiểm soát các quyền read/write/execute • Việc chia sẻ mã lệnh được thực hiện ở mức đoạn. • Do các đoạn có độ dài khác nhau, việc cấp phát bộ nhớ là kiểu bài toán cấp phát động. 10/28/2013 Chương 7: Main Memory30 • Không gian địa chỉ vật lý của một tiến trình có thể không liên tục; tiến trình được cấp bộ nhớ vật lý khi nó sẵn dùng. o Tránh dược phân mãnh ngoài trong bộ nhớ và vùng lưu trữ phụ (backing store) • Chia bộ nhớ vật lý thành các khối có kích thước cố định gọi là các khung (frame): có kích thước là lũy thừa của 2, giữa 512 bytes và 16 Mbytes. • Chia bộ nhớ luận lý thành các khối có cùng kích thước với khung trang gọi là trang (page). • Theo dõi tất cả các khung trang còn rảnh. • Để chạy một chương trình có N trang, cần phải tìm đúng N khung trang còn trống và nạp chương trình vào. • Cần thiết lập một bảng trang (page table) để dịch các địa chỉ luận lý thành địa chỉ vật lý. • Vẫn tồn tại phân mảnh trong. 10/28/2013 Chương 7: Main Memory32 • Địa chỉ được sinh ra bởi CPU được chia làm 2 phần: o Số hiệu trang – page number (p): được sử dụng như là một chỉ mục đến bảng trang, mà bảng trang này chứa địa chỉ nền của mỗi trang trong bộ nhớ vật lý. o Độ dời trong trang – offset number (d): được kết hợp với địa chỉ nền để xác định địa chỉ vật lý dùng để gởi đến bộ nhớ. • Kích thước của không gian địa chỉ là 2m • Kích thước của trang là 2n 10/28/2013 Chương 7: Main Memory33 page number page offset p d m ‐ n n 10/28/2013 Chương 7: Main Memory34 10/28/2013 Chương 7: Main Memory35 • Một trang kích thước 4 byte. • Bộ nhớ vật lý kích thước 32 byte (8 khung). • Địa chỉ luận lý 3 được ánh xạ vào địa chỉ vật lý 23. 10/28/2013 Chương 7: Main Memory36 10/28/2013 Chương 7: Main Memory37 • Phân mãnh trong: khung cuối cùng được cấp phát có thể không hoàn toàn đầy. o Kích thước trang = 2,048 o Kích thước tiến trình = 72,766 bytes o 35 trang + 1,086 bytes o Phân mãnh trong 2,048 - 1,086 = 962 bytes o Trường hợp phân mãnh xấu nhất = 1 frame – 1 byte o Trung bình kích thước bị phân mãnh = 1/2 frame size o Kích thước khung nhỏ thì tốt hơn? => Kích thước bảng trang tăng o Kích thước của trang ngày càng tăng • Solaris hỗ trợ hai kích thước trang – 8 KB và 4 MB • Tách biệt không gian địa chỉ của chương trình và địa chỉ vật lý thật sự 10/28/2013 Chương 7: Main Memory38 • Bảng trang được giữ trong bộ nhớ chính. • Thanh ghi nền của bảng trang (PTBR - Page-table base register) chỉ tới bảng trang. • Thanh ghi chỉ chiều dài bảng trang (PRLR - Page-table length register) chỉ định kích thước của bảng trang. • Trong sơ đồ này, mỗi truy cập đến dữ liệu/chỉ thị yêu cầu 2 truy cập bộ nhớ: một cho bảng trang và một cho việc truy cập dữ liệu/chỉ thị. • Vấn đề truy cập bộ nhớ hai lần có thể giải quyết được bằng cách sử dụng một kiểu cache phần cứng tìm kiếm nhanh gọi là bộ nhớ kết hợp hoặc là bộ đệm tìm kiếm phụ cho việc dịch địa chỉ (TLBs - Translation look-aside buffers) • Vài TLBs lưu trữ các định danh không gian địa chỉ (address- space identifiers - ASIDs) trong mỗi mục từ của TLB – là các định danh duy nhất của mỗi tiến trình để bảo vệ cho tiến trình đó o Mặc khác nếu TLBs không hỗ trợ ASIDs, cần phải xóa tất cả TLBs khi chuyển ngữ cảnh 10/28/2013 Chương 7: Main Memory39 • TLBs thường nhỏ (64-1024 mục từ) • Khi truy cập đến mục từ trong bảng trang không có trong TLB (TLB miss), nó sẽ được nạp vào trong TLB cho lần truy cập sau o Có nhiều chính sách thay thế các mục từ trong TLB được dùng o Vài TLB cho phép một số mục từ không thể thay thế • Bộ nhớ kết hợp (Associative Memory) – tìm kiếm song song • Dịch địa chỉ (p, d) o Nếu p đang ở trong thanh ghi kết hợp, lấy ra số hiệu của khung trang. o Ngược lại, lấy ra số hiệu khung trang tương ứng từ bảng trang trong bộ nhớ10/28/2013 Chương 7: Main Memory40 Page # Frame # 10/28/2013 Chương 7: Main Memory41 • Thời gian tìm kiếm trên thanh ghi kết hợp = ε đơn vị thời gian (có thể < 10% thời gian truy cập bộ nhớ) • Giả sử chu kỳ bộ nhớ (thời gian truy cập bộ nhớ) là m • Tỉ lệ chập α (hit ratio): phần trăm số lần số hiệu trang được tìm thấy trong các thanh ghi kết hợp. Tỉ lệ này liên quan đến số lượng thanh ghi kết hợp. • Giả sử: α= 0.8, ε= 20 ns, m = 100 ns • Thời gian truy xuất thực (Effective Access Time) EAT = (m + ε) α+ (2m + ε)(1 – α) = 2m + ε–mα = 20 + 200 – 80 = 140 ns • Giả sử: α= 0.98 => EAT= 120*0.98+220*0.02=122 ns 10/28/2013 Chương 7: Main Memory42 • Việc bảo vệ bộ nhớ được cài đặt bằng cách kết hợp bit bảo vệ (protection bit) với mỗi khung để xác định khung là read-only hay read-write. • Bit hợp lệ - không hợp lệ (Valid-invalid bit) được gắn vào mỗi đầu mục trong bảng trang: o “valid” chỉ ra rằng khung tương ứng đang nằm trong không gian địa chỉ luận lý của tiến trình, và do đó là trang hợp lệ. o “invalid” chỉ ra rằng trang đó không nằm trong không gian địa chỉ luận lý của tiến trình. o Hay sử dụng page-table length register (PTLR) 10/28/2013 Chương 7: Main Memory43 10/28/2013 Chương 7: Main Memory44 • Chia sẽmã lệnh: o Một bản sao chỉ đọc của mã lệnh được chia sẽ giữa nhiều tiến trình (ví dụ: text editors, compilers, window systems) o Tương tự như nhiều luồng chia sẽ cùng một không gian tiến trình o Hữu ích cho việc giao tiếp liên tiến trình nếu trang chia sẽ có thể read-write • Mã và dữ liệu riêng: o Mỗi tiến trình có một bản sao mã và dữ liệu riêng o Các trang cho mã và dữ liệu riêng có thể xuất hiện bất kỳ đâu trong không gian địa chỉ luận lý của tiến trình 10/28/2013 Chương 7: Main Memory45 10/28/2013 Chương 7: Main Memory46 • Lượng bộ nhớ cho cấu trúc của cơ chế phân trang có thể rất lớn nếu áp dụng trực tiếp cơ chế này như trên: o Giả sử một không gian địa chỉ luận lý 32-bit trên hệ thống máy tính hiện đại o Trang có kích thước 4 KB (212) o Bảng trang có thể có 1 triệu mục từ (232/212) o Nếu mỗi mục từ là 4 bytes -> 4 MB bộ nhớ vật lý cho bảng trang o Không muốn cấp phát vùng nhớ liên tục cho bảng trang • Bảng trang phân cấp (hierachical page table). • Bảng trang được băm (hashed page table). • Bảng trang đảo (inverted page table). 10/28/2013 Chương 7: Main Memory48 • Phân không gian địa chỉ luận lý vào nhiều bảng trang. • Bảng trang phân cấp đơn giản: bảng trang hai mức (two-level page table) => Phân trang bảng trang 10/28/2013 Chương 7: Main Memory49 10/28/2013 Chương 7: Main Memory50 • Một địa chỉ luận lý trên máy 32 bit. Một trang có kích thước 4K. Địa chỉ luận lý bao gồm: o Số hiệu trang (page number): 20 bits. o Độ dời trong trang (page offset): 12 bits. • Vì bảng trang được phân trang, số hiệu trang lại được chia thành 2 phần: o Số hiệu trang dài 10 bit. o Độ dời trong trang dài 10 bit. • Do đó, một địa chỉ luận lý có dạng sau: 10/28/2013 Chương 7: Main Memory51 • Trong đó: o P1 là chỉ mục của bảng trang ngoài (outer page table). o P2 là chỉ mục của bảng trang trong (inner page table). 10/28/2013 Chương 7: Main Memory52 • Thông dụng trong các không gian địa chỉ > 32 bits. • Số hiệu của trang ảo được băm vào bảng trang. • Một mục từ của bảng trang sẽ chỉ đến một danh sách liên kết của các phần tử được băm vào cùng vị trí. • Một phần tử có ba thông tin chính: số hiệu trang ảo, số hiệu khung trang tương ứng, và con trỏ chỉ đến phần tử kế tiếp trong danh sách liên kết. • Số hiệu trang ảo được so sánh trong danh sách này để tìm ra một số hiệu trang trùng khớp. Nếu trùng khớp, thì số hiệu khung trang được lấy ra. 10/28/2013 Chương 7: Main Memory53 10/28/2013 Chương 7: Main Memory54 • Thay vì mỗi tiến trình có một bảng trang, và lưu vết tất cả các trang ảo => lưu vết tất cả các trang vật lý • Mỗi mục từ của bảng trang đại diện cho một khung trong bộ nhớ • Mục từ chứa địa chỉ ảo của trang được chứa trong vị trí bộ nhớ thực tương ứng, với thông tin về tiến trình sở hữu trang đó. • Giảm bộ nhớ cần thiết cho lưu trữ các bảng trang, nhưng tăng thời gian cần thiết để tìm kiếm bảng trang khi một tham khảo trang được yêu cầu. • Dùng bảng băm để giới hạn tìm kiếm cho một–hoặc nhiều nhất là một ít–các mục từ của bảng trang. o TLB có thể giúp tăng tốc độ truy cập 10/28/2013 Chương 7: Main Memory55 10/28/2013 Chương 7: Main Memory56

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_he_dieu_hanh_chuong_7_main_memory_ha_duy_an.pdf
Tài liệu liên quan