BÀI 7 QUẢN LÍ BỘ NHỚ pdf

12 593 2
BÀI 7 QUẢN LÍ BỘ NHỚ pdf

Đ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

BÀI 7 QUẢN BỘ NHỚ Group6789.com I. KHÁI NIỆM - QLBN là công việc của HĐH với sự hỗ trợ của phần cứng nhằm phân phối, sắp xếp các P trong bộ nhớ sao cho hiệu quả - Mục tiêu: chứa càng nhiều P càng tốt - Kernel chiếm một phần cố định của bộ nhớ, phần còn lại chia cho các P II. CÁC KIỂU ĐỊA CHỈ NHỚ - Đ ị a ch ỉ v ậ t lý (Physical Ad d ress): là địa chỉ thực trong bộ nhớ chính - Địa chỉ luận lý (Logical Address): là một địa chỉ nhớ được diễn tả trong một trương trình (còn gọi là địa chỉ ảo)  Địa chỉ tương đối (Relative adress): là 1 kiểu địa chỉ luận lý (địa chỉ khả tái định vị) trong đó địa chỉ được biểu diễn tương đối so với một vị trí xác định nào đo trong chương trình  Địa chỉ tuyệt đối (absolute address): địa chỉ tương ứng với địa chỉ thực Cách nạp chương trình vào bộ nhớ. - Linker kết hợp các Object module tạo thành file nhị phân khá phức tạp được gọi là load module - Sau đó bộ Loader có nhiệm vụ nạp load module vào bộ nhớ chính. Cơ chế thực hiện Linking - Thay vì các Module Object được tách ra ban đầu, chúng ta sẽ gộp chúng lại thành một load module bằng cách định vị lại địa chỉ tương đối của từng Object Module. III. CHUYỂN ĐỔI ĐỊA CHỈ NHỚ - Chuy ể n đ ổ i đ ị a ch ỉ là một quá trình ánh x ạ một địa chỉ từ không gian địa chỉ này sang không gian địa chỉ khác. - Các thời điểm mà địa chỉ lệnh (instruction) và địa chỉ dữ liệu (data) có thể biến thành địa chỉ vật lý 1. Compile time Ta có i là instruction (địa chỉ lệnh) và j là địa chỉ dữ liệu. i và j được chuyển đổi thành các địa chỉ thực ngay sau khi Compile nếu ta biết được địa chỉ vật lý bộ nhớ của chương trình Khuyết điểm:phải biên dịch lại nếu thay đổi địa chỉ nạp chương trình (thay đổi địa chỉ vật lý trong bộ nhớ) 2. Load time Ta có i và j được chuyển đổi thành các địa chỉ khả tái định vị vào thời điểm Compile. Vào thời điểm Loading, loader phải chuyển đổi các địa chỉ khả tái định vị này thành địa chỉ thực dựa trên một địa chỉ nền (base address). Khuyết điểm: địa chỉ nền thay đổi  phải reload vì ta có địa chỉ thực của chương trình đã được tính toán vào thời điểm nạp chương trình 3. Excution time (thời gian thực thi): - Nếu trong quá trình thực thi, process có thể di chuyển từ segment (khúc) này đến segment khác trong bộ nhớ thì quá trình chuyển đổi địa chỉ bộ nhớ bị gián đoạn - Cần sự hỗ trợ của phần cứng để ánh xạ địa chỉ. - Có các cơ chế swapping, paging, segmentation. IV. DYNAMIC LINKING VS DYNAMIC LOADING - Dynamic linking: là quá trình link đến một module ngoài (external module) sau khi đã tạo xong load module Ví dụ trong windows: module ngoài là các file .dll còn trong linux là .so - Load module chứa các stub(gốc) tham chiếu (refer) đến routine (function) của external module - Khi stub được thực thi lần đầu (tức là khi process gọi routine), stub sẽ nạp routine vào bộ nhớ, tự thay thế địa chỉ của routine và routine được thực thi - Stub cần sự hỗ trợ của OS để biết được routine có được nạp vào bộ nhớ hay chưa - Ưu điểm của Dynamic linking: External Module thường là 1 thư viện cung cấp các tiện ích của OS. Các chương trình có thể dùng chúng mà không cần sửa đổi hay biên dịch lại. mà không cần sửa đổi hay biên dịch lại. Code sharing: External module chỉ cần nạp vào bộ nhớ một lần. các process cần dùng external module này thì cùng chia sẻ code giúp tiết kiệm không gian nhớ và ổ đĩa. Dynamic linking cần sự hỗ trợ của OS để biết được phần thủ tục nào đó là phần mã chia sẻ, hay là phần mã của riêng 1 process. V. OVERLAY AND SWAPPING Overlay(Phủ lắp) - Mục tiêu: chỉ giữ lại những lệnh or data cần thiết, giải phóng các vùng dữ liệu chưa hoặc không cần dùng. - Phù hợp với các process có kích thước lớn hơn so với bộ nhớ mà nó được cấp. - Chế độ user mode. Không cần Can thiệp từ OS. - Trong hình có 2 phần (pass 1+2).Vùng nhớ còn 90Kb. Không thể nhét 2 thằng vào được. Do đó từng thằng sẽ vào, sau khi thằng 1 được thực hiện xong, nó giải phóng, và thằng tiếp theo sẽ được vào. SWAPPING - Một process có thể tạm thời bị swap ra ngoài bộ nhớ chính và lưu trữ ở một bộ hệ thống lưu trữ khác. Sau đó sẽ được nạp lại để tiếp tục quá trình. (được swap theo Round-Robin và Priority- based scheduling) - Hiện nay ít hệ thống sử dụng cơ chế swapping trên. VI. PHÂN MẢNH (Fragmentation) Phân mảnh ngoại (external fragmentation) - Kích thước không gian nhớ không đủ để thỏa mãn yêu cầu cấp phát, tuy nhiên không gian nhớ này không liên tục. Có thể dùng cơ chết kết nối để gom chúng lại thành một vùng nhớ Phân mảnh nội (internal fragmentation) - Kích thước vùng nhớ được cấp phát có thể lớn hơn vùng nhớ được yêu cầu. - Hiện tượng phân mảnh nội xảy ra khi bộ nhớ thực được chia thành các khối có kích thước cố định và các process được cấp phát theo đơn vị khối 6.1 Phân vùng bộ nhớ cố định (Fixed partitioning) - Bộ nhớ chính được chia thành nhiều phần (partitions) có kích thước bằng nhau - Process nào có size < hoặc == kích thước partition đó thì được vào. - Nếu chương trình có kích thước lớn hơn partition thì phải dùng cơ chế overlay - Xảy ra hiện tượng phân mảnh nội  Không hiểu quả Chiến lược Placement TH1: Các Partitions có kích thước bằng nhau: - Nếu partition nào trống, process sẽ được nạp vào partition đó - Nếu không, tìm trong bộ nhớ có process nào đang bị blocked, sau đó tiến hành swap process đó ra bộ nhớ phụ và thay process mới vào TH2: Các partitions có kích thước không bằng nhau:  Giải pháp 1: - Tạo hàng đợi cho mỗi partition - Gán mỗi process phù hợp với partitions - ĐƯỢC LỢI: giảm thiểu phân mảnh nội. - VÂN ĐỀ: có thể có một số hàng đợi không chứa Process nào.  Giải pháp 2: - Cho 1 hàng đợi chung cho mọi partitions. - Khi cần nạp một process vào bộ nhớ chính, chọn partition còn trống và hợp size nhất. 6.2 Phân vùng bộ nhớ động (Dynamic Partitions) - Số lượng partitions không cố định và kích thước của chúng khác nhau - Mỗi process được cấp phát chính xác bộ nhớ cần thiết. - Nhận xét  đến một lúc nào đó, bộ nhớ sẽ không đủ để cấp phát cho 1 process mới nên gây ra hiện tượng phân mảnh ngoại Chiến lược placement 4 Chiến lượt cơ bản: - Best – fit:Chọn khối nhớ trống nhỏ nhất: - First – fit: Chọn khối nhớ trống phù hợp đầu tiên kể từ đầu bộ nhớ - Next – fit: Chọn khối nhớ trống phù hợp đầu tiên kể từ vị trí cấp phát cuối cùng - Worst – fit: chọn khôi nhớ trống lớn nhất VII. CƠ CHẾ PHÂN TRANG (Paging) - RAM được chia thành các frame. - Bộ nhớ luận lý (không gian địa chỉ luận lý) là tập địa chỉ luận lý mà một process bất kì sinh ra được chia thành các page - Bảng phân trang (pagetable) ánh xạ địa chỉ luận th ành địa chỉ thực A Chuyển đổi địa chỉ trong PAGING Nhìn vào hình vẽ ta có: Địa chỉ luận bao gồm : - p: là số hiệu trang (page number) - d: Địa chỉ tương đối trong trang (Page offset) Nếu kích thước của Không gian địa chỉ ảo là 2 m và kích thước của mỗi trang là 2 n thì ta sẽ có được tổng cộng là 2 m-n trang. Tức là lúc đó ta cũng sẻ có được một Page Table có chừng ấy số trang. B Cài đặt bảng trang Bảng phân trang được lưu trữ ở trong bộ nhớ chính. - Ứng với 1 process sẽ có 1 bảng phân trang. - Thanh ghi Page-Table base (PTBR) trỏ đến bảng phân trang. - Thanh ghi Page- Table Length (PTLR) biểu thị kích thước của bảng phân trang Dễ dàng thấy được sau khi có địa chỉ logic PTBR sẽ trỏ đến page trong page table và kết hợp với page offset để cho ra địa chỉ vật lý C EAT(Effective Acess Time) - Thời gian tìm kiếm (lookup) trong TLB là :  - Thời gian 1 chu trình truy xuất bộ nhớ (memory acess) là: x - Hit ratio: tỉ số giữa số lần chỉ số trang được tìm thấy trong TLB với số lần truy xuất khởi nguồn từ CPU (kí hiệu ) - Khi chỉ số trang có trong TLB (hit) : +x - Khi chỉ số trang không có tỏng TLB (miss): +x+x EAT= ( + x) + ( + 2x)(1 – ) =(2 – )x +  Trong đó: ( + x) : là tích của Hitraito với thời gian khi chỉ số trang có trong TLB. ( + 2x)(1 – ) : là tích của thời gian khi chỉ số trang không có trong TLB với 1-Hitraito. Ví dụ: đơn vị tính bằng nano giây - Look up: 190; - Memory access 15; - Hitraito:0.8 Lúc đó EAT = (190+15)*0.8 +(15x2+190)*(1-0.8)=208 D Bảng Trang Đa Cấp - Bao gồm bảng trang cấp 1 và bảng trang cấp 2. - Bảng trang cấp 1 (outer-page table)chứa các địa chỉ của bảng trang cấp 2. - Bảng trang cấp 2 (page table) là tập hợp các page ) - E. Bảo vệ bộ nhớ - Gắn frame (khung trang) với các bit bảo vệ được giữ trong bảng phân trang. - Các bit này biểu thị các thuộc tính: read-only, read-write, execute- only - Ngoài ra còn có một valid/invalid bit gắn với mỗi entry (mục) trong bảng phân trang. Nhận xét:Cơ chế phân trang làm không gian địa chỉ ảo tách biệt hoàn toàn với không gian bộ nhớ thức. nghĩa là phải thực hiện phép ánh xạ. VIII. PHÂN ĐOẠN (Segmentation) - Thực tế cho thấy, dưới con mắt của người dùng, chương trình được chia thành các đoạn. Mỗi đoạn (segment) là một đơn vị luận của chương trình. - Thông thường khi 1 chương trình được biên dịch. Trình biên dịch sẽ tự động xây dựng các segment. Sau đó trình loader sẽ gán mỗi segment một số định danh riêng 1. Cơ chế phân đoạn: - Không gian địa chỉ ảo là một tập các segment, mỗi đoạn có tên và kích thước riêng. - Địa chỉ luận lý: được định vị bằng tên và độ dời bên trong đoạn đó (tương tự như paging) 2. Cài đặt phân đoạn (Segment Hardware): - Địa chỉ luận lý là một cặp giá trị (segment number, offset). - Bảng phân đoạn (segment table) chứa:  Base: chứa địa chỉ khởi đầu của segment trong bộ nhớ  Limit: xác định kích thước segment. - STBR (Segment table base Register): Thanh ghi trỏ đến vị trí bảng phân đoạn trong bộ nhớ. - STLR (Segment table Length Register): Thanh ghi mô tả số lượng segment của 1 chương trình Vd: Segment 1: có địa chỉ thưc trong bộ nhớ vật lý là 6300 và độ dài 400. Segment 2: có địa chỉ thực trong BNVL là 4300 và kính thước 1100. PHẦN CỨNG THAM GIA HỖ TRỢ PHÂN ĐOẠN(NGƯỢC LẠI VỚI PAGING) [...]... các đoạn tương tự như chia sẻ trang: dùng chung cùng 1 data nào đó để tiết kiệm bộ nhớ - Mục đích: giải quyết được những khuyết điểm, phát huy ưu điểm của cả hai hình thức Vấn đề của phân đoạn: Nếu một đoạn quá lớn thì nó có thể không nạp đươc vào bộ nhớ - Ý tưởng: chia đoạn thành các page, khi đó ta chỉ cần giữ trong bộ nhớ các page của đoạn hiện đang cần - Hình vẽ cho chúng ta thấy giả sử s= 5,p=4,d=234... được chia ra thành các trang Muốn truy cập trang p=4 ta phải xác định được vị trí của page đó (bằng cách sử dụng PTBR) Sau đó kết hợp với d=234 (page offset) ta sẽ được vị trí chính xác của nó trong bộ nhớ vật lý . BÀI 7 QUẢN LÍ BỘ NHỚ Group 678 9.com I. KHÁI NIỆM - QLBN là công việc của HĐH với sự hỗ trợ của phần cứng nhằm phân phối, sắp xếp các P trong bộ nhớ sao cho hiệu quả. chiếm một phần cố định của bộ nhớ, phần còn lại chia cho các P II. CÁC KIỂU ĐỊA CHỈ NHỚ - Đ ị a ch ỉ v ậ t lý (Physical Ad d ress): là địa chỉ thực trong bộ nhớ chính - Địa chỉ luận. chương trình vào bộ nhớ. - Linker kết hợp các Object module tạo thành file nhị phân khá phức tạp được gọi là load module - Sau đó bộ Loader có nhiệm vụ nạp load module vào bộ nhớ chính.

Ngày đăng: 29/03/2014, 08:20

Từ khóa liên quan

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

Tài liệu liên quan