Xem mẫu

  1. TRƯỜNG ĐẠI HỌC SÀI GÒN CHƯƠNG 4: MEMORY GV: LƯƠNG MINH HUẤN
  2. NỘI DUNG I. Khái niệm cơ sở II. Các kiểu địa chỉ nhớ III. Chuyển đổi địa chỉ nhớ IV.Cấp phát bộ nhớ liên tục V. Cấp phát bộ nhớ không liên tục
  3. I. KHÁI NIỆM CƠ SỞ ➢ Một chương trình muốn chạy thì phải được nạp vào trong bộ nhớ chính. ➢ Vấn đề: ▪ Khi nào nạp? ▪ Nạp vào đâu? ▪ Nạp những phần nào? ➢ Quản lý bộ nhớ giúp tối ưu hóa hoạt động của bộ nhớ ▪ Tối ưu hóa số tiến trình cùng lúc ở trong bộ nhớ chính nhằm nâng cao tính đa chương ▪ Tận dụng tối đa bộ nhớ của máy tính
  4. I. KHÁI NIỆM CƠ SỞ ➢Quản lý bộ nhớ là công việc của hệ điều hành với sự hổ trợ của phần cứng nhằm phân phối, sắp xếp các process trong bộ nhớ sao cho hiệu quả tối ưu. ➢Mục tiêu cần đạt là nạp càng nhiều process vào bộ nhớ càng tốt (gia tăng tính đa chương). ➢Trong hầu hết hệ thống, kernel sẽ chiếm một phần cố định của bộ nhớ, phần còn lại phân phối cho các process.
  5. I. KHÁI NIỆM CƠ SỞ ➢Nhiệm vụ của quản lý bộ nhớ: ▪ Tổ chức và quản lý bộ nhớ vật lý ▪ Tổ chức và quản lý bộ nhớ logic ▪ Định vị và tái định vị các tiến trình ▪ Chia sẻ bộ nhớ cho các tiến trình ▪ Bảo vệ vùng nhớ của các tiến trình
  6. I. KHÁI NIỆM CƠ SỞ ➢Layout của bộ nhớ:
  7. II. CÁC KIỂU ĐỊA CHỈ NHỚ ➢Bộ nhớ: là một dãy các ô nhớ liên tục nhau ➢Mỗi ô nhớ (một word) có một địa chỉ ➢Chương trình = tập các câu lệnh (chỉ thị máy) + dữ liệu ➢Nạp chương trình vào bộ nhớ => đặt các chỉ thị và dữ liệu vào các ô nhớ => xác định ánh xạ giữa các chỉ thị, dữ liệu vào địa chỉ trong bộ nhớ
  8. II. CÁC KIỂU ĐỊA CHỈ NHỚ ➢ Địa chỉ vật lý (physical address – địa chỉ thực, địa chỉ tuyệt đối) là một vị trí thực trong bộ nhớ chính. ➢ Địa chỉ logic (logical address – địa chỉ luận lý) là tham chiếu đến một vị trí nhớ độc lập với cấu trúc, và tổ chức vật lý của bộ nhớ. ▪ Các trình biên dịch (compiler) tạo ra mã lệnh chương trình mà trong đó, mọi tham chiếu bộ nhớ đều là địa chỉ logic. ➢ Địa chỉ tương đối (relative address) là một kiểu địa chỉ logic trong đó các địa chỉ được biểu diễn tương đối so với một điểm xác định nào đó trong chương trình. ➢ Khi lệnh được thực thi, các tham chiếu đến địa chỉ logic phải được dịch sang địa chỉ vật lý. Thao tác này cần có sự hổ trợ của phần cứng để đạt hiệu suất cao.
  9. NẠP CHƯƠNG TRÌNH VÀO BỘ NHỚ ➢Bộ linker: kết hợp các object module thành một file nhị phân khả thực thi gọi là load module. ➢Bộ loader: nạp load module vào bộ nhớ:
  10. CƠ CHẾ THỰC HIỆN LINKING
  11. III.CHUYỂN ĐỔI ĐỊA CHỈ NHỚ ➢Chuyển đổi địa chỉ: quá trình ánh xạ địa chỉ từ không gian địa chỉ này sang không gian địa chỉ khác. ➢Biểu diễn địa chỉ nhớ: ▪ Trong source code: tượng trưng (symbolic – biến, hằng, pointer,..) ▪ Thời điểm biên dịch: các địa chỉ có thể tái định vị (relocatable address), hay địa chỉ tương đối (relative address). • Ví dụ: biến a ở vị trí 14 bytes so với phần header của module. ▪ Thời điểm linking/ loading: địa chỉ tuyệt đối. Ví dụ: địa chỉ nằm tại địa chỉ bộ nhớ thực: 2030.
  12. III. CHUYỂN ĐỔI ĐỊA CHỈ NHỚ
  13. III. CHUYỂN ĐỔI ĐỊA CHỈ NHỚ ➢Việc ánh xạ chỉ thị, dữ liệu vào địa chỉ bộ nhớ có thể xảy ra tại 3 thời điểm: ▪ Thời điểm biên dịch: nếu địa chỉ vùng nhớ được biết trước thì mã lệnh tuyệt đối (có địa chỉ tuyệt đối) có thể được tạo ra ngay tại thời điểm biên dịch. Nếu địa chỉ bắt đầu của vùng nhớ bị thay đổi thì sẽ phải biên dịch lại. ▪ Thời điểm nạp: Tạo ra các mã lệnh có thể tái định vị (relocatable code) nếu địa chỉ vùng nhớ không thể biết tại thời điểm biên dịch.
  14. III. CHUYỂN ĐỔI ĐỊA CHỈ NHỚ ▪ Thời điểm thi hành: Việc kết hợp mã lệnh và địa chỉ sẽ được trì hoãn cho đến lúc chạy chương trình nếu tiến trình đó có thể bị di chuyển từ phân đoạn nhớ này đến phân đoạn nhớ khác. Cần phải có hỗ trợ từ phần cứng để ánh xạ địa chỉ (ví dụ: thanh ghi cơ sở và thanh ghi giới hạn (base registers, limit registers)).
  15. CHUYỂN ĐỔI VÀO THỜI ĐIỂM DỊCH ➢Ví dụ: chương trình .com của MS-DOS, phát biểu assembly org xxx
  16. CHUYỂN ĐỔI VÀO THỜI ĐIỂM NẠP
  17. CHUYỂN ĐỔI VÀO THỜI ĐIỂM THỰC THI
  18. DYNAMIC LINKING ➢ Quá trình link một số module ngoài (external module) được thực hiện sau khi đã tạo xong load module. ▪ Trong windows: module ngoài là các file dll, trong Unix là các file .so (shared library). ➢ Load module chỉ chứa các tham chiếu đến các module ngoài. Các tham chiếu này có thể chuyển đổi trong thời điểm sau: ▪ Loading time (load time dynamic linking) ▪ Run time: khi có một lời gọi đến thủ tục được định nghĩa trong module ngoài. (run time dynamic linking). ➢ OS chịu trách nhiệm tìm các module ngoài và kết nối vào load module (kiểm tra xem module ngoài đã load vào bộ nhớ chưa).
  19. DYNAMIC LINKING ➢Ưu điểm: ➢Module ngoài là một thư viện, thủ tục cung cấp các tiện ích của OS. Các chương trình thực thi có thể dùng các phiên bản khác nhau của module ngoài mà không cần sửa đổi, biên dịch lại. ➢Chia sẻ: một module ngoài chỉ cần nạp vào bộ nhớ một lần. Các process cần dùng module ngoài này thì cùng chia sẻ đoạn mã của module ngoài đó. ➢Phương pháp dynamic linking cần có sự hổ trợ của OS trong việc kiểm tra xem thủ tục nào có thể chia sẻ giữa các process hay một phần mã của riêng process.
  20. DYNAMIC LOADING ➢Cơ chế: chỉ khi nào được gọi đến thì một thủ tục mới được nạp vào bộ nhớ chính => tăng độ hiệu dụng của bộ nhớ (memory utilization) bởi vì các thủ tục ít dùng sẽ không chiếm chỗ trong bộ nhớ. ➢Rất hiệu quả trong trường hợp tồn tại khối lượng lớn mã chương trình có tần xuất sử dụng thấp, không sử dụng thường xuyên. ➢Không cần sự hổ trợ từ OS. ▪ User có trách nhiệm thiết kế và thực hiện các chương trình có dynamic loading. ▪ OS cung cấp các thư viện hổ trợ, tạo điều kiện cho các programmer.
nguon tai.lieu . vn