CHƢƠNG 7 QUẢN Lí BỘNHỚ
7.1 Bộnhớ thực
7.1.4 Phõn đoạn cố định
Đối với cỏc hệ thống đơn nhiệm và ngay cả hệ thống xử lý gúi (Package Processing) thỡ vẫn bị lóng phớ một phần đỏng kể tài nguyờn. Ta thấy rằng chương trỡnh chỉ thực sự sử dụng bộ xử lý khi mà nú khụng thực hiện thao tỏc vào/ra. Sau khi bắt đầu thao tỏc vào/ra chương trỡnh khụng thể tiếp tục cho đến khi kết thỳc thao tỏc. Tốc độ thực hiện thao tỏc vào/ra thường chậm hơn nhiều so với tốc độ của bộ xử lý. Như vậy bộ xử lý bị bỏ phớ trong suốt thời gian chờ thực hiện tỏc vụ vào/ra, và phần này chiếm đỏng kể thời gian chung.
Cỏc nhà thiết kế thấy rằng hoàn toàn cú thể tăng hiệu quả sử dụng bộ xử lý. Họ đó thực hiện cỏc hệ thống đa nhiệm, trong đú cỏc user cựng 'cạnh tranh' để cú được tài nguyờn. Chương trỡnh đang chờ kết thỳc thao tỏc vào/ra sẽ phải nhường bộ xử lý cho chương trỡnh đó sẵn sàng hoạt động (tất nhiờn nếu cú chương trỡnh như thế). Do đú đảm bảo khả năng cựng
thực hiện thao tỏc vào/ra và bộ xử lý – nõng cao hiệu quả sử dụng bộ xử lý và cả hệ thống. Cỏc ưu thế của Multiprogramming chỉ cú thể tận dụng hết khi trong bộ nhớ cú nhiều chương trỡnh. Nhờ đú khi một chương trỡnh thưc hiện thao tỏc vào/ra thỡ bộ xử lý cú thể chuyển sang phục vụ chương trỡnh khỏc và thực hiện tớnh toỏn với thời gian trễ nhỏ nhất. Khi chương trỡnh thứ hai giải phúng bộ xử lý thớ đến chương trỡnh thứ ba khỏc lại cú thể sẵn sàng sử dụng nú.
Multiprogramming đũi hỏi dung lượng bộ nhớ lớn hơn so với trường hợp đơn nhiệm nhưng chi phớ đú được bự lại bởi việc sử dụng hiệu quả cỏc tài nguyờn khỏc (bộ xử lý, thiết bị vào/ra).
7.1.4.1 Đa nhiệm với phõn đoạn cố
định (Fixed Partition
Multiprogramming) dịch và nạp theo chƣơng trớnh theo địa chỉ tuyệt đối
Trong cỏc hệ đa nhiệm đầu tiờn, bộ nhớ được chia thành cỏc phần (phõn đoạn) với kớch thước cố định. Trong mỗi đoạn chỉ cú thể nạp một chương trỡnh. Cũn bộ xử lý nhanh chúng chuyển từ chương trỡnh này sang chương trỡnh khỏc, do đú tạo ra hiệu quả là tất cả chương trỡnh dường như được thực hiện đồng thời. Việc biờn dịch chương trỡnh được thực hiện bởi Assembler và Compiler với địa chỉ tuyệt đối bị giới hạn bởi việc chương trỡnh chỉ cú thể chạy trong một phõn đoạn cụ thể. Nếu như chương trỡnh đó sẵn sàng nhưng phõn đoạn của nú đó cú chương trỡnh khỏc thỡ nú phải đợi dự rằng cỏc phõn đoạn khỏc cú thể trống. Điều này dẫn tới sự lóng phớ bộ nhớ nhưng việc thiết kế hệ điều hành lại tương đối đơn giản.
Trờn hỡnh 4.1.3.1–2 thể hiện tỡnh huống xấu nhất của phương phỏp phõn bố bộ nhớ liờn tục với phõn đoạn cố định và chương trỡnh được dịch và nạp vào địa chỉ tuyệt đối (phõn đoạn cố định). Cả hai phõn đoạn một và hai đều bỏ phớ cũn hàng chờ của phõn đoạn ba quỏ nhiều trong khi chỳng đó cú thể được nạp vào phõn đoạn 1 và 2.
7.1.4.2 Đa nhiệm với phõn đoạn cố
định: dịch và nạp chƣơng trớnh cỏc module tự do
Cỏc chương trỡnh dịch, Assembler và Loader tự do được sử dụng để dịch và nạp cỏc chương trỡnh cú thể thực hiện tại bất cứ phõn đoạn trống nào đủ lớn (hỡnh 4.1.3.2). Phương phỏp này khắc phục được một số nhược điểm về sử dụng bộ nhớ trong trường hợp trước (đa nhiệm với phõn đoạn cố định, dịch và nạp chương trỡnh theo địa chỉ tuyệt đối). Nhưng để đạt được điều đú, việc thiết kế lại phức tạp hơn nhiều.
Hớnh 43 Tỡnh huống xấu nhất của phương
phỏp phõn bổ bộ nhớ liờn tục
96
7.1.4.3 Bảo vệ bộ nhớ trong cỏc hệ
đa nhiệm
Trong cỏc hệ thống đa nhiệm với phõn bố bộ nhớ liờn tục (Contiguous Memory Allocation), người ta thường sử dụng cỏc thanh ghi biờn để bảo vệ bộ nhớ. Hai thanh ghi chỉ ra cận dưới và cận trờn của phõn đoạn, hoặc một cận và kớch thước của phõn đoạn; chương trỡnh cú yờu cầu truy cập đến cỏc dịch vụ của hệ điều hành phải dựng ngắt SVC để yờu cầu.
Hỡnh 45 Bảo vệ bộ nhớ đa nhiệm
7.1.4.4 Vấn đề chia nhỏ bộ nhớ
(Fragmentation) trong đa chƣơng trớnh với phõn đoạn cố
định
Fragmentation xảy ra trong bất kỳ hệ thống nào khụng phụ thuộc vào tổ chức bộ nhớ. Trong cỏc hệ đa nhiệm với cỏc phõn đoạn cố định, Fragmentation xảy ra do cỏc chương trỡnh ứng dụng khụng chiếm hết toàn bộ phõn đoạn của nú hoặc là do cỏc phõn đoạn quỏ nhỏ để cú thể nạp cỏc chương trỡnh đang chờ vào đú.