Chương III QUẢN lý bộ NHỚ

55 266 0
Chương III  QUẢN lý bộ NHỚ

Đ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

Chương III QUẢN LÝ BỘ NHỚ Quản lý nhớ nhiệm vụ quan trọng phức tạp hệ điều hành Bộ phận quản lý nhớ xem nhớ tài nguyên hệ thống dùng để cấp phát chia sẻ cho nhiều tiến trình trạng thái active Các hệ điều hành mong muốn có nhiều tiến trình nhớ Công cụ quản lý nhớ phân trang (paging) phân đoạn (segmentation) Với phân trang tiến trình chia thành nhiều phần nhỏ có quan hệ với nhau, với kích thước trang cố định Sự phân đoạn cung cấp cho chươngtrình người sử dụng khối nhớ có kích thước khác Hệ điều hành kết hợp phân trang phân đoạn để có chiến lược quản lý nhớ linh hoạt III.1 Nhiệm vụ quản lý nhớ Trong hệ thống đơn chương trình (uniprogramming), nhớ hệ điều hành, có chương trình thực Trong hệ thống đa chương (multiprogramming) nhớ hệ điều hành, có nhiều tiến trình hoạt động Do nhiệm vụ quản lý nhớ hệ điều hành hệ thống đa chương trình phức tạp nhiều so với hệ thống đơn chương trình Trong hệ thống đa chương phận quản lý nhớ phải có nhiệm vụ đưa tiến trình vào nhớ có yêu cầu, kể nhớ không không gian trống, phải bảo vệ hệ điều hành tiến trình nhớ tránh trường hợp truy xuất bất hợp lệ xảy Như việc quản lý nhớ hệ thống đa chương quan trọng cần thiết Bộ phận quản lý nhớ phải thực nhiệm vụ sau đây:  Sự tái định vị (Relocation): Trong hệ thống đa chương, không gian nhớ thường chia sẻ cho nhiều tiến trình khác yêu cầu nhớ tiến trình lớn không gian nhớ vật lý mà hệ thống có Do dó, chương trình hoạt động nhớ bị đưa đĩa (swap-out) đưa vào lại (swap-in) nhớ thời điểm thích hợp sau Vấn đề đặt đưa chương trình vào lại nhớ hệ điều hành phải định vị vào vị trí mà nạp trước Để thực điều hệ điều hành phải có chế để ghi lại tất thông tin liên quan đến chương trình bị swap-out, thông tin sở để hệ điều hành swap-in chương trình vào lại nhớ cho tiếp tục hoạt động Hệ điều hành buộc phải swap-out chương trình không gian nhớ để nạp tiến trình khác, dó sau swap-out chương trình Chương III: Quản lý Bộ nhớ 93 hệ điều hành phải tổ chức lại nhớ để chuẩn bị nạp tiến trình vừa có yêu cầu Các nhiệm vụ phần quản lý nhớ hệ điều hành thực Ngoài nhiệm vụ hệ điều hành phải có khả chuyển đổi địa nhớ ghi code chương trình thành địa vật lý thực tế nhớ chương trình thực thao tác truy xuất nhớ, người lập trình trước trạng nhớ vị trí mà chương trình nạp chương trình họ hoạt động Trong số trường hợp khác chương trình bị swap-out swap-in vào lại nhớ vị trí khác với vị trí mà nạp trước  Bảo vệ nhớ (Protection): Mỗi tiến trình phải bảo vệ để chống lại truy xuất bất hợp lệ vô tình hay có chủ ý tiến trình khác Vì tiến trình chương trình khác tham chiếu đến vùng nhớ dành cho tiến trình khác để thực thao tác đọc/ghi mà không phép (permission), mà truy xuất đến không gian địa nhớ mà hệ điều hành cấp cho tiến trình Để thực điều hệ thống quản lý nhớ phải biết không gian địa tiến trình khác nhớ phải kiểm tra tất yêu cầu truy xuất nhớ tiến trình tiến trình đưa địa truy xuất Điều khó thực xác định địa chương trình nhớ trình biên dịch mà phải thực việc tính toán địa thời điểm chạy chương trình Hệ điều hành có nhiều chiến lược khác để thực điều Điều quan trọng mà hệ thống quản lý nhớ phải thực không cho phép tiến trình người sử dụng truy cập đến vị trí hệ điều hành, ngoại trừ vùng liệu rountine mà hệ điều hành cung cấp cho chương trình người sử dụng  Chia sẻ nhớ (Sharing): Bất kỳ chiến lược cài đặt phải có tính mềm dẻo phép nhiều tiến trình truy cập đến địa nhớ Ví dụ, có nhiều tiến trình thực chương trình việc cho phép tiến trình truy cập đến copy chương trình thuận lợi cho phép tiến trình truy cập đến copy sở hữu riêng Các tiến trình đồng thực (co-operating) vài tác vụ cần để chia sẻ truy cập đến cấu trúc liệu Hệ thống quản lý nhớ phải điều khiển việc truy cập đến không gian nhớ chia sẻ mà không vi phạm đến yêu cầu bảo vệ nhớ Ngoài ra, môi trường hệ điều hành đa nhiệm hệ điều hành phải chia sẻ không gian nhớ cho tiến trình để hệ điều hành nạp nhiều tiến trình vào nhớ để tiến trình hoạt động đồng thời với  Tổ chức nhớ logic (Logical organization): Bộ nhớ hệ thống máy tính tổ chức dòng mảng, không gian địa bao gồm dãy có thứ tự byte word Bộ nhớ phụ tổ chức tương tự Mặc dù việc tổ chức có kết hợp chặt chẽ với phần cứng thực tế máy không phù hợp với chương trình Đa số chương trình chia thành modun, vài số thay đổi (read only, execute only) vài số chứa liệu thay đổi Nếu hệ điều hành phần cứng máy tính giao dịch cách hiệu với chương trình người sử dụng liệu modun số thuận lợi thấy rõ sau đây: Chương III: Quản lý Bộ nhớ 94 • Các modun viết biên dịch độc lập, với tất tham chiếu từ modun đến modun khác giải hệ thống thời điểm chạy • Các mức độ khác bảo vệ, read-only, execute-only, cho modun khác • Nó đưa chế để modun chia sẻ tiến trình Công cụ đáp ứng cho yêu cầu phân đoạn (segmentation), kỹ thuật quản lý nhớ trình bày chương  Tổ chức nhớ vật lý (Physical organization): Như biết nhớ máy tính tổ chức theo cấp: nhớ nhớ phụ Bộ nhớ cung cấp tốc độ truy cập liệu cao, liệu phải làm tươi thường xuyên tồn lâu dài Bộ nhớ phụ có tốc độ truy xuất chậm rẻ tiền so với nhớ không cần làm tươi thường xuyên Vì nhớ phụ có khả lưu trữ lớn cho phép lưu trữ liệu chương trình khoảng thời gian dài, nhớ để giữ (hold) khối lượng nhỏ chương trình liệu sử dụng thời điểm Trong giản đồ cấp này, việc tổ chức luồng thông tin nhớ nhớ phụ nhiệm vụ quan trọng hệ thống Sự chịu trách nhiệm cho luồng gán cho người lập trình riêng, điều không hợp lý gây rắc rối, hai nguyên nhân: • Không gian nhớ dành cho chương trình với liệu thường không đủ, trường hợp này, người lập trình phải tiến hành thao tác hiểu Overlaying, theo chương trình liệu tổ chức thành modun khác gán vùng nhớ, có chương trình chịu trách nhiệm chuyển modun vào cần • Trong môi trường đa chương trình, người lập trình biết thời điểm xác định có không gian nhớ trống không gian nhớ trống Như nhiệm vụ di chuyển thông tin cấp nhớ phải hệ thống thực Đây nhiệm vụ mà thành phần quản lý nhớ phải thực III.2 Kỹ thuật cấp phát nhớ (nạp chương trình vào nhớ chính) III.2.1 Kỹ thuật phân vùng cố định (Fixed Partitioning) Trong kỹ thuật không gian địa nhớ chia thành phần cố định, phần nằm vùng địa thấp dùng để chứa hệ điều hành, phần lại, tạm gọi phần user program, sẵn sàng cho việc sử dụng tiến trình tiến trình nạp vào nhớ Trong hệ thống đơn chương, phần user program dùng để cấp cho chương trình nhất, nhiệm vụ quản lý nhớ hệ điều hành trường hợp đơn giản hơn, hệ điều hành kiểm soát truy xuất nhớ chương trình người sử dụng, không cho truy xuất lên vùng nhớ hệ điều hành Để thực Chương III: Quản lý Bộ nhớ 95 việc hệ điều hành sử dụng ghi giới hạn để ghi địa ranh giới hệ điều hành chương trình người sử dụng, theo chương trình người sử dụng cần truy xuất địa hệ điều hành so sánh địa với giá trị địa ghi thành ghi giới hạn, nhỏ từ chối không cho truy xuất, ngược lại cho phép truy xuất Việc so sánh địa cần phải có hỗ trợ phần cứng làm giảm tốc độ truy xuất nhớ hệ thống bảo vệ hệ điều hành tránh việc chương trình người sử dụng làm hỏng hệ điều hành dẫn đến làm hỏng hệ thống Trong hệ thống đa chương, phần user program lại phân thành nhiều phân vùng (partition) với biên vùng cố định có kích thước hay không Trong trường hợp tiến trình nạp vào partition kích thước nhỏ kích thước partition partition trống Khi có tiến trình cần nạp vào nhớ tất partition chứa tiến trình khác hệ điều hành chuyển tiến trình đó, mà hệ điều hành cho hợp lệ (kích thước vừa đủ, không trạng thái ready running, quan hệ với tiến trình running khác, ), (swap out), để lấy partition trống nạp tiến trình vừa có yêu cầu Đây nhiệm vụ phức tạp hệ điều hành, hệ điều hành phí cao cho công việc Có hai trở ngại việc sử dụng phân vùng cố định với kích thước nhau: • Thứ nhất, kích thước chương trình lớn so với kích thước partition người lập trình phải thiết kế chương trình theo cấu trúc overlay, theo phần chia cần thiết chương trình nạp vào nhớ khởi tạo chương trình, sau người lập trình phải nạp tiếp modun cần thiết khác vào partition chương trình ghi đè lên chương trình liệu Cấu trúc chương trình overlay tiết kiệm nhớ yêu cầu cao người lập trình • Thứ hai, kích thước chương trình nhỏ kích thước partition lớn so với kích thước partition bội số kích thước partition dễ xảy tượng phân mảnh bên (internal fragmentation) nhớ, gây lãng phí nhớ Ví dụ, có không gian trống kích thước 30K nằm rãi rác nhớ, không nạp modun chương trình có kích thước 12K, tượng gọi tượng phân mảnh bên Cả hai vấn đề khắc phục cách sử dụng phân vùng có kích thước không Việc đưa tiến trình vào partition hệ thống đa chương với phân vùng cố định kích thước không phức tạp nhiều so với trường hợp phân vùng có kích thước Với partition có kích thước không có hai cách để lựa chọn đưa tiến trình vào partition: • Mỗi phân vùng có hàng đợi tương ứng, theo tiến trình cần nạp vào nhớ đưa đến hành đợi phân vùng có kích thước Chương III: Quản lý Bộ nhớ 96 vừa đủ để chứa nó, để vào/để đợi vào phân vùng Cách tiếp cận đơn giản việc đưa tiến trình từ hàng đợi vào phân vùng lựa chọn khác đây, phân vùng mà tiến trình đợi trống đưa vào phân vùng Tuy nhiên tiếp cận linh động có phân vùng trống, có nhiều tiến trình phải phải đợi để nạp vào phân vùng khác, điều gây lãng phí việc sử dụng nhớ • Hệ thống dùng hàng đợi chung cho tất phân vùng, theo tất tiến trình muốn nạp vào phân vùng chưa vào đưa vào hàng đợi chung Sau có phân vùng trống hệ thống xem xét để đưa tiến trình có kích thước vừa đủ vào phân vùng trống Cách tiếp cận linh động so với việc sử dụng nhiều hàng đợi trên, việc chọn tiến trình hàng đợi để đưa vào phân vùng việc làm phức tạp hệ điều hành phải dựa vào nhiều yếu tố khác như: độ ưu tiên tiến trình, trạng thái tiến trình, mối quan hệ tiến trình, New Process New Process Hệ điều Hệ điều hành hành Hình 3.1a: Mỗi partition Hình 3.1b: Một hàng đợi Mặc dầuđợi riêng phân vùng cố định với kích thước cung cấp có hàng chungkhông cho tấtbằng partition mềm dẻo so với phân vùng cố định với kích thước nhau, hai loại số hạn chế sau đây: • Số lượng tiến trình hoạt động hệ thống thời điểm phụ thuộc vào số lượng phân vùng cố định nhớ • Tương tự trên, nêu kích thước tiến trình nhỏ kích thước phân vùng dẫn đến tượng phân mảnh nội vi gây lãng phí việc sử dụng nhớ Sự phân vùng cố định sử dụng hệ điều hành III.2.2 Kỹ thuật phân vùng động (Dynamic Partitioning) Để khắc phục vài hạn chế kỹ thuật phân vùng cố định, kỹ thuật phân vùng động đời Kỹ thuật thường sử dụng hệ điều hành gần hệ điều hành mainframe IBM, hệ điều hành OS/MVT, Trong kỹ thuật phân vùng động, số lượng phân vùng nhớ kích Chương III: Quản lý Bộ nhớ 97 thước phân vùng thay đổi Tức phần user program nhớ không phân chia trước mà ấn định sau có tiến trình nạp vào nhớ Khi có tiến trình nạp vào nhớ hệ điều hành cấp cho không gian vừa đủ để chứa tiến trình, phần lại để sẵn sàng cấp cho tiến trình khác sau Khi tiến trình kết thúc đưa phần không gian nhớ mà tiến trình trả lại cho hệ điều hành hệ điều hành cấp cho tiến trình khác, tiến trình có kích thước nhỏ kích thước không gian nhớ trống Process3 360k Process2 280k Process2 280k Process1 320k Process1 320k Process1 320k HÖ ®iÒu hµnh HÖ ®iÒu hµnh HÖ ®iÒu hµnh HÖ ®iÒu hµnh (a) (b) (c) (d) Process3 Process3 Process3 360k 360k 360k Process4 Process4 Process4 Process2 HÖ ®iÒu hµnh HÖ ®iÒu hµnh Process3 360k Process1 320k Process1 320k HÖ ®iÒu hµnh HÖ ®iÒu hµnh (e) (h) (g) (f) Hình 3.2: Kết phân trang động với thứ tự nạp tiến trình Hình vẽ 3.2 minh họa cho trình nạp/kết thúc tiến trình theo thứ tự: nạp process1, nạp process2, nạp process3, kết thúc process2, nạp process4, kết thúc process1, nạp process2 vào lại, hệ thống phân vùng động Như nhớ hình thành nhiều không gian nhớ có kích thước nhỏ không đủ chứa tiến trình nằm rải rác nhớ chính, tượng gọi thượng phân mảnh bên (external fragmentation) Để chống lại lãng phí nhớ phân mảnh, hệ điều hành phải thực việc xếp lại nhớ, để không gian nhớ nhỏ Chương III: Quản lý Bộ nhớ 98 rời rác nằm liền kề lại với tạo thành khối nhớ có kích thước đủ lớn để chứa tiến trình Việc làm làm chậm tốc độ hệ thống, hệ điều hành phí cao cho việc này, đặc biệt việc tái định vị tiến trình tiến trình bị đưa khỏi nhớ nạp vào lại nhớ để tiếp tục hoạt động Trong kỹ thuật phân vùng động hệ điều hành phải đưa chế thích hợp để quản lý khối nhớ cấp phát hay trống nhớ Hệ điều hành sử dụng chế: Bản đồ bít Danh sách liên kết Trong chế hệ điều hành chia không gian nhớ thành đơn vị cấp phát có kích thước nhau, đơn vị cấp phát liên tiếp tạo thành khối nhớ (block), hệ điều hành cấp phát block cho tiến trình nạp tiến trình vào nhớ A 00 01 02 03 B 04 05 06 07 08 C 09 10 11 12 13 14 15 D 16 17 18 19 20 21 Hình 3.3a: Một đoạn nhớ bao gồm 22 đơn vị cấp phát, tạo thành block, có block cấp phát (tô đậm, kí hiệu P) cho tiến trình: A, B, C, D block chưa cấp phát (để trắng, kí hiệu H) • Trong chế đồ bít: đơn vị cấp phát đại diện bít đồ bít Đơn vị cấp phát trống đại diện bít 0, ngược lại đơn vị cấp phát đại diện bít Hình 3.3b đồ bít khối nhớ 00111000 11000011 101100 H P H P H 10 P 14 H 17 P 18 20 Hình 3.3b: quản lý đơn vị cấp phát Hình 3.3c: quản lý đơn vị cấp phát danh đồ bít sách • Trong chế danh sách liênliên kết:kết Mỗi block nhớ đại diện phần tử danh sách liên kết, phần tử gồm có trường chính: trường thứ cho biết khối nhớ cấp phát (P: process) hay trống (H: Hole), trường thứ hai cho biết thứ tự đơn vị cấp phát block, trường thứ ba cho biết block gồm đơn vị cấp phát Hình 3.3c danh sách liên kết khối nhớ Như cần nạp tiến trình vào nhớ hệ điều hành phải dựa vào đồ bit danh sách liên kết để tìm block có kích thước đủ để nạp tiến trình Sau thực thao tác cấp phát sau đưa tiến trình khỏi nhớ hệ điều hành phải cập nhật lại đồ bít danh sách liên kết, điều làm giảm tốc độ thực hệ thống Chọn kích thước đơn vị cấp phát vấn đề quan trọng thiết kế, kích thước đơn vị cấp phát nhỏ đồ bít lớn, hệ thống phải tốn nhớ để chứa Nếu kích thước đơn vị cấp phát lớn đồ bít nhỏ, lãng Chương III: Quản lý Bộ nhớ 99 phí nhớ đơn vị cấp phát cuối tiến trình lớn kích thước tiến trình bội số đơn vị cấp phát Điều vừa trình bày trường hợp danh sách liên kết Danh sách liên kết xếp theo thứ tự tăng dần giảm dần kích thước địa chỉ, điều giúp cho việc tìm khối nhớ trống có kích thước vừa đủ để nạp tiến trình theo thuật toán đạt tốc độ nhanh hiệu cao Một số hệ điều hành tổ chức danh sách liên kết riêng để theo dõi đơn vị cấp phát nhớ, danh sách để theo dõi block cấp phát danh dách để theo dõi block trống Cách giúp việc tìm khối nhớ trống nhanh hơn, tìm danh sách khối nhớ trống, tốn thời gian nhiều cho việc cấp nhật danh sách sau thao tác cấp phát, phải thực hai danh sách Khi có tiến trình cần nạp vào nhớ mà nhớ có nhiều khối nhớ trống (Free Block) có kích thước lớn kích thước tiến trình đó, hệ điều hành phải định chọn khối nhớ trống phù hợp để nạp tiến trình cho việc lựa chọn dẫn đến việc sử dụng nhớ hiệu Có thuật toán mà hệ điều hành sử dụng trường hợp này, là: Best-fit, First-fit, Next-fit Cả thuật toán phải chọn khối nhớ trống có kích thước lớn kích thước tiến trình cần nạp vào, có điểm khác sau đây: • Best-fit: chọn khối nhớ có kích thước vừa kích thước tiến trình cần nạp vào nhớ • First-fit: trường hợp hệ điều hành bắt đầu quét qua khối nhớ trống khối nhớ trống nhớ, chọn khối nhớ trống có kích thước đủ lớn để nạp tiến trình 8k 8k 12k 22k 6k 18k 14k 36k khối nhớ vừa cấp phát Hình 3.4: Ví dụ thuật toán cấp phát nhớ cuối • Next-fit: tương tự First-fit hệ điều hành bắt đầu quét từ khối nhớ trống kế sau khối nhớ vừa cấp phát chọn khối nhớ trống đủ lớn để nạp tiến trình Hình vẽ 3.4 cho thấy nhớ có khối nhớ chưa đươc cấp phát theo thứ tự là: 8k, 12k, 22k, 18k, 8k, 6k, 14k, 36k Trong trường hợp có tiến trình có kích thước 16k cần nạp vào nhớ, hệ điều hành nạp vào: • khối nhớ 22k theo thuật toán First-fit • khối nhớ 18k theo thuật toán Best-fit • khối nhớ 36k theo thuật toán Next-fit Chương III: Quản lý Bộ nhớ 100 Như theo Best-fit xuất khối phân mảnh 2k, theo Firstfit xuất khối phân mảnh 6k, theo Next-fit xuất khối phân mảnh 20k Các hệ điều hành không cài đặt cố định trước thuật toán nào, tuỳ vào trường hợp cụ thể mà chọn cấp phát theo thuật toán đó, cho chi phí việc cấp phát thấp hạn chế phân mảnh nhớ sau Việc chọn thuật toán thường phụ thuộc vào thứ tự swap kích thước tiến trình Thuật toán First-fit đánh giá đơn giản, dễ cài đặt mang lại hiệu cao đặc biệt tốc độ cấp phát Về hiệu thuật toán Next-fit không First-fit, thường xuyên sử dụng khối nhớ trống cuối vùng nhớ, khối nhớ vùng thường có kích thước lớn nên hạn chế phân mảnh, theo ví dụ việc xuất khối nhớ trống 20k sau cấp tiến trình 16k gọi phân mảnh được, tiếp tục dễ dẫn đến phân mảnh lớn cuối nhớ Thuật toán Best-fit, không tên gọi nó, thuật toán có hiệu suất thấp nhất, trường hợp hệ điều hành phải duyệt qua tất các khối nhớ trống để tìm khối nhớ có kích thước vừa đủ để chứa tiến trình vừa yêu cầu, điều làm giảm tốc độ cấp phát hệ điều hành Mặt khác với việc chọn kích thước vừa đủ dẫn đến phân mảnh lớn nhớ, tức có nhiều khối nhớ có kích thước nhỏ nhớ, xét mặt lãng phí nhớ thời điểm cấp phát thuật toán làm lãng phí Tóm lại, khó đánh giá hiệu sử dụng thuật toán này, hiệu xét “tương lai” nhiều khía cạnh khác xét thời điểm cấp phát Và thân thuật toán có mâu thuẩn với hiệu sử dụng Do yêu cầu công tác cấp phát nhớ hệ điều hành, tiến trình nhớ bị đưa (swap-out) để dành chỗ nạp tiến trình có yêu cầu, tiến trình nạp vào lại (swap-in) nhớ thời điểm thích hợp sau Vấn đề đáng quan tâm tiến trình nạp vào lại phân vùng khác với phân vùng mà nạp vào lần Có lý khác khiến tiến trình phải thay đổi vị trí nạp so với ban đầu có liên kết môdun tiến trình chương trình tiến trình phải dịch chuyển chúng nằm nhớ Sự thay đổi vị trị/địa nạp ảnh hưởng đến thao tác truy xuất liệu chương trình khác với địa tương đối mà người lập trình sử dụng code chương trình Ngoài tiến trình nạp vào nhớ lần tất địa tương đối tham chiếu code chương trình thay địa tuyệt đối nhớ chính, địa xác định địa sở, nơi tiến trình nạp Ví dụ chương trình có code truy xuất đến địa tương đối 100k, chương trình nạp vào phân vùng có địa bắt đầu 100k địa truy xuất 200k, chương trình nạp vào phân vùng có địa bắt đầu 200k, địa truy xuất 300k Để giải vấn đề hệ điều hành phải thực yêu cầu cần thiết công tác tái định vị tiến trình vào lại nhớ Ngoài hệ điều hành phải tính đến việc bảo vệ tiến trình nhớ tránh tình trạng tiến trình truy xuất đến vùng nhớ tiến trình khác Trong trường hợp hệ điều hành sử dụng ghi đặc biệt: Chương III: Quản lý Bộ nhớ 101 • Thanh ghi sở (base register): dùng để ghi địa sở tiến trình tiến trình nạp vào nhớ • Thanh ghi giới hạn (limit register): dùng để ghi địa cuối tiến trình nhớ Khi tiến trình nạp vào nhớ hệ điều hành ghi địa bắt đầu phân vùng cấp phát cho tiến trình vào ghi sở địa cuối tiến trình vào ghi giớ hạn Việc thiết lập giá trị ghi thực tiến trình lần nạp vào nhớ tiến trình swap in vào lại nhớ Theo tiến trình thực thao tác truy xuất nhớ hệ thống phải thực bước: Thứ nhất, cộng địa ô nhớ tiến trình phát với giá trị địa ghi sở để có địa tuyệt đối ô nhớ cần truy xuất Thứ hai, địa kết so sánh với giá trị địa thành ghi giới hạn Nếu địa nằm phạm vị giới hạn hệ điều hành cho phép tiến trình truy xuất nhớ, ngược lại có ngắt lỗi truy xuất nhớ phát sinh hệ điều hành không cho phép tiến trình truy xuất vào vị trí nhớ mà yêu cầu Như việc bảo bệ truy xuất bất hợp lệ thực dễ dàng Địa tương đối điều khiển tiến trình Base Register Céng Limit Register So s¸nh Program < Data > Stack Gởisựngắt đến Tiến trìnhtiến trình Trong hệ thống đa chương sử dụng phân vùng động, có bộcả nhớ điều hànhcòn chỗ trống cần nạp vào nhớ, bộhệ nhớ không tất tiến trình trênHình nhớ trạng thái khoá (blocked), hệcứng thống phải đợi có tiến 3.5đều : Tái định vị với hỗ trợ phần trình chuyển sang trạng thái không bị khoá (unblocked) để tiến trình có điều kiện trả lại không gian nhớ mà chiếm giữ cho hệ thống: tiến trình hoạt động kết thúc, tiến trình bị đưa khỏi nhớ chính, , để hệ thống nạp tiến trình vừa có yêu cầu Sự chờ đợi làm lãng phí thời gian xử lý processor Để tiết kiệm thời gian xử lý processor trường hợp hệ điều hành chọn tiến trình trạng thái khoá để đưa lấy không gian nhớ trống cấp cho tiến trình vừa có yêu cầu mà đợi Hệ điều hành sử dụng nhiều thuật toán khác cho việc chọn tiến trình để thay trường hợp này, tất thuật toán hướng tới mục dích: tiết kiệm thời gian xử lý processor, tốc độ thay cao, sử dụng nhớ Chương III: Quản lý Bộ nhớ 102 Như Intel 80486 hỗ trợ Windows NT cài đặt nhớ ảo theo kỹ thuật phân đoạn kết hợp phân trang Cần nhắc lại kỹ thuật nhớ ảo cần phải có hỗ trợ phần cứng (processor) phần mềm Processor thực nhiệm vụ thực việc chuyển đổi động từ địa ảo thành địa vật lý phát sinh ngắt có tham chiếu đến trang đoạn mà trang đoạn nhớ (lỗi trang) III.6 Các thuật toán thay trang Như biết, để xử lý lỗi trang, trường hợp nhớ không frame trống, hệ điều hành phải tìm page nhớ để đưa đĩa, để lấy frame trống để phục vụ cho việc xử lý lỗi trang Khi định chọn page để đưa đĩa hệ điều hành phải đảm bảo việc chọn là: không ảnh hưởng đến tiến trình khác, có nguy xảy lỗi trang sau đặc biệt hệ thống khó rơi vào tình trạng “trì trệ hệ thống” Trong trường hợp hệ điều hành đưa vào sử dụng thuật toán thay trang cụ thể như: Optinal, LRU, FIFO, Clock Các thuật toán thay trang khác có tiêu chí để chọn trang swap out khác nhau, tất hướng tới mục tiêu là: đơn giản xảy lỗi trang Nó không quan tâm đến việc page chọn để swap out trang tiến trình gây lỗi trang hay trang tiến trình hệ thống Các thuật toán thay trang không xem xét đến trang bị đánh dấu “neo” Để so sánh hiệu suất xử lý lỗi trang thuật toán thay trang, phải áp dụng thuật toán điều kiện: có số lượng frame trống ban đầu cần phải nạp danh sách trang vào nhớ Thuật toán gọi có hiệu suất cao xảy lỗi trang Trong thuật toán sau chúng xem xét trường hợp: ban đầu hệ thống có frame trống hệ điều hành cần phải nạp danh sách trang sau vào nhớ: 2, 3, 2, 1, 5, 2, 4, 5, 3, 2, 5, Trong thuật toán sau xét đến trường hợp b lỗi trang, hệ điều hành phải xử lý lỗi trang nhớ không khung trang trống  Thuật toán FIFO (First In First Out) Thuật toán FIFO thuật toán đơn giản dễ cài đặt Với thuật toán trang mà hệ điều hành chọn để swap out trang đưa vào nhớ sớm nhất, hay nhớ lâu Bảng sau minh họa cho việc chọn trang để swap out thay thuật toán FIFO: Frame Frame Frame 3 5 2 3 5 5 4 5 Chương III: Quản lý Bộ nhớ 133 F F F F F F Theo bảng trường hợp xảy lỗi trang, hệ điều hành cần nạp trang vào nhớ phải đưa trang để lấy frame1 nạp trang 5, hệ điều hành cần nạp lại trang vào nhớ phải đưa trang để lấy frame2 nạp trang 2, hệ điều hành cần nạp trang vào nhớ phải đưa trang để lấy frame3 nạp trang 4, … Thuật toán lúc mang lại hiệu tốt Thứ nhất, trang đưa vào nhớ lâu lại trang cần sử dụng sau đó, tức hệ điều hành vừa swap out phải swap in trở lại nhớ rõ ràng trường hợp hệ điều hành lại phải tiếp tục việc xử lý lỗi trang, trường hợp trang ví dụ Thứ hai, lỗi trang tăng lên số lượng khung trang sử dụng tăng lên, trường hợp gọi nghịch lý Belady Khi hệ điều hành cần nạp trang sau theo thứ tự vào nhớ: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, xảy lỗi trang sử dụng khung trang, xảy 10 lỗi trang sử dụng khung trang Với thuật toán hệ điều hành cần phải có chế thích hợp để ghi nhận thời điểm trang nạp vào nhớ để làm sở thay sau Trong trường hợp hệ điều hành thường sử dụng danh sách liên kết để ghi nhận trang nạp vào nhớ, trang nạp vào sớm ghi nhận đầu danh sách, trang nạp vào muộn ghi nhận cuối danh sách trang chọn để thay trang đầu danh sách Hệ điều hành xóa phần tử đầu danh sách sau trang thay  Thuật toán LRU (Least Recenty Used) Theo thuật toán trang hệ điều hành chọn để thay trang có khoảng thời gian từ lúc truy xuất gần đến thời điểm dài nhất, so với trang nhớ Như trường hợp hệ điều hành phải ghi nhận thời điểm cuối trang truy xuất Bảng sau minh hoạ cho việc chọn trang để swap out thay thuật toán LRU: Frame Frame Frame 3 5 2 3 5 5 5 5 F F F F Theo bảng trường hợp xảy lỗi trang, hệ điều hành cần nạp trang vào nhớ phải đưa trang để lấy frame2 nạp trang 5, hệ điều hành thấy trang 3, trang 2, trang vừa truy xuất cách lâu Thuật toán cần phải có hỗ trợ phần cứng để xác định thời điểm gần trang truy xuất tất trang nhớ Có hai cách áp dụng: • Sử dụng đếm: cách này, processor thêm vào cấu trúc phần tử bảng trang trường mới, tạm gọi trường LRU, trường ghi nhận thời điểm trang tương ứng truy xuất gần Và thêm vào cấu trúc CPU Chương III: Quản lý Bộ nhớ 134 đếm (Counter) Mỗi có truy xuất nhớ Counter tăng lên đơn vị Mỗi trang nhớ truy xuất giá trị Counter ghi vào trường LRU phần tử bảng trang tương ứng với trang Như trang chọn để thay trang có LRU nhỏ • Sử dụng Stack: cách hệ điều hành sử dụng Stack để lưu trữ số hiệu trang nạp vào nhớ Khi trang truy xuất số hiệu trang xóa khỏi Stack vị trí đưa lên lại đỉnh Stack Như trang có số hiệu nằm đỉnh stack trang sử dụng gần nhất, trang có số hiệu nằm đáy stack trang lâu sử dụng Và trang chọn để thay trang có số hiệu nằm đáy stack  Thuật toán Optinal (tối ưu) Theo thuật toán trang hệ điều hành chọn để thay trang lâu sử dụng tương lai Bảng sau minh hoạ cho việc chọn trang để swap out thay thuật toán Optinal: Frame Frame Frame 3 5 2 3 3 5 5 5 5 F F F Theo bảng trường hợp xảy lỗi trang, hệ điều hành cần nạp trang vào nhớ phải đưa trang để lấy frame3 nạp trang 5, hệ điều hành cho trang trang lâu s dụng t ương lai Mặc dầu thuật toán xảy lỗi trang hơn, thực tế khó cài đặt hệ điều hành khó đoán trước trang truy xuất trở lại Thuật toán không chiu tác động nghịch lý Belady Chú ý: Các tài liệu hệ điều hành đưa nhiều thuật toán thay trang, không trình bày đây, bạn tìm đọc tài liệu tham khảo [1] [2] III.7 Cấp phát khung trang Với kỹ thuật nhớ ảo phân trang hệ điều hành không cần mang tất page tiến trình nạp vào nhớ để chuẩn bị thực Vì hệ điều hành cần phải định nạp page, tiến trình vào nhớ Hay xác nạp tiến trình tiến trình nạp page vào nhớ (được cấp khung trang) Hệ điều hành định vấn đề theo chọn lựa sau đây: • Chỉ có lượng nhỏ, tối thiểu, page tiến trình nạp vào nhớ Như hệ điều hành nạp nhiều tiến trình vào nhớ thời điểm Điều làm tăng khả đa chương hệ điều hành khả tìm thấy tiến trình Ready hệ điều hành lớn nhờ mà hiệu điều phối hệ điều hành tăng lên Nhưng trường hợp hệ điều hành phải ý đến việc nạp thêm page tiến trình vào nhớ hệ điều hành khó xác định số lượng khung trang tối thiểu mà tiến trình cần khởi tạo Chương III: Quản lý Bộ nhớ 135 • Nếu có lượng vừa phải page tiến trình nhớ có số tiến trình nạp vào nhớ Như đa chương giảm xuống tốc độ thực tiến trình cải thiện thị page nhớ cần truy xuất đến page khác nhiều khả page có nhớ Nhưng lý thuyết hệ điều hành chứng minh trường hợp tỉ lệ xảy lỗi trang lớn • Nếu có lượng lớn page tiến trình nhớ chính, đa chương giảm xuống đáng kể Nhưng lý thuyết hệ điều hành chứng minh trường hợp tỉ lệ xảy lỗi trang thấp Mặt khác điều gây lãng phí nhớ có page tiến trình sử dụng nhớ Theo chọn lựa có điểm thuận lợi điểm chưa thuận lợi riêng, tùy trường hợp cụ thể mà hệ điều hành thực cấp phát khung trang cho tiến trình theo chọn lựa đó, để đảm bảo có nhiều tiến trình nạp vào nhớ chính, khả tỉ lệ lỗi trang thấp lãng phí nhớ thấp Để đáp ứng điều hệ điều hành thường thực việc cấp phát khung trang cho tiến trình theo hai sách: Cấp phát tĩnh Cấp phát động • Chính sách cấp phát tĩnh (fixed – allocation): Với sách hệ điều hành cấp cho tiến trình số lượng khung trang cố định, để nạp đủ page tiến trình vào nhớ để hoạt động Số lượng khung trang định thời điểm khởi tạo/tạo tiến trình Hệ điều hành định số lượng khung trang tối thiểu cho tiến trình dựa vào loại tiến trình, tiến trình tương tác, tiến trình xử lý theo lô hay tiến trình theo hướng ứng dụng Với cấp phát tĩnh, có lỗi trang xảy trình thực tiến trình hệ điều hành phải swap out page tiến trình để thực việc xử lý lỗi trang • Chính sách cấp phát động (variable - allocation): Với sách hệ điều hành cấp lượng vừa đủ khung trang, để nạp đủ trang cần thiết tiến trình, để tiến trình khởi tạo hoạt động được, sau tuỳ theo yêu cầu tiến trình mà hệ điều hành cấp phát thêm khung trang cho nó, để nạp thêm trang cần thiết khác Hệ điều hành thường cấp thêm khung trang cho tiến trình tiến trình bị rơi vào tình trạng lỗi trang, với tiến trình có tầng suất xảy lỗi trang lớn hệ điều hành phải cung cấp lượng khung trang lớn, cách vượt bật, đủ để tiến trình thoát khỏi lỗi trang nguy lỗi trang thấp III.8 Một số vấn đề quản lý nhớ Windows 2000 III.8.1 Nhiệm vụ quản lý nhớ Windows 2000 Thành phần quản lý nhớ Windows 2000 thực hai nhiệm vụ sau đây: • Chuyển đổi, hay ánh xạ, không gian địa ảo tiến trình vào nhớ vật lý để tiểu trình thực thi ngữ cảnh tiến trình đó, đọc hay ghi vào không gian địa ảo địa vật lý xác tham chiếu • Phân trang vài nội dung nhớ đĩa (swap out) trở nên vượt đáp ứng nhớ hệ thống Có nghĩa là, việc thực thi tiểu trình hay mã Chương III: Quản lý Bộ nhớ 136 hệ thống cố gắng sử dụng nhiều nhớ vật lý khả thời – mang nội dụng trở lại vào nhớ vật lý (swap in) cần Hệ điều hành Windows 2000 Professional Server hỗ trợ lên đến 4GB nhớ vật lý, Windows 2000 Advanced Server hỗ trợ lên đến GB, Windows 2000 Datacenter Server lên đến 64 GB Thực tế nhớ lớn cho Windows 2000 Datacenter Server phụ thuộc vào khả phần cứng Bởi Windows 2000 hệ điều hành 32-bit, nên tiến trình người sử dụng có không gian địa ảo 32-bit, 4GB nhớ phẳng Ngoài việc cung cấp quản lý nhớ ảo, trình quản lý nhớ cung cấp tập lõi dịch vụ mà hệ thống môi trường Windows 2000 khác xây dựng Các dịch vụ bao gồm tập tin ánh xạ nhớ, nhớ copy-on-write, hỗ trợ cho ứng dụng sử dụng không gian địa lớn, không liên tiếp Cũng tất thành phần windows 2000 executive, trình quản lý nhớ hỗ trợ thực thi đồng thời hệ thống đa xử lý Nó cho phép hai tiểu trình thu tài nguyên theo cách mà sau chúng không làm cho hỏng liệu tiến trình khác Để đạt mục tiêu này, trình quản lý nhớ sử dụng vài chế đồng nội khác để điều khiển truy xuất vào cấu trúc liệu nội riêng III.8.2 Các dịch vụ trình quản lý nhớ cung cấp Trình quản lý nhớ cung cấp tập dịch vụ hệ thống để định vị giải phóng nhớ ảo, chia sẻ nhớ tiến trình, ánh xạ tập tin vào nhớ, flush trang ảo vào đĩa, truy lục thông tin vùng trang ảo, thay đổi bảo vệ trang ảo, khoá trang ảo vào nhớ Trình quản lý nhớ cung cấp lượng dịch vụ, định vị bỏ định vị nhớ vật lý khoá trang nhớ vật lý cho trao đổi truy xuất nhớ trực tiếp (DMA), đến thành phần chế độ kernel khác bên Executive device driver Các hàm bắt đầu với tiền tố Mm Ngoài ra, không hoàn toàn phần trình quản lý nhớ, Executive hỗ trợ thường trình bắt đầu với Ex mà sử dụng để định vị bỏ định vị từ heap hệ thống (vùng phân trang không phân trang) để vận dụng danh sách look-aside Sau xem xét vài nhiều dịch vụ mà trình quản lý nhớ Windows 2000 cung cấp:  Bảo vệ nhớ Windows 2000 cung cấp quản lý nhớ để không tiến trình người sử dụng nào, không cố ý hay cố ý, làm hỏng không gian địa tiến trình khác hệ điều hành Windows 2000 cung cấp bảo vệ theo bốn cách sau đây: • Thứ nhất, tất cấu trúc liệu vùng nhớ sử dụng thành phần hệ thống kernel-mode thể truy xuất kernel-mode Các tiểu trình user-mode truy xuất page Nếu tiểu trình cố gắng thực truy xuất phần cứng phát sinh lỗi, trình quản lý nhớ gởi thông báo vi phạm truy xuất đến cho tiểu trình • Thứ hai, tiến trình có không gian địa riêng, tách biệt, bảo Chương III: Quản lý Bộ nhớ 137 vệ khỏi bị truy xuất tiểu trình thuộc tiến trình khác Chỉ ngoại lệ tiến trình chia sẻ trang với tiến trình khác hay tiến trình khác có truy xuất đọc hay ghi nhớ ảo vào đối tượng tiến trình sử dụng hàm ReadProcessMemory hay WriteProcessMemory Mỗi tiểu trình tham chiếu địa chỉ, phần cứng nhớ ảo, phối hợp với trình quản lý nhớ, can thiệp chuyển đổi địa ảo thành địa vật lý Bằng cách điều khiển địa ảo chuyển đổi, Windows 2000 đảm bảo tiểu trình thực thi tiến trình không truy xuất bất hợp lệ trang thuộc tiến trình khác • Thứ ba, cung cấp bảo vệ cho việc chuyển đổi địa ảo thành đại vật lý, tất processor hỗ trợ Windows 2000 cung cấp số hình thức bảo vệ nhớ điều khiển phần cứng (như đọc/ghi; đọc, …); chi tiết xác bảo vệ thay đổi theo processor Ví dụ, page mã không gian địa tiến trình đánh dấu đọc bảo vệ khỏi sửa đổi tiểu trình người sử dụng Các page mã cho tiến trình điều khiển thiết bị đánh dấu đọc • Và cuối cùng, section object nhớ chia sẻ có danh sách điều khiển truy xuất Windows 2000 chuẩn, mà kiểm tra tiến trình cố gắng mở chúng, việc giới hạn truy xuất nhớ chia sẻ đến tiến trình với quyền thích hợp Bảo mật thừa hưởng cách hoạt động tiểu trình tạo section để chứa tập tin ánh xạ Để tạo section, tiểu trình phải có truy xuất đọc đến đối tượng tập tin sở hay thao tác lỗi  Copy-On-Write Sự bảo vệ trang copy-on-write tối ưu việc quản lý nhớ Windows 2000 Để thấy ý nghĩa việc sử dụng trang copy-on-write xem ví dụ sau đây: Có hai tiến trình chia sẻ ba trang (page1, page2, page3), trang đánh dấu copy-on-write, hai tiến trình không sửa đổi liệu trang Hình 3.20.a: “Trước” copy-on-write Nếu tiểu trình hai tiến trình ghi vào trang, lỗi quản lý nhớ phát sinh Trình quản lý nhớ xem việc ghi vào trang copy-onwrite, nên thay báo lỗi vi phạm truy xuất, định vị trang read/write nhớ vật lý, sau chép nội dung trang ban đầu vào trang mới, cập nhật thông tin bảng trang tương ứng tiến trình để trỏ đến vị trí mới, thao tác ghi hệ thống chuyển hướng để thực trang Lần này, Chương III: Quản lý Bộ nhớ 138 thao tác ghi hoàn thành, trình bày hình sau, trang chép sở hữa tiến trình thực ghi không thấy từ tiến trình khác, chia sẻ trang copy-on-write Mỗi tiến trình ghi vào trang chia sẻ nhận riêng Hình 3.20.b: ”Sau” copy-on-write Một ứng dụng copy-on-write để cài đặt điểm ngắt hỗ trợ trình gỡ rối Ví dụ, mặc định, trang mã bắt đầu thực thi Tuy nhiên, lập trình viên thiết đặt điểm ngắt gỡ rối chương trình, trình gỡ rối phải thêm thi điểm ngắt vào mã Nó thực điều cách thay đổi bảo vệ trang thành PAGE_EXECUTE_READWRITE sau thay đổi luồng thị Bởi trang mã phần mapped section, nên trình quản lý nhớ tạo bảo riêng cho tiến trình với tập điểm ngắt, tiến trình khác tiếp tục sử dụng trang mã chưa sửa đổi Hệ thống POSIX lợi dụng copy-on-write để cài đặt chức fork (phân nhánh) Điển hình, ứng dụng UNIX gọi hàm fork để tạo tiến trình khác, điều mà tiến trình thực gọi hàm exec để khởi tạo lại không gian địa với ứng dụng thực thi Thay chép toàn không gian địa fork, tiến trình chia sẻ trang tiến trình cha cách đánh dấu chúng copy-on-write Nếu tiến trình ghi lên liệu, riêng tiến trình thực Nếu không, hai tiến trình tiếp tục chia sẻ việc chép thực Một cách hay cách khác, trình quản lý nhớ chép trang tiến trình cố gắng ghi thay chép toàn không gian địa  AWE: Address Windowing Extension Mặc dù hệ điều hành Windows 2000 hỗ trợ 64 GB nhớ vật lý, tiến trình người sử dụng 32-bit có không gian địa ảo GB GB Để cho phép tiến trình 32-bit định vị truy xuất nhiều nhớ vật lý hơn, thể không gian địa bị giới hạn nó, Windows 2000 cung cấp tập hàm gọi Address Windowig Extensions (AWE) Ví dụ, hệ thống Windows 2000 Advanced Server với GB nhớ vật lý, ứng dụng sở liệu server sử dụng AWE để định vị sử dụng gần GB nhớ cache sở liệu Việc định vị sử dụng nhớ thông qua hàm AWE thực qua ba bước: Định vị nhớ vật lý để sử dụng Tạo vùng không gian địa ảo để hoạt động cửa sổ để ánh xạ Chương III: Quản lý Bộ nhớ 139 khung nhìn nhớ vật lý Ánh xạ khung nhìn nhớ vật lý vào cửa sổ Hình 3.21: Sử dụng AWE để ánh xạ nhớ vật lý Để định vị nhớ vật lý, ứng dụng gọi hàm Win32 AllocateUserPhysicalPages Ứng dụng sau sử dụng hàm Win32 VirtualAlloc với cờ MEM_PHYSICAL để tạo cửa sổ phần riêng không gian địa tiến trình mà ánh xạ đến số tất nhớ vật lý định vị trước Bộ nhớ AWE định vị sau với gần tất hàm Win32 API Nếu ứng dụng tạo cửa sổ 256Mb không gian địa định vị 4Gb nhớ vật lý (trên hệ thống với GB nhớ vật lý), ứng dụng sử dụng hàm Win32 MapUserPhysicalPages hay MapUserPhysicalPagesScatter để truy xuất phần cửa sổ không gian địa ảo xác định lượng nhớ vật lý mà ứng dụng truy xuất với ánh xạ định Hình 3.21 trình bày cửa sổ AWE không gian địa ứng dụng phục vụ ánh xạ đến vùng nhớ vật lý định vị trước AllocateUserPhysicalPages Các hàm AWE tồn tất ấn Windows 2000 sử dụng bất chấp hệ thống có nhớ vật lý Tuy nhiên, AWE hữu ích hệ thống với nhiều GB nhớ vật lý, cách cho tiến trình 32-bit trực tiếp sử dụng nhiều GB nhớ Cuối cùng, có số hạn chế việc định vị nhớ định xạ hàm AWE: • Các trang chia sẻ tiến trình • Cùng trang vật lý ánh xạ nhiều địa ảo tiến trình • Sự bảo vệ trang giới hạn đến read/write III.8.3 Address Space Layout Chương III: Quản lý Bộ nhớ 140 Theo mặc định, tiến trình người sử dụng phiên 32-bit Windows 2000 có 2Gb không gian địa riêng; hệ điều hành giữ 2Gb Windows 2000 Advanced Server Windows 2000 Datacenter Server hỗ trợ tuỳ chọn thời điểm khởi động cho phép không gian địa tiến trình/chương trình người sử dụng lên đến 3Gb Tùy chọn không gian địa 3Gb mang lại cho tiến trình không gian địa 3Gb (dành 1Gb cho không gian hệ thống) Đặc tính thêm vào giải pháp tình để đáp ứng cần thiết cho ứng dụng server sở liệu để giữ nhiều liệu nhớ so với thực với không gian địa 2Gb Không gian địa ảo hệ điều hành windows trước tổ chức khác so với Windows 2000 Nó cung cấp không gian địa ảo 32 bít 4Gb cấp phát không gian địa 2Gb riêng cho tiến trình người sử dụng, chia 2Gb lại thành phần, 1Gb cho không gian hệ thống, 1Gb dùng làm không gian chia sẻ cho tất tiến trình người sử dụng  Không gian địa hệ thống: Trong kiến trúc Intel x86, không gian địa 2Gb hệ thống phân thành vùng khác nhau, mô tả hình 3.22 sau: Trong đó: • System code: Chứa hệ điều hành, HAL điều khiển thiết bị sử dụng để boot hệ thống • System mapped views: Sử dụng để ánh xạ Win32k.Sys, nạp phần hệ thống Win32 chế đọ kernel mode điều khiển đồ hoạ • Session space: Được sử dụng để ánh xạ thông tin đến session người sử dụng cụ thể • Process page tables and page directory: Được dùng để chứa bảng trang tiến trình danh mục bảng trang • Hyperspace: Đây vùng đặc biệt, sử dụng để ánh xạ danh sách working set tiến trình để ánh xạ tạm trang vật lý khác • System working set list: Chứa trúc liệu danh sách working set mà mô tả working set hệ thống • System cache: Không gian địa ảo sử dụng để ánh xạ file mở hệ thống cache • Paged pool: Chứa pool phân trang • System page table entries (PTEs): Pool PTEs hệ thống sử dụng để ánh xạ trang hệ thống như: không gian I/O, stack kernel danh sách mô tả nhớ • Nonpaged pool: Chứa pool không phân trang Chương III: Quản lý Bộ nhớ 141 • Crash dump information: Được dự trữ để ghi thông tin trạng thái hệ thống Crash • HAL usage: Hệ thống nhớ dự trữ cho kiến trúc HAL đặc biệt Hình 3.22: Phân lớp không gian địa x86 Chú ý: Khi khởi tạo hệ thống, trình quản lý nhớ tạo hai kiểu vùng nhớ pool định kích thước tự động mà thành phần chế độ kernel sử dụng để định vị nhớ hệ thống: • Vùng Pool không phân trang: bao gồm vùng địa ảo hệ thống bảo đảm tồn nhớ vật lý tất thời điểm truy xuất mà không mắc phải lỗi trang • Vùng pool phân trang: vùng nhớ ảo không gian hệ thống phân trang hệ thống Các trình điều khiển thiết bị sử dụng vùng phân trang Cả hai vùng nhớ định vị phần hệ thống không gian địa ánh xạ vào không gian địa ảo tiến trình Trình Excutive cung cấp thường trình để định vị giải phóng từ vùng III.8.4 Chuyển đổi địa  Chương III: Quản lý Bộ nhớ Sơ đồ chuyển đổi 142 địa ảo thành địa vật lý Theo mặc định hệ điều hành Windows 2000 chạy hệ thống x86 sử dụng cấu trúc bảng trang cấp (two-level) để chuyển đổi địa ảo thành địa vật lý 32 bít không gian địa ảo chia thành thành phần: 10 bít cao Page Directory Index, 10 bít Page Table Index, 12 bít thấp Byte Index ( Byte Index rộng 12 bít x86 kích thước page 4096 byte (212 = 4096)) Hình vẽ 3.23 sau cho thấy ý nghĩa sử dụng ba thành phần cách chuyển đổi từ địa ảo 32 bít thành địa vật lý hệ thống x86_Windows 2000 xem lại mục III.2.3.c trên) Hình 3.23: Sơ đồ chuyển địa ảo thành vật lý hệ thống x86 Sau là bước thực việc chuyển đổi địa ảo theo sơ đồ trên: Bộ phận phần cứng quản lý nhớ tìm đến danh mục bảng trang (page directory) tiến trình Thành phần Page Directory Index sử dụng để mục vào page directory để tìm mục vào danh mục bảng trang (PDE: page directory entry), mà mô tả vị trí bảng trang (page table) cần để ánh xạ địa ảo PDE chứa số hiệu khung trang (PFN: page frame number) bảng trang (nếu thường trú nhớ Vì bảng trang phân trang ngoài) Thành phần Page Table Index sử dụng để mục vào page table để tìm mục vào bảng trang (PTE: page table entry), mà mô tả vị trí vật lý trang ảo địa ảo PTE sử dụng để định vị trang Nếu trang hợp lệ, chứa PFN trang nhớ vật lý chứa trang ảo Nếu PTE báo trang không hợp lệ, trình quản lý nhớ điều khiển lỗi trang cố gắng làm cho trở thành hợp lệ Khi PTE trỏ đến trang hợp lệ, Byte Index sử dụng để tìm đến địa xác ô nhớ phạm vị trang vật lý tương ứng với địa ảo 32 bít ban đầu mà tiến trình phát Chương III: Quản lý Bộ nhớ 143 Sau xem xét cách chi tiết cấu trúc page directory, page table page table entry để thấy đặc thù Windows 2000 so với mà ta khảo sát cách tổng quát mục trước:  Danh mục bảng trang (page directory) Mỗi tiến trình có có page directory đơn, trình quản lý nhớ dùng trang để tạo đồ định bảng trang tiến trình Địa vật lý page directory tiến trình lưu trữ block KPROCESS Địa vật lý (cơ sở) page directory ghi điều khiển CR3 hệ thống x86 Mỗi có chuyển đổi ngữ cảnh xuất với tiểu trình mằm tiến trình khác tiến trình giá trị ghi CR3 nạp vào block KPROCESS tiến trình khác đó.Việc chuyển đổi ngữ cảnh tiểu trình tiến trình không nạp lại địa vật lý page directory tất tiểu trình tiến trình chia sẻ không gian địa tiến trình Page directory bao gồm các mục vào danh mục bảng trang (PDE: page Directory Entry) Mỗi entry dài byte (8 byte hệ thống chạy chế độ PAE), để mô tả trạng thái vị trí tất bảng trang tiến trình Các bít PDE tương tự bít PTE Trên hệ thống x86, 1024 (2048 hệ thống PAE) yêu cầu để mô tả đầy đủ 4Gb không gian địa ảo Page directory tiến trình ánh xạ đến bảng trang chứa 1024 PDE Do đó, page directory index cần phải rộng 10 bít (210 = 1024)  Bảng trang tiến trình bảng trang hệ thống Trước tham chiếu đến byte phạm vi trang byte offset, CPU cần phải tìm đến trang mà chứa byte yêu cầu liệu Để tìm đến trang này, hệ điều hành xây dựng trang khác nhớ, trang chứa thông tin ánh xạ cần thiết để tìm đến trang mong muốn chứa liệu Trang thông tin ánh xạ gọi page table Vì Windows 2000 cung cấp không gian địa riêng cho tiến trình nên tiến trình sở hữu tập bảng trang tiến trình để ánh xạ đến không gian địa riêng đó, ánh xạ khác tiến trình Các bảng trang mô tả không gian hệ thống chia sẻ cho tất tiến trình Khi tiến trình tạo, PDE không gian hệ thống khởi tạo để đến bảng trang hệ thống tồn Nhưng tất tiến trình có điểm nhìn không gian hệ thống Khi bảng trang hệ thống thay đổi đến vị trí cấp phát phận quản lý nhớ không cập nhật tất page directory tiến trình, trình quản lý nhớ cập nhật page directory tiến trình tiến trình tham chiếu đến địa ảo Chương III: Quản lý Bộ nhớ 144 Hình 3.26: Bảng trang hệ thống bảng trang riêng tiến trình Số lượng PTE Windows 2000 tính toán dựa vào kích thước nhớ Ta quy định số lượng cách thay đổi Registry, giá trị lớn mà hệ thống x86 chấp nhận 128.000 PTE  Các mục vào bảng trang (PTE) Một PTE dài 32 bít, gồm 13 trường mô tả hình đây: Sau mô tả bít trạng thái bít bảo vệ PTE: • • • • • Accesed: Trang đọc Cache disabled: Cấm cache trang Dirty: Trang ghi đến Global: Sự chuyển đổi áp dụng đến tất tiến trình Large page: Chỉ báo PDE ánh xạ đến trang 4Mb hệ thống với 128Mb (hoặc hơn) nhớ Chương III: Quản lý Bộ nhớ 145 • Owner: Chỉ báo có hay không code user-mode thể truy cập trang có hay không trang giới hạn truy cập kernel-mode • Valid: Chỉ báo có hay không chuyển đổi ánh xạ đến trang nhớ vật lý • Write through: Cấm cache cho việc ghi đến trang với mục địch thay đổi ghi đến đĩa • Write: Trên hệ thống uniprocessor, báo có hay không trang read/write read-only Trên hệ thống multiprocessor, báo có hay không trang write (bit Write lưu trữ bit dự trữ PTE) Trên hệ thống x86, phần cứng PTE chứa bít Dirty bít Accesed Bít Accessed bị xoá (= 0) trang vật lý trình bày PTE đọc ghi, Processor thiết lập bít (= 1) trang đọc ghi lần Processor thiết lập bít Dirty trang lần ghi Kiến trúc x86 thêm vào bít Write để cung cấp bảo vệ trang, bít bị xoá trang trở thành read-only, bít thiết lập trang write/read Nếu tiểu trình cố gắng ghi đến trang mà bít Write = trình quản lý nhớ phát sinh ngoại lệ truy cập, phận điều khiển lỗi truy cập phải xác định có hay không tiểu trình ghi đến trang (trong trường hợp copy-on-write) có hay không vi phạm truy cập phải sinh Trên phần cứng x86, PTE luôn rộng byte (32 bít), byte hệ thống cho phép chế độ PAE, bảng trang chứa 1024 PTE , 512 hệ thống PAE (4096 byte page, byte PTE) ánh xạ 1024 trang (512 page PAE) cho tổng số 4Mb (2 Mb PAE) trang liệu Trường page table index địa ảo đến PTE page table, để từ ánh xạ đến trang liệu mà tiến trình yêu cầu Trên hệ thống x86, page table index rộng 10 bít (9 bít PAE), cho phép tham chiếu đến 1024 PTE (512 PAE) Tuy nhiên, windows 2000 cung cấp 4Gb không gian địa ảo riêng, nên cần nhiều page table để ánh xạ toàn không gian địa Ta tính số lượng page table yêu cầu để ánh xạ toàn không gian địa 4Gb tiến trình sau: 4Gb/4Mb = 1024 page table, 2048 page table 4Gb/2Mb =1028 page table PAE (mỗi bảng trang hệ thống x86 ánh xạ 4Mb (2 Mb PAE) trang liệu)  Byte phạm vi trang (byte within page) Mỗi trình quản lý nhớ tìm thấy trang vật lý tương ứng với địa ảo mà tiến trình đưa để truy xuất liệu nhớ, phải tìm đến liệu yêu cầu phạm vi trang Đây nơi thành phần Byte Index vào Byte Index cho CPU biết byte liệu trang mà tiến trình muốn tham chiếu đến Trên hệ thống x86, byte index rộng 12 bít, cho phép tiến trình tham chiếu đến 4096 byte liệu (đây kích thước trang)  Mở rộng địa vật lý Tất processor thuộc họ Intel x86 bao gồm chế độ ánh xạ nhớ gọi PAE (Physical Address Extension) Với chipset thích hợp chế độ PAE Chương III: Quản lý Bộ nhớ 146 cho phép truy cập đến 64GB nhớ vật lý Khi thực thi x86 chế độ PAE, thành phần quản lý nhớ (MMU) processor chia địa ảo thành thành phần Trong trường hợp hệ thống sử dụng bảng trang ba cấp (three-level) để thực việc chuyển đổi địa Hình 3.24: Ánh xạ trang với PAE MMU cài đặt page directory page table cấp thứ page directory pointer table PAE đánh địa nhớ nhiều chế độ chuẩn mở rộng cấp bảng trang mà PDE PTE rộng 64 bít 32 bít Với địa vật lý bên 24 bít, nên x86 có khả quản lý 64Gb (2 24+12 byte) nhớ Để chọn Windows 2000 hoạt đọng chế độ PAE ta phải chọn boot với tham số khoá chuyển /PAE Boot.ini Chế độ hỗ trợ tập tin Ntkrpamp.exe Chương III: Quản lý Bộ nhớ 147 [...]... trong b nh chớnh ti a ch vt lý l 0010000000100000, thỡ a ch vt lý tng ng vi a ch logic trờn l: 0010000000100000độ+ dài 001011110000 = 0010001100010000 địa chỉ cơ sở 16 bít địa chỉ vật lý 0 001011101110 0000010000000000 1 011110011110 0010000000100000 2 1000011000110 00010000100010000 Bảng phân đoạn Chng III: Qun lý B nhcủa tiến trình + 0010001100010000 Không gian bộ nhớ vật107 lý Hỡnh 3.9b: S chuyn i... kớch thc l 4Kb, nờn mt page table n qun lý c 4Mb b nh T a ch tuyn tớnh trờn h thng s ỏnh x thnh a ch vt lý, da vo page Chng III: Qun lý B nh 120 directorry, page table v page frame Sau õy l s , n gin, minh ha s ỏnh x a ch tuyn tớnh thnh a ch vt lý: Page frame Page table Dir page Off Page directory a ch vt lý Main memory Hỡnh 3.13.e: nh x a ch tuyn tớnh thnh i ch vt lý Trờn õy chỳng ta ó tỡm hiu v c ch... logic anh ch vt lý c thc hin theo cỏc bc sau: Trớch ra m-n bớt trỏi nht (thp nht) ca a ch logic xỏc nh s hiu trang cn truy xut S dng s hiu trang trờn ch n phn t tng ng trong bng trang Chng III: Qun lý B nh 104 ca tin trỡnh, xỏc nh khung trang tng ng, vớ d l k a ch vt lý bt u ca khung trang l k x 2 n , v a ch vt lý ca byte cn truy xut l s hiu trang cng vi giỏ tr offset a ch vt lý khụng cn tớnh... b nh ca chng gia cỏc Memory Control trỡnh m DOS cung cp cho chng trỡnh mt Block2 vựng nh, vựng nh ny s c qun lý MCB bi mt MCB ng ngay trc nú Hỡnh 3.16 sau õy minh ha cho iu ny c qun lý bi MCB2 MCB3 (MCB cui cựng) Kt thỳc vựng TPA c qun lý bi MCB3 Chng III: QunKt lý B nh thỳc M Hỡnh 3.16: Qun lý b nh bng MCB ca DOS 128 ... chng trỡnh, nhng nú phi cp phỏt cỏc khi nh cú kớch thc khỏc nhau cho cỏc phõn on ca chng trỡnh trờn b nh vt lý, iu ny phc tp hn nhiu so vi vic cp phỏt cỏc khung trang Chng III: Qun lý B nh 108 dung hũa vn ny cỏc h iu hnh cú th kt hp c phõn trang v phõn on III. 3 K thut b nh o (Virtual Memory) III. 3.1 B nh o Sau khi tỡm hiu v hai k thut cp phỏt b nh phõn trang n v phõn on n, chỳng ta nhn thy rng chỳng... phõn trang: Chng trỡnh ca ngi s dng s dng a ch logic hoc virtual gm: page number v offset truy xut d liu trờn b nh chớnh B phn qun lý b nh phi chuyn a ch virtual ny thnh a ch vt lý tng ng bao gm: page number v Chng III: Qun lý B nh 112 offset thc hin vic ny b phn qun lý b nh phi da vo bng trang (PCT) Vỡ Virtual Address Page # Offset Frame # Offset Register Page Table Ptr PF Off Page + Frame # PE:... Code2 320k Data2 320k Chng III: Qun lý B nh Data1: seg2 Code2: seg0 Stack1: seg1 1820 1470 1320 1170 1020 0 1 2 base limit 870 320 1170 150 1820 150 Segment table của process 1 Code1: seg0 Stack2:seg2 Data2: seg1 870 720 570 0 1 2 Base 1470 250 720 limit 320 320 150 106 Stack2: 150k Các segment của process2 Segment table của process 2 250 100 Không gian địa chỉ của bộ nhớ vật lý (a) (b) (c) Hỡnh 3.8:... ú, thỡ b phn qun lý b nh ca vi x lý s so sỏnh mc u tiờn ghi trong RPL vi mc u tiờn ca on c ghi trong DPL, nu RPL ln hon hoc bng DPL thỡ vi x lý cho phộp chng trỡnh truy cp vựng nh m nú yờu cu, nu ngc li thỡ vi x lý khụng trao quyn truy cp vựng nh cho chng trỡnh, ng thi phỏt ra mt ngt thụng bỏo cú s vi Mainõy Memory phm quyn truy cp vựng nh chớnh l c ch bo v b nh ca Intel 80386 PCT III. 3.2.d B nh o... PTBR: page table base register Page1 2 Page1 0 Page1 1 Page1 2 Chng III: Qun lý B nh Page2 1 12 11 10 9 0 1 2 8 3 12 103 Page1 3 Các page Process 1 Page1 0 Page2 0 Page2 1 Page2 2 Các page process 2 Page2 2 Page1 1 Page1 3 Page2 0 8 7 6 5 4 3 2 1 0 3 6 Page table Process 1 0 1 2 1 10 4 Page table Process 2 Không gian địa chỉ của bộ nhớ vật lý (a) (b) (c) Hỡnh 3.6: Cỏc trang ca 2 tin trỡnh process 1 v process... s nhõn vi trng kớch thc G = 0: kớch thc tớnh theo n v 1byte G = 1: kớch thc tớnh theo n v 1page Chng III: Qun lý B nh 119 (Mt page ca Intel 386 cú kớch thc c nh l 4Kbyte) D: Default Operation Sizze (1 bit): cho bit chiu di ca dũng lnh D = 1: vi x lý mc nh 32 bớt a ch, 32/8 bớt mó lnh D = 0: vi x lý mc nh 16 bớt a ch, 32/8 bớt mó lnh Sau õy l s chuyn a ch gm 2 thnh phn selector v offset thnh a ch ... 00010000100010000 Bảng phân đoạn Chng III: Qun lý B nhcủa tiến trình + 0010001100010000 Không gian nhớ vật107 lý Hỡnh 3.9b: S chuyn i a ch logic (segment) vt lý Nhn xột v k thut phõn on: Vỡ cỏc... nh vt lý, iu ny phc hn nhiu so vi vic cp phỏt cỏc khung trang Chng III: Qun lý B nh 108 dung hũa ny cỏc h iu hnh cú th kt hp c phõn trang v phõn on III. 3 K thut b nh o (Virtual Memory) III. 3.1... trờn b nh chớnh B phn qun lý b nh phi chuyn a ch virtual ny thnh a ch vt lý tng ng bao gm: page number v Chng III: Qun lý B nh 112 offset thc hin vic ny b phn qun lý b nh phi da vo bng trang

Ngày đăng: 03/12/2015, 17:08

Mục lục

  • III.1. Nhiệm vụ của quản lý bộ nhớ

  • III.2. Kỹ thuật cấp phát bộ nhớ (nạp chương trình vào bộ nhớ chính)

  • III.2.1. Kỹ thuật phân vùng cố định (Fixed Partitioning)

  • III.2.2. Kỹ thuật phân vùng động (Dynamic Partitioning)

  • III.2.3. Kỹ thuật phân trang đơn (Simple Paging)

  • III.2.4. Kỹ thuật phân đoạn đơn (Simple Segmentation)

  • III.3. Kỹ thuật bộ nhớ ảo (Virtual Memory)

  • III.3.1. Bộ nhớ ảo

    • Phân trang đơn

    • III.3.2. Kỹ thuật bộ nhớ ảo

      • Page #

      • III.4. Quản lý bộ nhớ RAM của DOS

      • III.5. Sự phân trang/đoạn trong hệ điều hành Windown NT

      • III.6. Các thuật toán thay trang

      • III.7. Cấp phát khung trang

      • III.8. Một số vấn đề về quản lý bộ nhớ của Windows 2000

Tài liệu cùng người dùng

Tài liệu liên quan