1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Hệ điều hành - Chương 6: Quản lý bộ nhớ

72 24 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 72
Dung lượng 723,58 KB

Nội dung

Chương 6 Quản lý bộ nhớ thuộc bài giảng Hệ điều hành nêu các nội dung chính tổng quan về bộ nhớ tiến trình, các vấn đề về bộ nhớ, các mô hình chuyển đổi địa chỉ, vai trò quản lý bộ nhớ trong hệ điều hành, các mô hình tổ chức bộ nhớ.

Bài giảng : Quản lý nhớ Tổng quan Nhu cầu nhớ tiến trình Các vấn đề nhớ Chuyển đổi địa Các công đoạn Các mô hình chuyển đổi địa Vai trò Quản lý nhớ HĐH Các yêu cầu Các mô hình tổ chức nhớ Mô hình Liên tục Mô hình Không liên tục 12/2/2005 Trần Hạnh Nhi Tổng quan : Nhu cầu nhớ tiến trình Chương trình cần nạp vào Bộ nhớ để thi hành CPU truy xuất trực tiếp Main Memory Chương trình nạp vaò BNC tổ chức theo cấu trúc tiến trình tương ứng Ai cấp phát BNC cho tiến trình ? Chương trình nguồn sử dụng địa symbolic Tiến trình thực thi truy cập điạ thực BNC Ai chuyển đổi địa ? HĐH Bộ phận Quản lý Bộ nhớ Mô hình tổ chức ? 12/2/2005 Cơ chế hỗ trợ Trần Hạnh Nhi Chiến lược thực Tổng quan : Các vấn đề Bộ nhớ Cấp phát Bộ nhớ : Uniprogramming : Không khó Multiprogramming : BNC giới hạn, N tiến trình ? Bảo vệ ? Chia sẻ ? Tiến trình thay đổi kích thước ? Tiến trình lớn BNC ? Chuyển đổi địa tiến trình Thời điểm chuyển đổi địa ? Công thức chuyển đổi ? Phụ thuộc vào Mô hình tổ chức BNC ? Cần hỗ trợ phần cứng ? Tiến trình thay đổi vị trí BNC ? 12/2/2005 Trần Hạnh Nhi Ví dụ OS Môi trường đa nhiệm gcc nachos emacs 0x9000 0x7000 0x4000 0x3000 0x0000 Nếu nachos cần thêm không gian ? Nếu nachos có lỗi thực thao tác ghi vào địa 0x7100? Khi gcc biết thường trú 0x4000? Nếu emacs cần nhiều nhớ dung lượng vật lý có? 12/2/2005 Trần Hạnh Nhi Các bước chuyển đổi chương trình C program: test.c Compiler Object:test.o Linker lib.o Executable: test.exe Loader Memory 12/2/2005 Trần Hạnh Nhi Các bước chuyển đổi source program -> exe A.C int x; int y; x = 12; y = 5; F(); A.O // x // y // [0] = 12; // [2] = 5; // jmp F //external // object B.C F() { printf(“Hi”); } B.O -2 // F() … // F() // x // y // [3] = 12; // [5] = 5; // jmp Test.exe OS ? // F() ? // x ? // y ? // [?] = 12; ? // [?] = 5; ? // jmp ? Thuật ngữ Địa logic – gọi địa ảo , tất địa xử lý tạo Địa physic - địa thực tế mà trình quản lý nhớ nhìn thấy thao tác Không gian địa – tập hợp tất địa ảo phát sinh chương trình Không gian vật lý – tập hợp tất địa vật lý tương ứng với địa ảo 12/2/2005 Trần Hạnh Nhi Nhu cầu nhớ tiến trình low address code segment read from program file by exec usually read-only can be shared data segment system data segment (PCB) … 8048314 : 8048314: push %ebp 8048315: mov %esp,%ebp 8048317: mov 0xc(%ebp),%eax 804831a: add 0x8(%ebp),%eax 804831d: pop %ebp 804831e: ret initialized global variables (0 / NULL) 804831f : 804831f: push uninitialized global variables 8048320: mov heap dynamic memory 8048325: e.g., allocated using malloc grows against higher addresses 8048328: 8048322: stack segment initialized variables uninitialized variables data segment process A %ebp %esp,%ebp sub $0x18,%esp and $0xfffffff0,%esp mov $0x0,%eax 804832d: sub %eax,%esp 804832f: movl $0x0,0xfffffffc(%ebp) 8048336: movl $0x2,0x4(%esp,1) variables in a function 804833e: 8048345: stored register states (e.g calling function EIP) 804834a: 804834d: grows against lower addresses 804834e: 804834f: system data segment (PCB) segment pointers pid program and stack pointers … code segment movl $0x4,(%esp,1) call 8048314 mov %eax,0xfffffffc(%ebp) leave ret nop heap ” ed s nu “u m em y or … … Stack cho thread 12/2/2005 data segment Tiến trình gồm có: stack possible stacks for more threads Trần Hạnh Nhi high address Logical and Physical Address Spaces 12/2/2005 Trần Hạnh Nhi 10 Ví dụ mô hình bảng trang cấp Vì thế, địa logic có dạng sau: page number page offset 12/2/2005 pi p2 d 10 10 12 Trần Hạnh Nhi 58 Bảng trang đa cấp 100 0 1 2 Page Table caáp 1 3 Page Table caáp Page Table caáp 10 3 Page Table caáp 11 12 13 14 15 Page Table cấp 16 17 Bảng trang nghịch đảo (Inverted Page Table) Sử dụng bảng trang nghịch đảo cho tất tiến trình Mỗi phần tử bảng trang nghịch đảo mô tả frame, có cấu trúc : số hiệu page mà frame chứa đựng : id tiến trình sỡ hữu trang Mỗi địa ảo ba Khi tham khảo đến nhớ phát sinh, phần địa ảo đưa đến cho trình quản lý nhớ để tìm phần tử tương ứng bảng trang nghịch đảo, tìm thấy, địa vật lý phát sinh 12/2/2005 Trần Hạnh Nhi 60 Kiến trúc bảng trang nghịch đảo 12/2/2005 Trần Hạnh Nhi 61 Lưu trữ Page table : Tiết kiệm thời gian Mỗi truy cập BNC cần truy xuất BNC lần : Tra cứu Page Table để chuyển đổi địa Tra cưu thân data Làm để cải thiện : Tìm cách lưu PT cache Cho phép tìm kiếm nhanh PT lớn, cache nhỏ : lưu đủ ? Lưu phần PT Phần ? Các số hiệu trang truy cập gần 12/2/2005 Trần Hạnh Nhi 62 Translation Lookaside Buffer (TLB) Vùng nhớ Cache CPU sử dụng để lưu tạm thời phần PT gọi Translation Lookaside Buffer (TLB) Cho phép tìm kiếm tốc độ cao Kích thước giới hạn (thường không 64 phần tử) Mỗi entry TLB chứa số hiệu page frame tương ứng chứa page Khi chuyển đổi địa chỉ, truy xuất TLB trước, không tìm thấy số hiệu page cần thiết, truy xuất vào PT để lấy thông tin frame 12/2/2005 Trần Hạnh Nhi 63 Translation Lookaside Buffer 12/2/2005 Trần Hạnh Nhi 64 Chuyển đổi địa với Paging virtual address CPU p d f physical address f d d TLB p f Memory f f 12/2/2005 PT Trần Hạnh Nhi 65 Sử dụng TBL 12/2/2005 Trần Hạnh Nhi 66 Bảo vệ chia sẻ Segmentation Paging Bảo vệ Segmentation : phần tử ST gắn thêm bit bảo vệ Mỗi segment bảo vệ tùy theo ngữ nghóa đối tượng bên segment Paging : phần tử PT gắn thêm bit bảo vệ Mỗi page không nhận thức ngữ nghóa đối tượng bên page, nên bảo vệ áp dụng cho toàn trang, không phân biệt Chia sẻ: Cho nhiều phần tự KGĐC trỏ đến vị trí KGVL Segmentation : chia sẻ mức module chương trình Paging : chia sẻ trang 12/2/2005 Trần Hạnh Nhi 67 Sharing Pages: A Text Editor Sharing Pages: A Text Editor ed + data ed + data ed + data Chia seû Page = Chia sẻ code data ! Sharing of Segments: Text Editor Đánh giá mô hình chuyển đổi địa Giả sử có: tm : thời gian truy xuất BNC tc : thời gian truy xuất cache hit-ration : tỉ lệ tìm thấy số hiệu trang p TLB Công thức tính thời gian truy cập thực tế (Time Effective Acess) đến đối tượng BNC bao gồm thời gian chuyển đổi địa thời gian truy xuất liệu TEA = (time biding add + time acces memory) 12/2/2005 Trần Hạnh Nhi 71 Linker-Loader TEA = tm (data) Base + Bound TEA = (tc + tc) (Base & Bound) Segmentation TEA = tc (ST cache) Paging + + Không sử dụng TLB : TEA = tm tm (data) tm (data) + (PT mem) tm (data) Có sử dụng TLB : TEA = hit-ratio ( tc + tm ) + (1- hit-ratio)( tc + tm + tm ) (TLB) (data) (TLB) (PT) (data) ... tất địa xử lý tạo Địa physic - địa thực tế mà trình quản lý nhớ nhìn thấy thao tác Không gian địa – tập hợp tất địa ảo phát sinh chương trình Không gian vật lý – tập hợp tất địa vật lý tương ứng... Ai cấp phát BNC cho tiến trình ? Chương trình nguồn sử dụng địa symbolic Tiến trình thực thi truy cập điạ thực BNC Ai chuyển đổi địa ? HĐH Bộ phận Quản lý Bộ nhớ Mô hình tổ chức ? 12/2/2005 Cơ...Tổng quan : Nhu cầu nhớ tiến trình Chương trình cần nạp vào Bộ nhớ để thi hành CPU truy xuất trực tiếp Main Memory Chương trình nạp vaò BNC tổ chức theo cấu trúc tiến

Ngày đăng: 08/05/2021, 12:45

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN