chương I) và cần cơ chế để bảo vệ các chương trình hệ thống với chương trình người dùng. Đến chế độ đa chương trình thực sự thì vấn đề bảo vệ bộ nhớ không chỉ xảy ra giữa chương trình người dùng với chương trình hệ thống mà còn giữa các chương trình người dùng lẫn nhau. Như đã biết, việc phân chương bộ nhớ góp phần đảm bảo cho việc bảo vệ bộ nhớ. Ngoài ra, thường có một cơ chế kỹ thuật sử dụng các thanh ghi: thanh ghi cơ sở và thanh ghi bảo vệ; và hơn thế nữa, có thể kể đến việc đưa ra những thuộc tính của bộ nhớ và thuộc tính của chương trình về quyền thâm nhập đến bộ nhớ.
Một bài toán cơ bản là số lượng và kích cỡ của các chương bộ nhớ được phân. Người ta phân ra 2 lớp các bài toán mà các chương trình xử lý: tính toán nhiều và vào/ra nhiều. Theo một số thống kê, để bộ xử lý đạt hiệu quả 90%, thường đồng thời có 4 hoặc 5 chương trình trong bộ nhớ. Tồn tại chiến lược giới hạn tĩnh (cận cố định) và chiến lược giới hạn động (cận thay đổi).
Chiến lược giới hạn tĩnh (cận cố định) Một trong những phương pháp điển hình phân phối bộ nhớ liên tục là chiến lược giới hạn tĩnh còn gọi là chiến lược phân chương (tương ứng với chế độ MET của hệ điều hành). Bộ nhớ được chia thành các chương: gán tên chương, địa chỉ, dung lượng trong quá trình khởi tạo hệ điều hành.4 cho một hình ảnh phân chương bộ nhớ và việc phân phối bộ nhớ cho một số chương trình. 184K P4 112K P3 72K P2 32K 0K PO Dia chi Chương bộ nhớ Hình 3. Bộ nhớ được phân chương.
NGUYÊN LÝ CÁC HỆ ĐIỀU HÀNH 7 Đối với ví dụ theo hình vẽ 3.4, bộ nhớ được phân ra thành 5 chương: PO (32K), PI (40K), P2 (40K), P3 (72K), P4 (72K). Chương P0 được dành cho nhân, mỗi chương còn lại đã có một chương trình được tải (load). Kích cỡ (dung lượng) trung bình của mỗi chương phụ thuộc vào dung lượng của bộ nhớ và số lượng chương. Các chương trình được gán số hiệu để chỉ có thể tải vào những chương nhất định.
Nảy sinh trường hợp có thể có những chương rỗi mà không tải được chương trình: lớp gắn với nó bị bận hoặc độ rộng của chương không đủ để tải. Lúc đó hoặc hệ thống hoặc thao tác viên thực hiện việc thay đổi lớp gắn cho chương trình hoặc thay đổi số lượng chương, kích cỡ chương song phổ biến là thao tác viên dùng lệnh để thực hiện công việc đó. Tuy điều đó xem ra có vẻ thủ công song tránh được sự phức tạp cho chương trình điều khiển. Để quản lý bộ nhớ trong trường hợp này, sử dụng bảng mô tả chương (partition đescription table : PDT), có dạng: Số hiệu chương Địa chỉ Độ dài Tình trạng 0 0K 32K đã load 1 32K 40K đã load 2 72K 40K đã load 112K 72K đã load 3 184K 72K đã load 4 nhớ, chiến lược Đối với một bài toán, nó được gắn với một vài chương bộ phối nhanh nhất phân phối bộ nhớ cho nó có thể được kể làm hai hướng: phân tối ưu (chọn chương với (gặp chương được gắn, đủ độ rộng đầu tiên), phân phối nhớ: vùng nhớ dừ thừa là ít nhất).
Trở lại vấn đẻ vướng mắc khi phân phối bộ trình; - Không có chương nào đủ để phân phối cho chương - Mọi chương đã được tải; 78 CHƯƠNG 3. ĐIỀU KHIỂN BỘ NHỚ - Một số chương rỗi, mỗi chương rỗi không đủ chứa bài toán song nối vài chương rỗi tạo ra một vùng bộ nhớ đủ đẻ tải bài toán. Việc phân phối bộ nhớ cho bài toán (quá trình) được coi như gắn với mỗi chương có 1 dòng xếp hàng các bài toán cần được phân phối bộ nhớ đối với nó. Mỗi bài toán lại có thé gan với một vài chương, có sự chung nhau giữa một số dòng xếp hàng.
Việc phân phối bộ nhớ cho một bài toán liên quan tới việc thao tác đối với các đòng xếp hàng nói trên. Mối liên kết giữa chương và lớp bài toán không phải là luôn chặt chẽ. Như trên đã thấy, tồn tại một số cách thức thay đổi mối liên kết nói trên (hoặc do chương trình hệ thống hoặc do thao tác viên v. Chiến lược giới hạn động (cận thay đổi) Như trên đã thấy, chế độ phân phối cận cố định (phân phối tĩnh) nảy sinh một số vấn đề trong việc sử dụng tối ưu bộ nhớ, với phương án khắc phục đưa vào lệnh của thao tác viên.
Trong cách thức phân phối liên tục bộ nhớ, chế độ giới hạn thay đổi được áp dụng. Trong chế độ này (tương ứng với chế độ MVT của hệ điều hành), bộ nhớ không chia thành các chương giống như ở chế độ giới hạn cố định. Các chương trình nạp liên tục vào bộ nhớ cho đến khi còn nạp được. Một ví dụ về hình ảnh của bộ nhớ trong được cho trong hình 3.
Trong quá trình làm việc, các chương trình được thực hiện và giải phóng, các vùng bộ nhớ giải phóng đó có thể liên tục hoặc rời rạc. Sử dụng vùng bộ nhớ đó ra làm sao. Một số tình huống nảy sinh (hình 3. Trên hình vẽ thứ 6, chương trình 4 (Prg.
4) được giải phóng đầu tiên. Ngay trước chương trình 4, một vùng nhớ rỗi với dung lượng 20K. Khi giải phóng chương trình 4, có một vùng rỗi liên tục với dung lượng 102K. Chương trình 8 với độ dài 52K được tải vào trong bộ nhớ trong và sau đó chương trình 6 được giải phóng.
Hiện tại, trên dòng đợi, đến lượt chương trình Pr9 có độ dài 80K. Mỗi vùng rỗi riêng rẽ trong bộ nhớ không thể chứa nối chương trình 9, trong khi đó dung tích rỗi tổng cộng là 88K. Hệ thống cân nhập hai vùng nhớ rỗi trên để nạp được chương trình Pr9. NGUYÊN LÝ CÁC HỆ ĐIỀU HÀNH 79 24K 82K 42K 30K 50K 92K 62K 26K 32K 24K 82K 82K 30K fg 20K 62K 60K 26K lễ 38K 32K Hình 3.
Các hình trạng bộ nhớ với cận thay đổi. Điều khiển bộ nhớ theo cận thay đổi sử dụng linh hoạt tối ưu bộ nhớ, tránh được một số hạn chế so với cận cố định (cho phép độ dài của môdun chương trình lớn) và miền nhớ rỗi được sử dụng linh hoạt. Tuy vậy, công việc phân phối bộ nhớ là phức tạp: - quản lý bộ nhớ luôn thay đổi; - định vị lại bộ nhớ cho các chương trình. Khi chương trình đang hoạt động, nó đang ở trạng thái trung gian, nếu không có những cơ chế thích hợp thì việc định vị lại sẽ ảnh hưởng đến sự thực hiện của chương trình.
Điều này cũng liên quan đến vấn để địa chỉ hóa trong chương trình: sử dụng địa chỉ cơ sở không tường minh. Chỉ khi có thể quy chiếu trên địa chỉ không tường minh mới có thể giải quyết được bài toán định vị lại như trên. Chương Mặt khác, không phải thời điểm nào cũng cho phép định vị lại. trở ngại lớn trình đang đợi kết quả của công việc vào/ra thì việc định vị lại gặp trong vấn đề liên kết kết quả công việc vào/ra với chương trình.
ĐIỀU KHIỂN BỘ NHỚ Van dé định vị lại có ý nghĩa không chỉ trong phân phối bộ nhớ liên tục mà cả trong phân phối bộ nhớ gián đoạn. Việc sử dụng địa chỉ tương đối là một hình tức phù hợp với việc định vị lại. Có một số cách thức liên quan đến định vị lại: định vị tĩnh và định vị động. Quản lý bộ nhớ rỗi Trong bộ nhớ trong, phân chia ra các vùng nhớ đã được phân phối cho các chương trình đang hoạt động và một số vùng nhớ khác lại chưa được sử dụng.
Vùng bộ nhớ rỗi nói trên, khi cần tải một chương trình mới sẽ cần tới nó, và lúc đó nó đã được phân phối (bị bận). Sau khi chương trình hoàn thiện công việc của mình, nó được kết thúc, vùng nhớ dành cho nó được giải phóng. Bài toán quản lý, phân phối bộ nhớ thường xuyên xảy ra, trong đó bài toán quản lý bộ nhớ rỗi là một bài toán quan trọng. Có một số phương pháp để quản lý bộ nhớ rỗi.
Ví dụ như hệ điều hành đơn chương trình, sử dụng cận về vùng bộ nhớ đã phân phối cho thông tin về vùng nhớ rỗi chưa được phân phối. Một trong những phương pháp quản lý bộ nhớ rỗi điển hình là phương pháp kẻ cận. Phương pháp kẻ cận có thể được chia ra: kể cận nhị phân và kể cận tổng quát. Phương pháp kề cận nhị phân 0 ee 1 * 2 3 4 16 5 32 6 64 7 128 Hình 3.
Quản lý bộ nhớ rỗi theo kể cận nhị phân. Phương pháp kể cận nhị phân tương ứng với việc phân chia nhị phân: bộ nhớ được chia làm các khối nhớ có độ dài là 2* đơn vị bộ nhớ (đơn vị phổ biến là trang), mỗi vùng bộ nhớ có độ dài 2* phải được đặt ở địa chỉ chia hết cho 2, NGUYÊN LÝ CÁC HỆ ĐIỀU HÀNH 81 Có một bảng quản lý các vùng bộ nhớ rỗi, phân từ k (k = 0,1,2,. ) trong bảng chứa danh sách móc nối mà các vùng bộ nhớ 2* còn đang rỗi (xem hình trên). Khi một chương trình đòi hỏi một vùng nhớ có độ dài x thì thuật toán xử lý như sau: Tìm số k bé nhất để cung cấp đủ độ dài x đó (2* > x).
Nếu không có báo sai sót. Nếu có, phân phối vào đầu vùng đó : như vậy liên quan đến các thao tác: loại bỏ, bổ sung, hay vừa loại bỏ vừa bổ sung các phân tử trong các danh sách trong bang. Trong các danh sách trên, chú ý có 3 danh sách không rỗng: Danh sách với k=0: có 1 phần tử trỏ vào 6 25; Danh sách với k=l: có 2 phần tử trỏ vào ô 2 và ô 4; Danh sách với k=3: có 1 phần tử trỏ vào ô 16. Phương pháp kê cận tổng quát Kê cận tổng quát: nảy sinh vấn đề nếu độ dài x là 2*+1, phải phân phối một miền bộ nhớ 2**! là khá lãng phí.
Vì vậy, cải tiến các độ dài được chia không theo các vùng nhớ theo độ dài 2* mà theo dãy nào đó, chẳng hạn theo dãy số Fibonaxy :1,1,2,3,5,8,. Chu y rang, day số Fibonaxy va day lũy thừa 2 có cùng công thức chung: L= L4 + Ley trong đój hoặc là ! hoặc 2 (khij = I chúng ta nhận lại dãy luỹ thừa 2 theo kẻ cận nhị phân, còn khi j=2 thì nhận được day Fibonaxy), và tổng quát hóa Lý = Ly; + Lạy, trong đó b(k) là hàm theo k nào đó: b(k)<k. BẬN RỒI 82 CHƯƠNG 3.