Bài giảng Hệ điều hành - Chương 4: Memory - Lương Minh Huấn

pdf 89 trang Gia Huy 16/05/2022 4170
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 4: Memory - Lương Minh Huấn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_he_dieu_hanh_chuong_4_memory_luong_minh_huan.pdf

Nội dung text: Bài giảng Hệ điều hành - Chương 4: Memory - Lương Minh Huấn

  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.
  21. III. CHUYỂN ĐỔI ĐỊA CHỈ NHỚ ➢Trong khi thực thi: ▪ Địa chỉ được chuyển đổi động trong khi thực thi. ▪ Không gian địa chỉ vật lý có thể không liên tục (noncontigunous). ▪ Cần có phần cứng để chuyển đổi địa chỉ logic sang địa chỉ vật lý được nhanh.
  22. MEMORY MANAGEMENT UNIT (MMU) ➢Là một cơ chế phần cứng để ánh xạ địa chỉ logic thành địa chỉ vật lý vào thời điểm xử lý. ➢Trong mô hình MMU, mỗi địa chỉ phát sinh bởi một tiến trình được cộng thêm giá trị của thanh ghi tái định vị (relocation register) tại thời điểm nó truy xuất đến bộ nhớ. ➢Chương trình người dùng chỉ quan tâm đến địa chỉ lôgic; nó không thấy địa chỉ vật lý thật sự.
  23. MEMORY MANAGEMENT UNIT (MMU)
  24. IV. CẤP PHÁT BỘ NHỚ LIÊN TỤC ➢Ý tưởng: ➢Mỗi tiến trình được nạp vào một vùng nhớ liên tục đủ lớn để chứa toàn bộ tiến trình. ➢Ưu điểm: việc chuyển đổi địa chỉ logic thành địa chỉ vật lý và ngược lại chỉ cần dựa vào một công thức đơn giản = +
  25. HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ ➢Cấp phát liên tục có nhược điểm lớn nhất là không sử dụng hiệu quả bộ nhớ do hiện tượng phân mảnh bộ nhớ. ➢Không thể nạp được một tiến trình nào đó do không có một vùng nhớ trống liên tục đủ lớn trong khi tổng kích thước các vùng nhớ trống đủ để thỏa mãn yêu cầu. ➢Ví dụ: nếu bộ nhớ có ba vùng nhớ trống liên tục với kích thước 1MB, 3MB, 5MB thì không thể nào nạp một chương trình có kích thước 6MB mặc dù tổng kích thước bộ nhớ trống là 9MB.
  26. HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ ➢Phân mảnh ngoại (external fragmentation): ▪ Vùng nhớ còn trống đủ lớn để thỏa mãn một yêu cầu cấp phát, nhưng lại không liên tục. ▪ Dùng kết khối (compacting), nếu có thể, để gom lại thành vùng nhớ liên tục. ➢Phân mảnh nội (internal fragmentation): ▪ Vùng nhớ được cấp phát lớn hơn vùng nhớ yêu cầu. ▪ Thường xảy ra khi bộ nhớ thực được chia thành các khối kích thước cố định (fixed-sized block) và các process được cấp phát theo đơn vị khối.
  27. HIỆN TƯỢNG PHÂN MẢNH BỘ NHỚ
  28. IV. CẤP PHÁT BỘ NHỚ LIÊN TỤC ➢Để giải quyết vấn đề phân mảnh bộ nhớ: ▪ Đề ra chiến lược cấp phát hợp lý ▪ Tái định vị các tiến trình ▪ Sử dụng kỹ thuật hoán vị (swapping) ▪ Sử dụng kỹ thuật phủ lấp (overlay)
  29. ĐỀ RA CHIẾN LƯỢC CẤP PHÁT HỢP LÝ ➢Chọn vùng nhớ trống nào để cấp phát cho một tiến trình khi có nhu cầu. ▪ First-fit: Cấp phát vùng nhớ trống liên tục đầu tiên đủ lớn. ▪ Best-fit: Cấp phát vùng nhớ trống liên tục nhỏ nhất đủ lớn. Chiến lược này tạo ra lỗ trống nhỏ nhất còn thừa lại => phải tìm kiếm trên toàn bộ danh sách các vùng trống. ▪ Worst-fit: cấp phát vùng nhớ trống liên tục lớn nhất đủ lớn => phải tìm kiếm trên toàn bộ danh sách. ➢First-fit tốt hơn về tốc độ và Best-fit tối ưu hóa việc sử dụng bộ nhớ.
  30. TÁI ĐỊNH VỊ CÁC TIẾN TRÌNH ➢Kết hợp các mảnh bộ nhớ trống nhỏ rời rạc thành một vùng nhớ trống lớn liên tục. ➢Đòi hỏi nhiều thời gian xử lý, ngoài ra sự kết buộc địa chỉ phải thực hiện vào thời điểm xử lý vì các tiến trình có thể bị di chuyển trong quá trình dồn bộ nhớ.
  31. TÁI ĐỊNH VỊ CÁC TIẾN TRÌNH
  32. KỸ THUẬT HOÁN VỊ (SWAPPING) ➢Cơ chế: di chuyển một process khỏi bộ nhớ chính và lưu trên bộ nhớ phụ (swap out). Khi thích hợp, nạp process vào bộ nhớ (swap in) để có thể tiếp tục thực thi. ➢Chính sách: ▪ Round Robin ▪ Roll out, Roll in: Dùng theo độ ưu tiên (process có độ ưu tiên thấp sẽ bị swap out ra thay thế cho process có độ ưu tiên cao hơn).
  33. KỸ THUẬT HOÁN VỊ (SWAPPING)
  34. KỸ THUẬT PHỦ LẤP (OVERLAY) ➢Cơ chế: Chia chương trình (process) thành nhiều phần nhỏ hơn bộ nhớ, mỗi phần là một overlay. ➢Chỉ lưu trong bộ nhớ chỉ thị và dữ liệu đang cần. ➢Cơ chế này rất hữu ích khi kích thước một process lớn hơn không gian bộ nhớ cấp cho process đó. ➢Đòi hỏi sự hỗ trợ của ngôn ngữ lập trình và người lập trình phải quan tâm đến kích thước bộ nhớ ngay khi lập trình.
  35. KỸ THUẬT PHỦ LẤP (OVERLAY)
  36. ÁNH XẠ BỘ NHỚ TẠI THỜI ĐIỂM NẠP CHƯƠNG TRÌNH ➢Hệ điều hành sẽ trả về địa chỉ bắt đầu nạp tiến trình và thay các địa chỉ tham chiếu trong tiến trình (đang là địa chỉ logic) bằng địa chỉ vật lý theo công thức : (địa chỉ vật lý) = (địa chỉ bắt đầu) + (địa chỉ logic) ➢Mô hình linker -loader
  37. ÁNH XẠ BỘ NHỚ TẠI THỜI ĐIỂM THỰC THI if (địa chỉ logic) < (giá trị thanh ghi giới hạn) then (địa chỉ vật lý) = (giá trị thanh ghi nền) + (địa chỉ logic) else báo lỗi ➢Mô hình Base and Bound:
  38. MÔ HÌNH QUẢN LÝ BỘ NHỚ THỰC ➢Các cơ chế quản lý bộ nhớ thực sau đây rất ít (hầu như là không có) được dùng trong các hệ thống hiện đại, tuy nhiên, nó là ý tưởng cơ bản cho mô hình quản lý bộ nhớ ảo sau này. ▪ Phân chia cố định (fix partition) ▪ Phân chia động (dynamic partition) ▪ Phân trang đơn giản (simple paging) ▪ Phân đoạn đơn giản (simple segmentation). ➢Mô hình này không bao gồm bộ nhớ ảo, chỉ duy nhất bộ nhớ thực.
  39. FIXED PARTITION ➢Chia bộ nhớ thành nhiều partition có kích thước bằng nhau hoặc khác nhau. ➢Process nào có kích thước nhỏ hơn hoặc bằng kích thước của partition thì được nạp vào partition đó. ➢Nếu chương trình có kích thước lớn hơn partition thì phải dùng cơ chế overlay. ➢Nhận xét: dễ bị phân mảnh nội => không hiệu quả
  40. CHIẾN LƯỢC PLACEMENT ➢ Partition có kích thước bằng nhau: ▪ Còn một partition trống => process được nạp vào partition đó. ▪ Không còn partition trống nhưng trong đó có process đang bị blocked => swap process đó ra bộ nhớ phụ nhường chỗ cho process mới. ➢ Partition có kích thước khác nhau: ▪ Gán mỗi process vào partition có kích thước nhỏ nhất, phù hợp với nó. ▪ Có hàng đợi cho mỗi partition. ▪ Giảm thiểu phân mảnh nội. ▪ Vấn đề: có thể có hàng đợi full, một số hàng đợi empty.
  41. CHIẾN LƯỢC PLACEMENT
  42. CHIẾN LƯỢC PLACEMENT ➢Partition có kích thước không bằng nhau: ▪ Chỉ có một hàng đợi chung cho các partition. ▪ Khi cần nạp process vào bộ nhớ => chọn partition có bộ còn trống nhỏ nhất.
  43. DYNAMIC PARTITION ➢Số lượng partition không cố định và kích thước không giống nhau. ➢Mỗi process được cấp phát chính xác dung lượng bộ nhớ của mình ➢Gây ra hiện tượng phân mảnh ngoại.
  44. CHIẾN LƯỢC PLACEMENT ➢Dùng để quyết định cấp phát khối bộ nhớ nào còn trống cho process. ➢Chiến lược placement: ▪ Best fit ▪ First fit ▪ Next fit ▪ Worst fit
  45. V. CẤP PHÁT KHÔNG LIÊN TỤC ➢Ý tưởng: chia các vùng nhớ thành các frame (segment), các tiến trình thành các fragment (pages). Các fragment (pages) sẽ được đưa vào các frame (segment). Các frame (segment) sẽ không được lưu trữ liên tục trên không gian vùng nhớ. ➢Các kỹ thuật: ▪ Phân trang (paging) ▪ Phân đoạn (segment) ▪ Phân trang kết hợp phân đoạn.
  46. PHƯƠNG PHÁP PHÂN TRANG (PAGING) ➢ Không gian địa chỉ logic của một tiến trình có thể không liên tục. ➢ Chia bộ nhớ vật lý thành các khối có kích thước cố định gọi là khung(frame) (kích thước là số mũ của 2, từ 512 đến 8192 bytes). ➢ Chia bộ nhớ logic thành các khối có cùng kích thước và gọi là trang(pages). ➢ Lưu trạng thái của tất cả các khung (frame). ➢ Để chạy một chương trình có kích thước n trang, cần phải tìm n khung trống và nạp chương trình vào. ➢ Tạo một bảng trang để chuyển đổi địa chỉ lôgic sang địa chỉ vật lý. ➢ Có hiện tượng phân mảnh bộ nhớ nội vi
  47. PHƯƠNG PHÁP PHÂN TRANG (PAGING)
  48. MÔ HÌNH CHUYỂN ĐỔI ĐỊA CHỈ ➢Địa chỉ được tạo ra bởi CPU gồm có hai phần: ▪ Số trang (Page number)(p)–được dùng như là một chỉ số của một bảng trang chứa địa chỉ cơ sở của mỗi trang trong bộ nhớ vật lý. ▪ Page offset(d)–kết hợp với địa chỉ cơ sở để định ra không gian địa chỉ vật lý được gởi đến bộ nhớ.
  49. MÔ HÌNH CHUYỂN ĐỔI ĐỊA CHỈ
  50. MÔ HÌNH CHUYỂN ĐỔI ĐỊA CHỈ
  51. CHUYỂN ĐỔI ĐỊA CHỈ NHỚ TRONG TRANG
  52. CÀI ĐẶT BẢNG TRANG (PAGE TABLE) ➢ Bảng trang được đặt trong bộ nhớ. ➢ Page-table base register (PTBR) chỉ đến bảng trang. ➢ Page-table length register (PRLR) cho biết kích thước của bảng trang. ➢ Với mô hình này, mọi sự truy cập chỉ thị/ dữ liệu đều đòi hỏi hai lần truy cập vùng nhớ: 1)truy cập bảng trang; 2)chỉ thị hoặc dữ liệu => có vẻ chậm. ➢ Khắc phục vấn đề hai lần truy cập vùng nhớ bằng cách sử dụng một vùng đệm phần cứng tra cứu nhanh đặc biệt (special fast-lookup hardware) gọi là associative registers hoặc translation look-aside buffers (TLBs)
  53. CÀI ĐẶT BẢNG TRANG (PAGE TABLE)
  54. TRANSLATION LOOK-ASIDE BUFFERS ➢TLB tìm kiếm truy xuất dữ liệu với tốc độ cực nhanh. ➢Ánh xạ page number: ▪ Nếu page number có trong TLB (hit) => lấy ngay được frame number => tiết kiệm được việc truy cập bộ nhớ để lấy frame number từ bảng phân trang. ▪ Ngược lại (miss), phải lấy frame number từ bảng phân trang như bình thường.
  55. BẢO VỆ VÙNG NHỚ ➢Làm sao biết trang nào của tiến trình nào? Cần bảo vệ các tiến trình truy xuất vào trang không phải của mình. ➢Việc bảo vệ vùng nhớ được cài đặt bằng cách liên kết một khung với một bit, gọi là bit kiểm tra hợp lệ (valid-invalid bit). ➢Valid-invalid bit được đính kèm vào mỗi ô trong bảng trang: ▪ “valid” chỉ ra rằng trang đi kèm là nằm trong không gian địa chỉ lôgic của tiến trình vì vậy truy xuất trang này là hợp lệ. ▪ “invalid” chỉ ra rằng trang đi kèm không nằm trong không gian địa chỉ lôgic của tiến trình.
  56. TỔ CHỨC BẢNG TRANG (PAGE TABLE) ➢Chỉ một bảng trang (cho mỗi tiến trình) ➢Tiến trình nhiều trang => quản lý bộ nhớ rất lớn => số trang nhiều => kích thước của bảng trang phải lớn => không tối ưu. ➢Giải pháp: ▪ Phân trang đa cấp (multilevel paging) ▪ Bảng trang nghịch đảo
  57. PHÂN TRANG ĐA CẤP ➢Phân chia bảng trang thành các phần nhỏ ➢Bản thân bảng trang cũng được phân trang
  58. MÔ HÌNH PHÂN TRANG 2 CẤP
  59. VÍ DỤ PHÂN TRANG 2 CẤP ➢Một địa chỉ lôgic (trên máy 32 bit với kích thước trang là 4K) được chia thành: ▪ Page number: 20 bit. ▪ Page offset: 12 bit. ➢Bởi vì bảng trang được phân trang, số trang tiếp tục được phân chia thành: ▪ Page number: 10-bit. ▪ Page offset: 10 bit. ➢Địa chỉ lôgic sẽ có cấu trúc như sau:
  60. VÍ DỤ PHÂN TRANG 2 CẤP ➢Chuyển đổi địa chỉ
  61. VÍ DỤ PHÂN TRANG 2 CẤP ➢Nếu chỉ dùng một trang ▪ bảng trang sẽ có 220phần tử. ➢Nếu dùng phân trang 2 cấp ▪ Bảng trang ngoài cần 210phần tử ▪ Bảng trang trong vẫn có 220 phần tử nhưng có thể được đặt ở vùng nhớ phụ
  62. BẢNG PHÂN TRANG 2 MỨC ➢Bảng phân trang 2 mức giúp tiết kiệm bộ nhớ.
  63. BẢNG TRANG NGHỊCH ĐẢO ➢Sử dụng một bảng trang duy nhất cho mọi tiến trình ➢Một entry cho mỗi khung (bộ nhớ vật lý). ➢Một entry bao gồm địa chỉ ảo của khung và tiến trình sở hữu khung đó. ➢Giảm kích thước lưu trữ bảng trang, nhưng tăng thời gian tìm kiếm bảng trang. ➢Dùng bảng băm để tăng tốc tìm kiếm.
  64. BẢNG TRANG NGHỊCH ĐẢO
  65. GIẢI THUẬT TÌM TRANG ➢Chỉ số trang được biến đổi thành hash value – chỉ số mục cần truy cập trong bảng băm. Sau đó, trong danh sách liên kết của mục, tìm phần tử chứa chỉ số trang để trích ra được chỉ số frame.
  66. CHIA SẺ ➢Chia sẻ ▪ Ở cấp độ trang ▪ Đứng ở khía cạnh người dùng, khá bất tiện • Vd: Đoạn mã nằm trên nhiều trang => phải chia sẻ tất cả các trang đó với nhau. ▪ Đoạn mã phải nằm ở một vị trí giống nhau trong tất cả các không gian địa chỉ của của tiến trình muốn chia sẻ
  67. CHIA SẺ
  68. PHÂN ĐOẠN ➢Hổ trợ quản lý bộ nhớ theo góc độ người dùng. ➢Một chương trình bao gồm nhiều phân đoạn (segment): ▪ Đoạn mã ▪ Biến toàn cục, dữ liệu ▪ stack ▪ heap
  69. PHÂN ĐOẠN ➢Thông thường, khi một chương trình được biên dịch. Trình biên dịch sẽ tự động xây dựng các segment. ➢Loader sẽ gán cho mỗi segment một số định danh riêng.
  70. PHÂN ĐOẠN
  71. PHÂN ĐOẠN ➢Dùng cơ chế phân đoạn trong quản lý bộ nhớ có hổ trợ user view: ▪ Không gian địa chỉ ảo là một tập các đoạn, mỗi đoạn có tên và kích thước riêng. ▪ Một địa chỉ logic gồm tên đoạn và offset bên trong đoạn đó. ▪ Cho phép không gian địa chỉ vật lý cấp không liên tục cho các process.
  72. PHÂN ĐOẠN
  73. PHÂN ĐOẠN ➢Địa chỉ logic = ➢Bảng phân đoạn (Segment table): chuyển đổi địa chỉ hai chiều thành địa chỉ vật lý một chiều. Mỗi ô trong bảng gồm có: ▪ Thanh ghi nền (base) –chứa địa chỉ vật lý bắt đầu của phân đoạn trong bộ nhớ chính. ▪ Thanh ghi giới hạn (limit)–chỉ kích thước của phân đoạn. ➢Segment-table base register (STBR)lưu trữ địa chỉ của bảng phân đoạn trong vùng nhớ. ➢Segment-table length register (STLR)chỉ số segment được sử dụng bởi 1 chương trình
  74. PHÂN ĐOẠN
  75. CHUYỂN ĐỔI ĐỊA CHỈ ➢Mỗi địa chỉ ảo là một bộ : ➢số hiệu phân đoạn s : được sử dụng như chỉ mục đến bảng phân đoạn ➢địa chỉ tương đối d : có giá trị trong khoảng từ 0 đến giới hạn chiều dài của phân đoạn. Nếu địa chỉ tương đối hợp lệ, nó sẽ được cộng với giá trị chứa trong thanh ghi nền để phát sinh địa chỉ vật lý tương ứng
  76. CHUYỂN ĐỔI ĐỊA CHỈ
  77. CHUYỂN ĐỔI ĐỊA CHỈ
  78. KIẾN TRÚC PHÂN ĐOẠN ➢Tái định vị. ▪ Động (dynamic partition) ▪ Thông qua bảng phân đoạn ➢Chia sẻ. ▪ Có thể chia sẻ các phân đoạn giữa các chương trình ▪ Sử dụng chung chỉ số segment ➢Cấp phát. ▪ first fit/best fit ▪ Có hiện tượng phân mảnh ngoại vi
  79. KIẾN TRÚC PHÂN ĐOẠN
  80. KIẾN TRÚC PHÂN ĐOẠN ➢Bảo vệ ▪ Mỗi entry thêm một bit “valid bit”. Nếu valid bit = 0 truy cập phân đoạn không hợp lệ ▪ Hỗ trợ phân quyền theo từng thao tác read/write/execute
  81. CHIA SẺ CÁC ĐOẠN
  82. KẾT HỢP PHÂN TRANG VÀ PHÂN ĐOẠN ➢ Ý tưởng: ▪ Phân trang trong mỗi phân đoạn ▪ Bộ nhớ = nhiều phân đoạn ▪ Phân đoạn = nhiều trang ➢ Giải quyết tình trạng phân mảnh ngoại vi ➢ Mỗi phần tử của bảng phân đoạn gồm hai thành phần: ▪ Thanh ghi giới hạn (limit): kích thước của phân đoạn (giống với phân đoạn thuần) ▪ Thanh ghi cơ sở (base): chứa địa chỉ của bảng trang của phân đoạn đó (khác với phân đoạn thuần)
  83. KẾT HỢP PHÂN TRANG VÀ PHÂN ĐOẠN
  84. KẾT HỢP PHÂN TRANG VÀ PHÂN ĐOẠN
  85. KẾT HỢP PHÂN TRANG VÀ PHÂN ĐOẠN