Bài giảng Hệ điều hành (Operating Systems) - Nguyễn Phan Trung - Chương 6: Memory Management
Mục đích:
Nắm được các khái niệm cơ sở về quản lý bộ nhớ, các kiểu địa chỉ nhớ và cách chuyển đổi.
Yêu cầu:
Hiểu được cơ chế Overlay và Swapping cũng như mô hình quản lý bộ nhớ thực
Chương 6 Memory management Mục đích và yêu cầu Mục đích: Nắm được các khái niệm cơ sở về quản lý bộ nhớ, các kiểu địa chỉ nhớ và cách chuyển đổi. Yêu cầu: Hiểu được cơ chế Overlay và Swapping cũng như mô hình quản lý bộ nhớ thực Nội dung Khái niệm cơ sở chúng ta thấy rằng CPU có thể được dùng chung bởi nhiều process. Do kết quả định thời CPU, chúng ta có thể cải tiến hiệu suất của CPU lẫn tốc độ đáp ứng của user. Để thực hiện việc làm tăng hiệu quả này chúng ta phải lưu giữ vài quá trình trong bộ nhớ; tức là chúng ta phải dùng bộ nhớ dùng chung. bộ nhớ là trung tâm họat động của hệ thống máy tính hiện đại. Bộ nhớ gồm một dãy lớn của các words hoặc các byte, mỗi cái đó đều có địa chỉ của riêng chúng. Khái niệm cơ sở Khái niệm cơ sở Thông thường, một chương trình cư trú trên đĩa như một file thực thi nhị phân, Chương trình phải được mang vào trong bộ nhớ và được đặt bên trong một quá trình để cho nó thực thi.Tùy thuộc vào sự quản lý bộ nhớ đang dùng. Quá trình có thể được duy trì giữa đĩa và bộ nhớ trong khi thực thi. Một nhóm quá trình trên đĩa đang chờ để được mang vào trong bộ nhớ hình thành hàng đợi(input queue). Thủ tục bình thường là chọn một quá trình trong hàng đợi và nạp quá trình đó vào trong bộ nhớ. Khi quá trình thực thi nó truy xuất lệnh và dữ liệu từ bộ nhớ. Cuối cùng là quá trình kết thúc và không gian bộ nhớ của nó được khai bào trả lại hệ thống. Các kiểu địa chỉ nhớ Nạp chương trình vào bộ nhớ (t.t) Cơ chế thực hiện Linking Logical vs. Physical Address Space Tập hợp tất cả các địa chỉ luận lý (địa chỉ ảo vitual address) tạo nên ko gian địa chỉ luận lý Tập hợp tất cả các địa chỉ vật lý (địa chỉ thực) tạo nên ko gian địa chỉ vật lý Các địa chỉ logic (ảo) và vật lý là như nhau trong các giai đoạn liên kết địa chỉ compiler time và load time; chúng khác nhau trong execcution time. Chuyển đổi địa chỉ nhớ Chuyển đổi địa chỉ nhớ (t.t) Chuyển đổi vào thời điểm dịch Chuyển đổi vào thời điểm nạp Chuyển đổi địa chỉ (t.t) Memory-Management Unit (MMU) Là thiết bị phần cứng địa chỉ ảo tới địa chỉ vật lý. Trong lược đồ MMU, giá trị trong thanh ghi định vị (relocation register) được cộng với tất cả địa chỉ được sinh ra bởi process của user tại thời điểm nó được gửi tới bộ nhớ. Chương trình của user làm việc với các địa chỉ luân lý nó ko bao giờ nhận ra các địa chỉ vật lý thực Định vị động sử dụng thanh ghi định vi Dynamic Loading Process chỉ được nạp vào bộ nhớ khi nó được gọi=> tăng độ hiệu dụng cua hệ thống (memory utilization) bởi vì các process ít sử dụng sẽ ko bao giờ chíếm chỗ trong hệ thống. Sử dụng ko gian bộ nhớ tốt hơn, process ko dùng đến thì ko bao giờ được nạp Hữu ích trong trường hợp số lượng lớn mã cần xử lý nhưng hiếm khi xuất hiện (ví dụ các thủ tục xử lý lô các thủ tục xử lý lỗi), Ko yêu cầu sự hỗ trợ đặc biệt từ Os. (Được thực hiện thông qua thiết kế chương trình của user, Os chủ yếu cung cấp 1 số thủ tục hỗ trợ tạo điều kiện dễ dàng cho user) Dynamic Linking Việc liên kết hõan lại đến execution time Đọan mã nhỏ, stub được sử dụng để định vị thường trình thư viện cư trú trong bộ nhớ (memory-resident library routime) thích hợp. Khi được thực hiện, stub kiểm tra thường trình cần đến có trong bộ nhớ. Của process chưa, nếu chưa thì chương trình nạp thường trình vào bộ nhớ. Nếu rồi, stub tự thay thế chính nó bởi địa chỉ của thường trình rồi thực hiện thường trình đó. Liên kết động đặc biệt hữu dụng đối với các thư viện chương trình, nhất là trong việc cập nhật thư viện (vd sửa lỗi). Cơ chế Overlays Cho phép một quá trình có kích thước lớn hơn bộ nhớ cấp cho nó được thực hiện. Cơ chế Overlay Cơ chế Overlay (t.t) Swapping (hoán đổi) Một process có thể được swap(hoán đổi) ra khỏi bộ nhớ chính để tới nơi lưu trữ phụ (backing store) và sau đó, được đưa trở lại bộ nhớ để thực thi tiếp. Backing store - ổ đĩa đủ lớn để cung cấp bản sao của tất cả hình ảnh bộ nhớ cho tất cả user, phải cung cấp sự truy nhập trực tiếp tới các ảnh bộ nhớ này Roll out, roll in – biến thể hoán đổi được sử dụng cho thuật giải lập lịch dựa trên mức ưu tiên (priority-based scheduling); process có mức ưu tiên thấp bị thay ra để process có mức ưu tiên cao hơn được nạp vào và thực hiện. Phần lớn thời gian swap là thời gian chuyển dữ liệu, tổng thời gian chuyển tỉ lệ thuận với dung lượng bộ nhớ hoán đổi. Sự hoán đổi khác nhau ở các Os UNIX, Linux, Windows. Minh hoạ cơ chế Swapping Phân phối bộ nhớ liên tiếp Bộ nhớ chính được chia thành 2 phần: Vùng nhớ thấp : chứa Os, bảng vecter ngắt. Vùng nhớ cao: chứa các process của user Phân phối đơn partition (single-partition allocation) Phân phối đa partition (Multiple-partition allocation) Phân phối đơn partition (single-partition allocation) Lược đồ thanh ghi định vị được sử dụng để bảo vệ các process của uer từ các process khác và từ sự thay đổi dữ liệu và mã Os Relocation register chứa giá trị địa chỉ vật lý nhỏ nhất: limit register chứa dải các địa chỉ logic – mỗi địa chỉ logic phải nhỏ hơn limit register. Phân phối đa partition(Multiple-partition allocation) Hole – khối bộ nhớ khả dụng; các hole có kích thước khác nhau nằm rải rác khắp bộ nhớ. Khi 1 process đến, nó được phân phối bộ nhớ từ 1 hole đủ lớn. Os duy trì thong tin về: Các vùng nhớ đã được phân phối – allocated partitions Các vùng nhớ còn tự do – freepartitions (hole) Phân mảnh (Fragmentation) Sự phân mảnh Phân mảnh ngọai (External fragmentation) Tổng ko gian bộ nhớ thực tế đủ đáp ứng yêu cầu, nhưng nó ko nằm kề nhau. Phân mảnh nội (Internal fragmentation) bộ nhớ được phân phối lớn hơn so với bộ nhớ được yêu cầu. Phần kích thước khác biệt ko được sử dụng. Làm giảm phân mảnh ngoại bằng cách kết khối lại (compaction): Di chuyển các nội dung bộ nhớ để đặt tất cả các vùng nhớ tự do lại với nhau thành một khối lớn. Kết khối chỉ có thể tiến hành nếu sự tái định vị là động, và nó được thực hiện trong execution time. Phân mảnh nội Fixed Partitioning Phân mảnh ngọai Giải pháp cho vấn đề phân mảnh ngọai là kết khối (compation). Mà mục tiêu của nó là luôn luôn xê dịch nội dung bộ nhớ để đặt tất cả phần còn trống lại với nhau trong một khối lớn. Việc kết khối không phải lúc nào cũng thực hiện được. Chiến lược Placement Chiến lược Placement (t.t) Dynamic Partitioning Chiến lược Plecement Phân trang -paging Ko gian địa chỉ thực (vật lý) của 1 process có thể ko liên tục nhau. Bộ nhớ thực được chia thành các khối có kích thước cố định là bội số của 2 (512 bytes – 16MB) gọi là frame. Bộ nhớ logic cũng được chia thành các khối có cùng kích thước gọi là trang nhớ (page). Os luôn theo dõi tất cả các frame còn trống. Để chạy chương trình có kích thước n pages, cần phải tìm n frames còn trống và nạp chương trình. Os cần thiết lập bảng phân trang (page table) để chyển các địa chỉ logic thành các địa chỉ thực. Cơ chế phân trang khiến bộ nhớ bị phân mảnh nội, tuy nhiên lại khắc phục được phân mảnh ngọai. Lược đồ biên dịch địa chỉ Địa chỉ được tạo ra bởi CPU được chia thành: Page number (p) – được sử dụng làm chỉ mục trong page table. Chứa địa chỉ cơ sở (base address) của mỗi trang trong bộ nhớ vật lý. Page offset (d) – kết hợp với địa chỉ cơ sở để xác định địa chỉ bộ nhớ vật lý được gởi đến bộ nhớ. Lược đồ biên dịch địa chỉ Ví dụ phân trang Các Frame rỗi Hoạt động của Page Table Page table được lưu trong bộ nhớ chính Page-table register (PTBR) chỉ tới page table Page-table length register (PRLR) cho biết kích thước của page-table. Trong lược đồ phân trang, mọi sự truy nhập lệnh/dữ liệu yêu cầu 2 lần truy nhập bộ nhớ: 1 cho page table và 1 cho lệnh/data, truy nhập chậm hơn. Vấn đề 2 lần truy nhập bộ nhớ có thể được giải quyết bằng cách sử dụng 1 bộ nhớ cache tra cứu nhanh đặc biệt gọi là bộ nhớ liên kết – associative memory (TLB) Phân trang với TLB Phân đoạn - Segmentation Lược đồ quản lý bộ nhớ giúp user nhìn thấy bộ nhớ. Thực tế, 1 chương trình là tập hợp các phân đoạn, mỗi đoạn là một đơn vị luận lý như là : main program, proceduce function method object local variables, global variables. common block stack. Chương trình dưới góc nhìn của user Góc nhìn logic của sự phân đọan Kiến trúc phân đọan Địa chỉ logic gồm 2 thành phần: ; Segment table – tương tự bảng phân trang, mỗi mục của bảng gồm có: Base – chứa địa chỉ vật lý đầu tiên của đoạn trong bộ nhớ. Limit – xác định độ dài của đọan. Segment-table base register (STBR): trỏ tới vị trí của bảng phân đọan trong bộ nhớ Segment-table length register (SLTR): xác định số đọan mà một chương trình sử dụng: => một chỉ số segment s là hợp lệ nếu s<SLTR Kiến trúc phân đọan (t.t) Phân đọan: Các đoạn có các kích thước khác nhau Định vị động được thực hiện bởi bảng phân đoạn Phân phối bộ nhớ Giải quyết phân phối bộ nhớ động Frist fit/best fit Có sự phân mảnh ngọai Lược đồ phân đọan(phần cứng hỗ trợ phân đọan) Ví dụ về cơ chế phân đọan Kết hợp phân đọan với phân trang MULTICS Bộ nhớ được phân thành các đọan, sau đó mỗi đoạn lại được phân trang Hệ thống MULTIC giải quyết được vấn đề phân mảnh ngoại và thời gian tìm kiếm dài. Giải pháp khác so với phân đoạn ở chỗ mỗi mục của bảng phân đọan ko chứa địa chỉ cơ sở của đọan mà chứa địa chỉ cơ sở của bảng phân trang của đọan đó. Lược đồ MULTICS Lược đồ MULTICS của Intel 80386 Câu hỏi và bài tập Nắm được cách đặt địa chỉ luận lý và vật lý Không gian địa chỉ luận lý và không gian địa chỉ vật lý? Phân biệt sự giống nhau và khác nhau của cơ chế overlay và swapping Có mấy cách chuyển đổi địa chỉ nhớ Phân mảnh nội là gì? Phân mảnh ngoại là gì? giải thích sự khác nhau giữa phân mảnh nội và phân mảnh ngọai Kết khối (compaction) chỉ được thực hiện tại thời điểm nào? Page (trang) là gì? Frame là gì? miêu tả các giải thuật cấp phát sau: First fit, Best fit, Worst fit. Nắm được cơ chế phân trang và phân đọan. Tại sao các kích cỡ của trang luôn là lũy thừa của 2. làm bt 9.5 trong sgk
File đính kèm:
- Bài giảng Hệ điều hành (Operating Systems) - Nguyễn Phan Trung - Chương 6 Memory Management.ppt