Bài giảng lập trình hệ điều hành chương 7 main memory

57 642 0
Bài giảng lập trình hệ điều hành  chương 7   main memory

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 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 Memory • Chương trình phải mang vào nhớ đặt vào tiến trình để thực thi • Bộ nhớ ghi hai thiết bị lưu trữ mà CPU truy cập trực tiếp • Đơn vị nhớ (memory unit) nhìn thấy luồng địa + yêu cầu đọc, hay địa + liệu yêu cầu ghi • Các ghi truy cập với chu kỳ CPU (hay hơn) • Truy cập nhớ cần nhiều chu kỳ CPU • Cache nằm nhớ ghi • Các thao tác nhớ cần đảm bảo xác 10/28/2013 Chương 7: Main Memory • Một cặp ghi (base) giới hạn (limit) xác định không gian địa tiến trình nhớ • CPU phải kiểm tra tất truy cập nhớ từ không gian người dùng nằm khoảng giới hạn ghi giới hạn 10/28/2013 Chương 7: Main Memory 10/28/2013 Chương 7: Main Memory • Tập hợp chương trình đĩa, sẵn sàng mang vào nhớ để thực thi hình thành hàng đợi nhập (input queue) o Nếu hỗ trợ nào, chương trình phải nạp vào từ địa chỉ: 0000 • Hầu hết hệ thống máy tính cho phép tiến trình nằm phần nhớ vật lý • Các địa dạng thức khác giai đoạn khác chương trình: o Các địa tượng trưng chương trình nguồn o Các địa tái định vị biên dịch o Các địa tuyệt đối nạp (loading) nối kết (linking) => Mỗi giai đoạn, việc gắng kết ánh xạ từ không gian địa sang không gian địa khác 10/28/2013 Chương 7: Main Memory • Việc gắn kết địa (address binding) thị liệu vào địa nhớ diễn giai đoạn khác nhau: o Thời điểm biên dịch (compile time): Nếu vị trí vùng nhớ biết trước, sinh mã lệnh tuyệt đối (absolute code); nhiên chương trình phải biên dịch lại vị trí bắt đầu vùng nhớ thay đổi o Thời điểm nạp (load time): trình biên dịch phải sinh mã lệnh tái định vị (relocatable code) biết vị trí vùng nhớ thời điểm biên dịch Trong trường hợp việc gắng kết bị trì hoãn thời điểm nạp Chương trình phải nạp lại vị trí bắt đầu vùng nhớ thay đổi o Thời điểm thực thi (execution time): Việc gắn địa bị trì hoãn thời điểm thực thi tiến trình phải di chuyển từ phân đoạn nhớ (segment) đến phân đoạn nhớ khác thực thi Cần thêm hỗ trợ phần cứng để ánh xạ địa chỉ(ví dụ ghi sở (base) giới hạn (limit)) 10/28/2013 Chương 7: Main Memory 10/28/2013 Chương 7: Main Memory • Cơ chế cho phép không gian địa luận lý tách biệt khỏi không gian địa vật lý, trọng tâm chế quản lý nhớ o Địa luận lý (logical address): sinh CPU, xem địa ảo (virtual address) o Địa vật lý (physical address): địa nhìn thấy quản lý nhớ • Địa luận lý vật lý sơ đồ gắn kết địa thời điểm biên dịch nạp chương trình • Địa luận lý địa vật lý khác sơ đồ gắn kết địa thời điểm thực thi 10/28/2013 10 Chương 7: Main Memory • Việc bảo vệ nhớ cài đặt cách kết hợp bit bảo vệ (protection bit) với khung để xác định khung read-only hay read-write • Bit hợp lệ - không hợp lệ (Valid-invalid bit) gắn vào đầu mục bảng trang: o “valid” khung tương ứng nằm không gian địa luận lý tiến trình, trang hợp lệ o “invalid” trang không nằm không gian địa luận lý tiến trình o Hay sử dụng page-table length register (PTLR) 10/28/2013 43 Chương 7: Main Memory 10/28/2013 44 Chương 7: Main Memory • Chia mã lệnh: o Một đọc mã lệnh chia nhiều tiến trình (ví dụ: text editors, compilers, window systems) o Tương tự nhiều luồng chia không gian tiến trình o Hữu ích cho việc giao tiếp liên tiến trình trang chia read-write • Mã liệu riêng: o Mỗi tiến trình có mã liệu riêng o Các trang cho mã liệu riêng xuất đâu không gian địa luận lý tiến trình 10/28/2013 45 Chương 7: Main Memory 10/28/2013 46 Chương 7: Main Memory • Lượng nhớ cho cấu trúc chế phân trang lớn áp dụng trực tiếp chế trên: o Giả sử không gian địa luận lý 32-bit hệ thống máy tính đại o Trang có kích thước KB (212) o Bảng trang có triệu mục từ (232/212) o Nếu mục từ bytes -> MB 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 băm (hashed page table) • Bảng trang đảo (inverted page table) 10/28/2013 48 Chương 7: Main Memory • Phân không gian địa 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 49 Chương 7: Main Memory 10/28/2013 50 Chương 7: Main Memory • • • Một địa luận lý máy 32 bit Một trang có kích thước 4K Địa luận lý bao gồm: o Số hiệu trang (page number): 20 bits o Độ dời trang (page offset): 12 bits Vì bảng trang phân trang, số hiệu trang lại chia thành phần: o Số hiệu trang dài 10 bit o Độ dời trang dài 10 bit Do đó, địa luận lý có dạng sau: • Trong đó: o P1 mục bảng trang (outer page table) o P2 mục bảng trang (inner page table) 10/28/2013 51 Chương 7: Main Memory 10/28/2013 52 Chương 7: Main Memory • Thông dụng không gian địa > 32 bits • Số hiệu trang ảo băm vào bảng trang • Một mục từ bảng trang đến danh sách liên kết phần tử băm vào 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, trỏ đến phần tử danh sách liên kết • Số hiệu trang ảo so sánh danh sách để tìm số hiệu trang trùng khớp Nếu trùng khớp, số hiệu khung trang lấy 10/28/2013 53 Chương 7: Main Memory 10/28/2013 54 Chương 7: Main Memory • Thay tiến trình có bảng trang, lưu vết tất trang ảo => lưu vết tất trang vật lý • Mỗi mục từ bảng trang đại diện cho khung nhớ • Mục từ chứa địa ảo trang chứa vị trí nhớ thực tương ứng, với thông tin tiến trình sở hữu trang • Giảm nhớ cần thiết cho lưu trữ bảng trang, tăng thời gian cần thiết để tìm kiếm bảng trang tham khảo trang 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 ít–các mục từ bảng trang o TLB giúp tăng tốc độ truy cập 10/28/2013 55 Chương 7: Main Memory 10/28/2013 56 Chương 7: Main Memory [...]... thước của không gian địa chỉ là 2m • Kích thước của trang là 2n 10/28/2013 33 Chương 7: Main Memory 10/28/2013 34 Chương 7: Main Memory 10/28/2013 35 Chương 7: Main Memory • 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 36 Chương 7: Main Memory ... 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 27 Chương 7: Main Memory 10/28/2013 28 Chương 7: Main Memory 10/28/2013 29 Chương 7: Main Memory • 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)... 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 13 Chương 7: Main Memory • 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... 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 11 Chương 7: Main Memory 10/28/2013 12 Chương 7: Main Memory • • 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... đượ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 17 Chương 7: Main Memory 18 10/28/2013 Chương 7: Main Memory • 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... vật lý 10/28/2013 19 Chương 7: Main Memory 10/28/2013 20 Chương 7: Main Memory • 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... 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 32 Chương 7: Main Memory • Địa chỉ... đượ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,... 15 Chương 7: Main Memory 10/28/2013 16 Chương 7: Main Memory • 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... 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 30 Chương 7: Main Memory • 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):

Ngày đăng: 05/05/2016, 17:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan