1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng: Quản lý Bộ nhớ

74 39 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 74
Dung lượng 1,37 MB

Nội dung

Chương – Quản lý nhớ CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung  Tổng quan    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   Nhu cầu nhớ tiến trình Các vấn đề nhớ 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Tổng quan  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 ? Cơ chế hỗ trợ Chiến lược thực CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 ? CuuDuongThanCong.com https://fb.com/tailieudientucntt Ví dụ 0x9000 OS Môi trường ña nhieäm gcc nachos emacs     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ó? CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Các bước huyển đổi source program -> exe CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 OS ? // F() ? // x ? // y ? // [?] = 12; ? // [?] = 5; ? // jmp ? Test.exe CuuDuongThanCong.com https://fb.com/tailieudientucntt Thuaä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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Nhu cầu nhớ tiến trình low address Tiến trình gồm có:  code segment       read from program file by exec usually read-only can be shared initialized global variables (0 / NULL) uninitialized global variables heap           8048314: push %ebp 8048315: mov %esp,%ebp 8048317: mov 0xc(%ebp),%eax 804831a: add 0x8(%ebp),%eax 804831d: pop %ebp 804831e: ret segment pointers pid program and stack pointers … code segment initialized variables uninitialized variables data segment process A 804831f : 804831f: push %ebp 8048320: mov %esp,%ebp 8048322: sub $0x18,%esp 8048325: and $0xfffffff0,%esp 8048328: 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: grows against lower addresses system data segment (PCB)   dynamic memory e.g., allocated using malloc grows against higher addresses stack segment  … 8048314 : data segment  system data segment (PCB) movl $0x4,(%esp,1) call 8048314 mov %eax,0xfffffffc(%ebp) 804834d: leave 804834e: ret 804834f: nop heap … … Stack cho thread stack possible stacks for more threads high address CuuDuongThanCong.com data segment  https://fb.com/tailieudientucntt 10 Baûng trang đa cấp 100 0 1 2 Page Table caáp 32 3 Page Table caáp Page Table caáp 82 10 11 12 Page Table caáp 14 15 Page Table caáp 216 13 17 CuuDuongThanCong.com https://fb.com/tailieudientucntt 61 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 62 CuuDuongThanCong.com https://fb.com/tailieudientucntt Kiến trúc bảng trang nghịch đảo 63 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 64 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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  CuuDuongThanCong.com https://fb.com/tailieudientucntt 65 Translation Lookaside Buffer 66 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chuyển đổi địa với Paging virtual address CPU p d f physical address f d d TLB p f Memory f f PT 67 CuuDuongThanCong.com https://fb.com/tailieudientucntt Sử dụng TBL 68 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bảo vệ chia sẻ Segmentation Paging  Bảo vệ  Segmentation : phần tử ST gắn thêm bit bảo vệ   Paging : phần tử PT 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 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 69 Sharing Pages: A Text Editor 70 CuuDuongThanCong.com https://fb.com/tailieudientucntt Sharing Pages: A Text Editor ed + data ed + data ed + data Chia seû Page = Chia sẻ code v 71 CuuDuongThanCong.com https://fb.com/tailieudientucntt Đá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) 72 CuuDuongThanCong.com https://fb.com/tailieudientucntt  Linker-Loader   TEA = tm (data) Base + Bound  TEA = (tc + tc) + (Base & Bound)  Segmentation   TEA = Paging  tc tm (data) + (ST cache) Không sử dụng TLB :  TEA = tm tm (data) + (PT mem)  Có sử dụng TLB :  TEA = hit-ratio ( tc tc + tm + tm ) CuuDuongThanCong.com + tm (data) tm ) + (1- hit-ratio)( (TLB) https://fb.com/tailieudientucntt (data) 73       Giả sử: Có lỗi xảy tốn 8ms để thay trang Nếu trang thay đổi nội dung tốn 20ms Giả sử 70% trang có thay nội dung Truy cập nhớ tớn 100ns Hỏi tỉ lệ lỗi trang để đảm bảo EMAT không vượt 200ns 74 CuuDuongThanCong.com https://fb.com/tailieudientucntt  EAT = (1 – p) x memory access + p (page fault overhead + [swap page out ] + swap page in + restart overhead) 75 CuuDuongThanCong.com https://fb.com/tailieudientucntt ... Các chiến lược thông dụng để chọn partition:    First-fit: chọn partition tự Best-fit: chọn partition tự nhỏ đủ chứa tiến trình Worst-fit: chọn partition tự lớn đủ chứa tiến trình 2M First... module, với yêu cầu bảo vệ cho module khác nhau:     instruction modules : execute-only data modules : read-only hay read/write số module private, số khác public OS cần hỗ trợ chế phản ánh mô... https://fb.com/tailieudientucntt Thời điểm kết buộc địa ? Có thể thực việc kết buộc địa thời điểm :   Compile-time:     Load-time:     Phát sinh địa tuyệt đối Phải biết trước vị trí nạp chương trình Phải biên

Ngày đăng: 23/08/2020, 23:58

w