Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ - Phạm Đăng Hải

Giới thiệu

• Mục đích của hệ thống máy tính: thực hiện chương trình

+ Chương trình và dữ liệu (toàn bộ hoặc một phần) phải nằm

trong bộ nhớ chính trong khi thực hiện © Byte tích cực:Những byte nội dung đang được thực hiện tại | thời điểm quan sát: + Phần chương trình chưa đưa vào bộ nhớ chính được lưu trên | bộ nhớ thứ cấp (VD: đĩa cứng)+ Bộ nhớ ảo

• Cho phép lập trình viên không lo lắng về giới hạn bộ nhở vật lý

pdf 245 trang thiennv 08/11/2022 2700
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ - Phạm Đăng Hải", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_he_dieu_hanh_chuong_3_quan_ly_bo_nho_pham_dang_hai.pdf

Nội dung text: Bài giảng Hệ điều hành - Chương 3: Quản lý bộ nhớ - Phạm Đăng Hải

  1. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Kết quả File toto.com có kích thước 19 bytes Nội dung các câu lệnh trong chương trình thực thi toto.com? 9 / 92
  2. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Nội dung file Dùng debug xem nội dung file và dịch ngược ra hợp ngữ 10 / 92
  3. Hello! terminated CS:0000 PSP: Program Dịch ngược Segment Prefix JMP 010A CS:0100 JMP 010A DB ’Hello!$’ CS:0102 ’Hello!$’ NOP CS:0109 NOP MOV AH, 9 CS:010A MOV AH, 9 MOV DX, 0102 CS:010C MOV DX, 0102 INT 21 CS:010F INT 21 INT 20 CS:0111 INT 20 CS:0113 Khi thực hiện, nạp toto.com vào bộ nhớ tại địa chỉ CS:0100 Các thanh ghi đoạn CS, ES, DS,SS cùng trỏ tới PSP Thanh ghi IP có giá trị 100 (CS:IP trỏ đến lệnh đầu tiên) SP trỏ tới cuối đoạn; Các thanh ghi thông dụng bị xóa (0) Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Thực hiện file toto.com Nội dung file Toto.com (19 bytes) EB 08 48 65 6C 6C 6F 21 24 90 B4 09 BA 02 01 CD 21 CD 20 11 / 92
  4. Hello! terminated CS:0000 PSP: Program Segment Prefix CS:0100 JMP 010A CS:0102 ’Hello!$’ CS:0109 NOP CS:010A MOV AH, 9 CS:010C MOV DX, 0102 CS:010F INT 21 CS:0111 INT 20 CS:0113 Khi thực hiện, nạp toto.com vào bộ nhớ tại địa chỉ CS:0100 Các thanh ghi đoạn CS, ES, DS,SS cùng trỏ tới PSP Thanh ghi IP có giá trị 100 (CS:IP trỏ đến lệnh đầu tiên) SP trỏ tới cuối đoạn; Các thanh ghi thông dụng bị xóa (0) Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Thực hiện file toto.com Nội dung file Toto.com (19 bytes) EB 08 48 65 6C 6C 6F 21 24 90 B4 09 BA 02 01 CD 21 CD 20 Dịch ngược JMP 010A DB ’Hello!$’ NOP MOV AH, 9 MOV DX, 0102 INT 21 INT 20 11 / 92
  5. Hello! terminated Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Thực hiện file toto.com Nội dung file Toto.com (19 bytes) EB 08 48 65 6C 6C 6F 21 24 90 B4 09 BA 02 01 CD 21 CD 20 CS:0000 PSP: Program Dịch ngược Segment Prefix JMP 010A CS:0100 JMP 010A ⇐CS:IP DB ’Hello!$’ CS:0102 ’Hello!$’ NOP CS:0109 NOP MOV AH, 9 CS:010A MOV AH, 9 MOV DX, 0102 CS:010C MOV DX, 0102 INT 21 CS:010F INT 21 INT 20 CS:0111 INT 20 CS:0113 Khi thực hiện, nạp toto.com vào bộ nhớ tại địa chỉ CS:0100 Các thanh ghi đoạn CS, ES, DS,SS cùng trỏ tới PSP Thanh ghi IP có giá trị 100 (CS:IP trỏ đến lệnh đầu tiên) 11 / 92 SP trỏ tới cuối đoạn; Các thanh ghi thông dụng bị xóa (0)
  6. Hello! terminated Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Thực hiện file toto.com Nội dung file Toto.com (19 bytes) EB 08 48 65 6C 6C 6F 21 24 90 B4 09 BA 02 01 CD 21 CD 20 CS:0000 PSP: Program Dịch ngược Segment Prefix JMP 010A CS:0100 JMP 010A DB ’Hello!$’ CS:0102 ’Hello!$’ NOP CS:0109 NOP MOV AH, 9 CS:010A MOV AH, 9 ⇐CS:IP MOV DX, 0102 CS:010C MOV DX, 0102 INT 21 CS:010F INT 21 INT 20 CS:0111 INT 20 CS:0113 Khi thực hiện, nạp toto.com vào bộ nhớ tại địa chỉ CS:0100 Các thanh ghi đoạn CS, ES, DS,SS cùng trỏ tới PSP Thanh ghi IP có giá trị 100 (CS:IP trỏ đến lệnh đầu tiên) 11 / 92 SP trỏ tới cuối đoạn; Các thanh ghi thông dụng bị xóa (0)
  7. Hello! terminated Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Thực hiện file toto.com Nội dung file Toto.com (19 bytes) EB 08 48 65 6C 6C 6F 21 24 90 B4 09 BA 02 01 CD 21 CD 20 CS:0000 PSP: Program Dịch ngược Segment Prefix JMP 010A CS:0100 JMP 010A DB ’Hello!$’ CS:0102 ’Hello!$’ NOP CS:0109 NOP MOV AH, 9 CS:010A MOV AH, 9 MOV DX, 0102 CS:010C MOV DX, 0102 ⇐CS:IP INT 21 CS:010F INT 21 INT 20 CS:0111 INT 20 CS:0113 Khi thực hiện, nạp toto.com vào bộ nhớ tại địa chỉ CS:0100 Các thanh ghi đoạn CS, ES, DS,SS cùng trỏ tới PSP Thanh ghi IP có giá trị 100 (CS:IP trỏ đến lệnh đầu tiên) 11 / 92 SP trỏ tới cuối đoạn; Các thanh ghi thông dụng bị xóa (0)
  8. Hello! terminated Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Thực hiện file toto.com Nội dung file Toto.com (19 bytes) EB 08 48 65 6C 6C 6F 21 24 90 B4 09 BA 02 01 CD 21 CD 20 CS:0000 PSP: Program Dịch ngược Segment Prefix JMP 010A CS:0100 JMP 010A DB ’Hello!$’ CS:0102 ’Hello!$’ NOP CS:0109 NOP MOV AH, 9 CS:010A MOV AH, 9 MOV DX, 0102 CS:010C MOV DX, 0102 INT 21 CS:010F INT 21 ⇐CS:IP INT 20 CS:0111 INT 20 CS:0113 Khi thực hiện, nạp toto.com vào bộ nhớ tại địa chỉ CS:0100 Các thanh ghi đoạn CS, ES, DS,SS cùng trỏ tới PSP Thanh ghi IP có giá trị 100 (CS:IP trỏ đến lệnh đầu tiên) 11 / 92 SP trỏ tới cuối đoạn; Các thanh ghi thông dụng bị xóa (0)
  9. terminated Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Thực hiện file toto.com Nội dung file Toto.com (19 bytes) EB 08 48 65 6C 6C 6F 21 24 90 B4 09 BA 02 01 CD 21 CD 20 CS:0000 PSP: Program Hello! Dịch ngược Segment Prefix JMP 010A CS:0100 JMP 010A DB ’Hello!$’ CS:0102 ’Hello!$’ NOP CS:0109 NOP MOV AH, 9 CS:010A MOV AH, 9 MOV DX, 0102 CS:010C MOV DX, 0102 INT 21 CS:010F INT 21 INT 20 CS:0111 INT 20 ⇐CS:IP CS:0113 Khi thực hiện, nạp toto.com vào bộ nhớ tại địa chỉ CS:0100 Các thanh ghi đoạn CS, ES, DS,SS cùng trỏ tới PSP Thanh ghi IP có giá trị 100 (CS:IP trỏ đến lệnh đầu tiên) 11 / 92 SP trỏ tới cuối đoạn; Các thanh ghi thông dụng bị xóa (0)
  10. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 1: Thực hiện file toto.com Nội dung file Toto.com (19 bytes) EB 08 48 65 6C 6C 6F 21 24 90 B4 09 BA 02 01 CD 21 CD 20 CS:0000 PSP: Program Hello! Dịch ngược Segment Prefix terminated JMP 010A CS:0100 JMP 010A DB ’Hello!$’ CS:0102 ’Hello!$’ NOP CS:0109 NOP MOV AH, 9 CS:010A MOV AH, 9 MOV DX, 0102 CS:010C MOV DX, 0102 INT 21 CS:010F INT 21 INT 20 CS:0111 INT 20 CS:0113 Khi thực hiện, nạp toto.com vào bộ nhớ tại địa chỉ CS:0100 Các thanh ghi đoạn CS, ES, DS,SS cùng trỏ tới PSP Thanh ghi IP có giá trị 100 (CS:IP trỏ đến lệnh đầu tiên) 11 / 92 SP trỏ tới cuối đoạn; Các thanh ghi thông dụng bị xóa (0)
  11. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 2: Tạo file thực thi từ nhiều modul Toto project file main.c file M1.c #include int y = 10; extern int x, y; extern void toto(); file M2.c int main(int argc, char *argv[]){ int x; toto(); extern int y; printf("KQ: %d \n",x * y); void toto(){ return 0; x = 10 * y; } } Ket qua KQ: 1000 12 / 92
  12. Thư viện Header [printf] [y←10] [y←10] M1.o [x] x y [printf] Link - toto (tlink) - [toto] printf x main.o y toto [x] printf y x [toto] y M2.o toto.exe Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 2: Quá trình xử lý toto project int y=10; M1.c extern int x,y; extern void toto(); int main(){ Compiler toto() (tcc -c) printf() } main.c int x; extern int y; toto() M2.c 13 / 92
  13. Thư viện Header [printf] [y←10] [x] [printf] Link - (tlink) - [toto] x y toto printf x y toto.exe Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 2: Quá trình xử lý toto project int y=10; [y←10] M1.c M1.o extern int x,y; x extern void toto(); y int main(){ Compiler toto() (tcc -c) toto printf() printf } main.o main.c int x; [x] extern int y; y toto() [toto] M2.c M2.o 13 / 92
  14. Header [y←10] [x] [printf] - - [toto] x y toto printf x y toto.exe Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 2: Quá trình xử lý toto project Thư viện [printf] int y=10; [y←10] M1.c M1.o extern int x,y; x extern void toto(); y int main(){ Compiler Link toto() (tcc -c) toto (tlink) printf() printf } main.o main.c int x; [x] extern int y; y toto() [toto] M2.c M2.o 13 / 92
  15. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.1 Ví dụ Ví dụ 2: Quá trình xử lý toto project Thư viện Header [printf] int y=10; [y←10] [y←10] M1.c M1.o [x] extern int x,y; x extern void toto(); y [printf] int main(){ Compiler Link - toto() (tcc -c) toto (tlink) - [toto] printf() printf x } main.o y main.c toto int x; [x] printf extern int y; y x toto() [toto] y M2.c M2.o toto.exe 13 / 92
  16. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình 1 Tổng quan Ví dụ Bộ nhớ và chương trình Liên kết địa chỉ Các cấu trúc chương trình 14 / 92
  17. Bộ nhớ được đặc trưng bởi kích thước và tốc độ truy nhập Bộ nhớ được phân cấp theo tốc độ truy nhập Loại bộ nhớ Kích thước Tốc độ Thanh ghi (Registers) bytes Tốc độ CPU(ηs) Cache trên VXL Kilo Bytes 10 nano seconds Cache mức 2 KiloByte-MegaByte 100 nanoseconds Bộ nhớ chính MegaByte-GigaByte Micro-seconds Bộ nhớ lưu trữ (Disk) GigaByte-Terabytes Mili-Seconds Băng từ, đĩa quang Không giới hạn 10 Seconds Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Phân cấp bộ nhớ Bộ nhớ là tài nguyên quan trọng của hệ thống Chương trình phải nằm trong bộ nhớ trong để thực hiện 15 / 92
  18. Bộ nhớ được phân cấp theo tốc độ truy nhập Loại bộ nhớ Kích thước Tốc độ Thanh ghi (Registers) bytes Tốc độ CPU(ηs) Cache trên VXL Kilo Bytes 10 nano seconds Cache mức 2 KiloByte-MegaByte 100 nanoseconds Bộ nhớ chính MegaByte-GigaByte Micro-seconds Bộ nhớ lưu trữ (Disk) GigaByte-Terabytes Mili-Seconds Băng từ, đĩa quang Không giới hạn 10 Seconds Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Phân cấp bộ nhớ Bộ nhớ là tài nguyên quan trọng của hệ thống Chương trình phải nằm trong bộ nhớ trong để thực hiện Bộ nhớ được đặc trưng bởi kích thước và tốc độ truy nhập 15 / 92
  19. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Phân cấp bộ nhớ Bộ nhớ là tài nguyên quan trọng của hệ thống Chương trình phải nằm trong bộ nhớ trong để thực hiện Bộ nhớ được đặc trưng bởi kích thước và tốc độ truy nhập Bộ nhớ được phân cấp theo tốc độ truy nhập Loại bộ nhớ Kích thước Tốc độ Thanh ghi (Registers) bytes Tốc độ CPU(ηs) Cache trên VXL Kilo Bytes 10 nano seconds Cache mức 2 KiloByte-MegaByte 100 nanoseconds Bộ nhớ chính MegaByte-GigaByte Micro-seconds Bộ nhớ lưu trữ (Disk) GigaByte-Terabytes Mili-Seconds Băng từ, đĩa quang Không giới hạn 10 Seconds 15 / 92
  20. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Bộ nhớ chính 00000 00001 Memory Dùng lưu trữ dữ liệu và chương trình Là mảng các ô nhớ kiểu bytes, words FFFFE Mỗi ô nhớ có một địa chỉ riêng FFFFF Địa chỉ vật lý: địa chỉ x/hiện ở chân VXL 16 / 92
  21. Phải được đưa vào bộ nhớ trong và được đặt trong một tiến trình để thực hiện (tiến trình thực hiện chương trình) Hàng đợi vào (input queue) Tập các tiến trình ở bộ nhớ ngoài (thông thường disk) Đợi để được đưa vào bộ nhớ trong và thực hiên Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Chương trình Tồn tại trên thiết bị lưu trữ ngoài Là các file nhị phân thực thi được Vùng tham số file Lệnh máy (mã nhị phân), Vùng dữ liệu (biến toàn cục), 17 / 92
  22. Hàng đợi vào (input queue) Tập các tiến trình ở bộ nhớ ngoài (thông thường disk) Đợi để được đưa vào bộ nhớ trong và thực hiên Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Chương trình Tồn tại trên thiết bị lưu trữ ngoài Là các file nhị phân thực thi được Vùng tham số file Lệnh máy (mã nhị phân), Vùng dữ liệu (biến toàn cục), Phải được đưa vào bộ nhớ trong và được đặt trong một tiến trình để thực hiện (tiến trình thực hiện chương trình) 17 / 92
  23. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Chương trình Tồn tại trên thiết bị lưu trữ ngoài Là các file nhị phân thực thi được Vùng tham số file Lệnh máy (mã nhị phân), Vùng dữ liệu (biến toàn cục), Phải được đưa vào bộ nhớ trong và được đặt trong một tiến trình để thực hiện (tiến trình thực hiện chương trình) Hàng đợi vào (input queue) Tập các tiến trình ở bộ nhớ ngoài (thông thường disk) Đợi để được đưa vào bộ nhớ trong và thực hiên 17 / 92
  24. Thực thi chương trình CPU lấy các lệnh trong bộ nhớ tại vị trí được xác định bởi bộ đếm chương trình (Program counter) Cặp thanh ghi CS:IP với VXL họ Intel (Ví dụ : 80x86) CPU giải mã lệnh Có thể lấy thêm toán hạng từ bộ nhớ Thực hiện lệnh với toán hạng Nếu cần thiết, lưu kết quả vào bộ nhớ tại một địa chỉ xác định Thực hiện xong Giải phóng vùng không gian nhớ dành cho chương trình Vấn đề Chương trình có thể được nạp vào vị trí bất kỳ trong bộ nhớ Khi thực hiện chương trình sinh ra chuỗi địa chỉ bộ nhớ Truy nhập địa chỉ bộ nhớ như thế nào? Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Thực hiện chương trình Nạp chương trình vào bộ nhớ Đọc và phân tích (dịch) file thực thi (VD file *.com, file *.exe) Xin vùng nhớ để nạp chương trình từ file trên đĩa Thiết lập các tham số, các thanh ghi tới giá trị thích hợp 18 / 92
  25. Thực hiện xong Giải phóng vùng không gian nhớ dành cho chương trình Vấn đề Chương trình có thể được nạp vào vị trí bất kỳ trong bộ nhớ Khi thực hiện chương trình sinh ra chuỗi địa chỉ bộ nhớ Truy nhập địa chỉ bộ nhớ như thế nào? Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Thực hiện chương trình Nạp chương trình vào bộ nhớ Đọc và phân tích (dịch) file thực thi (VD file *.com, file *.exe) Xin vùng nhớ để nạp chương trình từ file trên đĩa Thiết lập các tham số, các thanh ghi tới giá trị thích hợp Thực thi chương trình CPU lấy các lệnh trong bộ nhớ tại vị trí được xác định bởi bộ đếm chương trình (Program counter) Cặp thanh ghi CS:IP với VXL họ Intel (Ví dụ : 80x86) CPU giải mã lệnh Có thể lấy thêm toán hạng từ bộ nhớ Thực hiện lệnh với toán hạng Nếu cần thiết, lưu kết quả vào bộ nhớ tại một địa chỉ xác định 18 / 92
  26. Vấn đề Chương trình có thể được nạp vào vị trí bất kỳ trong bộ nhớ Khi thực hiện chương trình sinh ra chuỗi địa chỉ bộ nhớ Truy nhập địa chỉ bộ nhớ như thế nào? Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Thực hiện chương trình Nạp chương trình vào bộ nhớ Đọc và phân tích (dịch) file thực thi (VD file *.com, file *.exe) Xin vùng nhớ để nạp chương trình từ file trên đĩa Thiết lập các tham số, các thanh ghi tới giá trị thích hợp Thực thi chương trình CPU lấy các lệnh trong bộ nhớ tại vị trí được xác định bởi bộ đếm chương trình (Program counter) Cặp thanh ghi CS:IP với VXL họ Intel (Ví dụ : 80x86) CPU giải mã lệnh Có thể lấy thêm toán hạng từ bộ nhớ Thực hiện lệnh với toán hạng Nếu cần thiết, lưu kết quả vào bộ nhớ tại một địa chỉ xác định Thực hiện xong Giải phóng vùng không gian nhớ dành cho chương trình 18 / 92
  27. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.2 Bộ nhớ và chương trình Thực hiện chương trình Nạp chương trình vào bộ nhớ Đọc và phân tích (dịch) file thực thi (VD file *.com, file *.exe) Xin vùng nhớ để nạp chương trình từ file trên đĩa Thiết lập các tham số, các thanh ghi tới giá trị thích hợp Thực thi chương trình CPU lấy các lệnh trong bộ nhớ tại vị trí được xác định bởi bộ đếm chương trình (Program counter) Cặp thanh ghi CS:IP với VXL họ Intel (Ví dụ : 80x86) CPU giải mã lệnh Có thể lấy thêm toán hạng từ bộ nhớ Thực hiện lệnh với toán hạng Nếu cần thiết, lưu kết quả vào bộ nhớ tại một địa chỉ xác định Thực hiện xong Giải phóng vùng không gian nhớ dành cho chương trình Vấn đề Chương trình có thể được nạp vào vị trí bất kỳ trong bộ nhớ Khi thực hiện chương trình sinh ra chuỗi địa chỉ bộ nhớ Truy nhập địa chỉ bộ nhớ như thế nào? 18 / 92
  28. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.3 Liên kết địa chỉ 1 Tổng quan Ví dụ Bộ nhớ và chương trình Liên kết địa chỉ Các cấu trúc chương trình 19 / 92
  29. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.3 Liên kết địa chỉ Các bước xử lý chương trình ứng dụng Chương trình Các modul đối Thư viện hệ nguồn tượng khác thống được nạp động inktđộng kết Liên Modul đối Dịch Liên tượng kết Modul thực Chương trình Nạp hiện trong bộ nhớ Thư viện hệ thống Bộ nhớ trong 20 / 92
  30. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.3 Liên kết địa chỉ Các kiểu địa chỉ Địa chỉ biểu tượng (symbolic) Là tên của đối tượng trong chương trình nguồn Ví du: counter, x, y, Địa chỉ tương đối Sinh ra từ địa chỉ biểu tượng trong giai đoạn dịch (compiler) Là vị trí tương đối của đối tượng kể từ đầu modul Byte thứ 10 kể từ đầu modul EB08 ⇒ JMP +08: Nhảy tới vị trí cách vị trí hiện tại 8 ô Địa chỉ tuyệt đối Sinh ra từ địa chỉ tương đối trong giai đoạn nạp chương trình thực thi vào bộ nhớ để thực hiện Với PC: địa chỉ tương đối → Seg * 16+Ofs Là địa chỉ của đối tượng trong bộ nhớ vật lý-địa chỉ vật lý Ví du: JMP 010A⇒ Nhảy tới ô nhớ có vị trí 010Ah tại cùng đoạn mã lệnh (CS) Nếu CS=1555h, sẽ đi tới vị trí: 1555h*10h+010Ah =1560Ah 21 / 92
  31. Giai đoạn dịch: Sử dụng khi biết chương trình sẽ nằm ở đâu trong bộ nhớ Khi dịch sẽ sinh ra mã (địa chỉ ) tuyệt đối Phải dịch lại khi vị trí bắt đầu thay đổi Thời điểm nạp: Sử dụng khi không biết c/trình sẽ nằm ở đâu trong bộ nhớ Các đối tượng được dịch ra sẽ mang địa chỉ tương đối Xác định địa chỉ được hoãn lại tới khi khi nạp chương trình vào bộ nhớ Trong khi thực hiện: S/dụng khi các tiến trình có thể thay đổi vị trí trong khi t/hiện Xác định địa chỉ được hoãn lại tới khi thực thi chương trình Thường đòi hỏi trợ giúp từ phần cứng Được sử dụng trong nhiều hệ điều hành Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.3 Liên kết địa chỉ Xác định địa chỉ Xác định địa chỉ câu lệnh và dữ liệu trong bộ nhớ có thể thực hiện tại các giai đoạn khác nhau khi xử lý chương trình ứng dung 22 / 92
  32. Thời điểm nạp: Sử dụng khi không biết c/trình sẽ nằm ở đâu trong bộ nhớ Các đối tượng được dịch ra sẽ mang địa chỉ tương đối Xác định địa chỉ được hoãn lại tới khi khi nạp chương trình vào bộ nhớ Trong khi thực hiện: S/dụng khi các tiến trình có thể thay đổi vị trí trong khi t/hiện Xác định địa chỉ được hoãn lại tới khi thực thi chương trình Thường đòi hỏi trợ giúp từ phần cứng Được sử dụng trong nhiều hệ điều hành Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.3 Liên kết địa chỉ Xác định địa chỉ Xác định địa chỉ câu lệnh và dữ liệu trong bộ nhớ có thể thực hiện tại các giai đoạn khác nhau khi xử lý chương trình ứng dung Giai đoạn dịch: Sử dụng khi biết chương trình sẽ nằm ở đâu trong bộ nhớ Khi dịch sẽ sinh ra mã (địa chỉ ) tuyệt đối Phải dịch lại khi vị trí bắt đầu thay đổi 22 / 92
  33. Trong khi thực hiện: S/dụng khi các tiến trình có thể thay đổi vị trí trong khi t/hiện Xác định địa chỉ được hoãn lại tới khi thực thi chương trình Thường đòi hỏi trợ giúp từ phần cứng Được sử dụng trong nhiều hệ điều hành Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.3 Liên kết địa chỉ Xác định địa chỉ Xác định địa chỉ câu lệnh và dữ liệu trong bộ nhớ có thể thực hiện tại các giai đoạn khác nhau khi xử lý chương trình ứng dung Giai đoạn dịch: Sử dụng khi biết chương trình sẽ nằm ở đâu trong bộ nhớ Khi dịch sẽ sinh ra mã (địa chỉ ) tuyệt đối Phải dịch lại khi vị trí bắt đầu thay đổi Thời điểm nạp: Sử dụng khi không biết c/trình sẽ nằm ở đâu trong bộ nhớ Các đối tượng được dịch ra sẽ mang địa chỉ tương đối Xác định địa chỉ được hoãn lại tới khi khi nạp chương trình vào bộ nhớ 22 / 92
  34. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.3 Liên kết địa chỉ Xác định địa chỉ Xác định địa chỉ câu lệnh và dữ liệu trong bộ nhớ có thể thực hiện tại các giai đoạn khác nhau khi xử lý chương trình ứng dung Giai đoạn dịch: Sử dụng khi biết chương trình sẽ nằm ở đâu trong bộ nhớ Khi dịch sẽ sinh ra mã (địa chỉ ) tuyệt đối Phải dịch lại khi vị trí bắt đầu thay đổi Thời điểm nạp: Sử dụng khi không biết c/trình sẽ nằm ở đâu trong bộ nhớ Các đối tượng được dịch ra sẽ mang địa chỉ tương đối Xác định địa chỉ được hoãn lại tới khi khi nạp chương trình vào bộ nhớ Trong khi thực hiện: S/dụng khi các tiến trình có thể thay đổi vị trí trong khi t/hiện Xác định địa chỉ được hoãn lại tới khi thực thi chương trình Thường đòi hỏi trợ giúp từ phần cứng Được sử dụng trong nhiều hệ điều hành 22 / 92
  35. Chương 3: Quản lý bộ nhớ 1. Tổng quan 1.3 Liên kết địa chỉ Địa chỉ vật lý-địa chỉ logic Địa chỉ logic (địa chỉ ảo) Được sinh ra trong tiến trình, (CPU đưa ra) Được khối quản lý bộ nhớ (MMU) chuyển sang địa chỉ vật lý khi truy nhập tới đối tượng trong chương trình Địa chỉ vật lý Địa chỉ của một phần tử (byte/word) của bộ nhớ Tương ứng với địa chỉ logic được CPU đưa ra Chương trình làm việc với địa chỉ logic 23 / 92