Kỹ thuật phõn vựng động (Dynamic Partitioning)

Một phần của tài liệu BÀI GIẢNG NGUYÊN LÝ HỆ ĐIỀU HÀNH - TRẦN ANH TUẤN pptx (Trang 61 - 64)

- Độ ưu tiờn của cỏc tiến trỡnh là (5 là độ ưu tiờn cao nhất): 1 1 2 4

3.2.2.Kỹ thuật phõn vựng động (Dynamic Partitioning)

Phần user program trờn bộ nhớ khụng được phõn chia trước mà nú chỉ được ấn định sau khi đó cú một tiến trỡnh được nạp vào bộ nhớ chớnh. Khi cú một tiến trỡnh được nạp vào bộ nhớ nú được HĐH cấp cho nú vựng nhớ vừa đủ để chứa tiến trỡnh, phần cũn 1 Phõn mảnh trong: hiện tượng xuất hiện những vựng nhớ cũn trống khi cấp phỏt khối nhớ cho cỏc tiến trỡnh. Chi phớ quản lý cỏc vựng nhớ trống trong phõn mảnh trong lớn hơn rất nhiều so với chớnh giỏ trị của cỏc khỏng trống đú.

lại để sẵn sàng cấp cho tiến trỡnh khỏc sau này. Khi một tiến trỡnh kết thỳc nú được đưa ra ngoài và phần khụng gian bộ nhớ mà tiến trỡnh này trả lại cho HĐH sẽ được HĐH cấp cho tiến trỡnh khỏc, cả khi tiến trỡnh này cú kớch thước nhỏ hơn kớch thước của khụng gian nhớ trống đú.

Khi phõn vựng động, dần dần trong bộ nhớ hỡnh thành nhiều khụng gian nhớ cú kớch thước nhỏ khụng đủ chứa cỏc tiến trỡnh nằm rải rỏc trờn bộ nhớ chớnh, hiện tượng này được gọi là hiện tượng phõn mảnh bờn ngoài (external fragmentation). Để chống lại sự lóng phớ bộ nhớ do phõn mảnh, HĐH phải thực hiện việc sắp xếp lại bộ nhớ, để cỏc khụng gian nhớ nhỏ rời rỏc nằm liền kề lại với nhau tạo thành một khối nhớ cú kớch thước đủ lớn để chứa được một tiến trỡnh nào đú. Việc làm này làm chậm tốc độ của hệ thống, HĐH phải chi phớ cao cho việc này, đặc biệt là việc tỏi định vị cỏc tiến trỡnh khi một tiến trỡnh bị đưa ra khỏi bộ nhớ và được nạp vào lại bộ nhớ để tiếp tục hoạt động.

Trong kỹ thuật phõn vựng động, để quản lý cỏc khối nhớ đó cấp phỏt hay cũn trống trờn bộ nhớ, HĐH sử dụng 2 cơ chế: Bản đồ bớt và Danh sỏch liờn kết. Trong cả 2 cơ chế này HĐH đều chia khụng gian nhớ thành cỏc đơn vị cấp phỏt cú kớch thước bằng nhau.

- Quản lý bằng bản đồ bớt: mỗi đơn vị cấp phỏt được phản ỏnh bằng một bớt trong bản đồ bớt. Bớt 0 nếu đơn vị cấp phỏt BN cũn trống, ngược lại bit 1 nếu đơn vị cấp phỏt đó được cấp phỏt cho một tiến trỡnh. Khi cần nạp một tiến trỡnh cú kớch thước k đơn vị, cần phải tỡm trong bảng một dóy cú k bit nhận giỏ trị 0.

- Quản lý bằng danh sỏch liờn kết: Tổ chức một danh sỏch cỏc phõn đoạn đó cấp phỏt và phõn đoạn tự do. Mỗi phõn đoạn trong danh sỏch được thể hiện bằng 3 trường chớnh: trường thứ nhất cho biết phõn đoạn đó cấp phỏt (P: process) hay đang cũn trống (H: Hole), trường thứ hai cho biết thứ tự của đơn vị cấp phỏt đầu tiờn trong phõn đoạn, trường thứ ba cho biết phõn đoạn gồm bao nhiờu đơn vị cấp phỏt.

Như vậy khi cần nạp một tiến trỡnh vào bộ nhớ thỡ HĐH phải dựa vào bản đồ bit hoặc danh sỏch liờn kết để tỡm ra một phõn đoạn cú kớch thước đủ để nạp tiến trỡnh. Sau khi thực hiện một thao tỏc cấp phỏt hoặc sau khi đưa một tiến trỡnh ra khỏi bộ nhớ thỡ HĐH phải cập nhật lại bản đồ bớt hoặc danh sỏch liờn kết, điều này cú thể làm giảm tốc độ thực hiện của hệ thống.

Chọn kớch thước của một đơn vị cấp phỏt là một vấn đề quan trọng trong thiết kế, nếu kớch thước đơn vị cấp phỏt nhỏ thỡ bản đồ bớt sẽ lớn, hệ thống phải tốn bộ nhớ để chứa nú. Nếu kớch thước của một đơn vị cấp phỏt lớn thỡ bản đồ bớt sẽ nhỏ, nhưng sự lóng phớ bộ nhớ ở đơn vị cấp phỏt cuối cựng của một tiến trỡnh sẽ lớn khi kớch thước của tiến trỡnh khụng phải là bội số của một đơn vị cấp phỏt. Điều vừa trỡnh bày cũng đỳng trong trường hợp danh sỏch liờn kết.

Danh sỏch liờn kết cú thể được sắp xếp theo thứ tự tăng dần hoặc giảm dần của kớch thước hoặc địa chỉ, điều này giỳp cho việc tỡm khối nhớ trống cú kớch thước vừa đủ để nạp cỏc tiến trỡnh theo cỏc thuật toỏn dưới đõy sẽ đạt tốc độ nhanh hơn và hiệu quả cao hơn. Một số hệ điều hành tổ chức 2 danh sỏch liờn kết riờng để theo dừi cỏc đơn vị cấp phỏt trờn bộ nhớ, một danh sỏch để theo dừi cỏc block đó cấp phỏt và một danh dỏch để theo dừi cỏc block cũn trống. Cỏch này giỳp việc tỡm cỏc khối nhớ trống nhanh hơn, chỉ tỡm trờn danh sỏch cỏc khối nhớ trống, nhưng tốn thời gian nhiều hơn cho việc cập nhật danh sỏch sau mỗi thao tỏc cấp phỏt, vỡ phải thực hiện trờn cả hai danh sỏch.

Khi cú một tiến trỡnh cần được nạp vào bộ nhớ mà trong bộ nhớ cú nhiều hơn một khối nhớ trống (Free Block) cú kớch thước lớn hơn kớch thước của tiến trỡnh đú, thỡ HĐH phải quyết định chọn một khối nhớ trống phự hợp nào để nạp tiến trỡnh sao cho việc lựa chọn này dẫn đến việc sử dụng bộ nhớ chớnh là hiệu quả nhất.

- First-fit: chọn khối nhớ trống đầu tiờn cú kớch thước đủ lớn để nạp tiến trỡnh. - Best-fit: chọn khối nhớ trống cú kớch thước nhỏ nhất nhưng đỏp ứng kớch thước của tiến trỡnh cần được nạp vào bộ nhớ.

- Worst-fit: chọn khối nhớ trống cú kớch thước lớn nhất để cấp phỏt.

Cỏc HĐH khụng cài đặt cố định trước một thuật toỏn nào, tuỳ vào trường hợp cụ thể mà nú chọn cấp phỏt theo một thuật toỏn nào đú, sao cho chi phớ về việc cấp phỏt là thấp nhất và hạn chế được sự phõn mảnh bộ nhớ sau này. Việc chọn thuật toỏn này thường phụ thuộc vào thứ tự swap và kớch thước của tiến trỡnh.

Thuật toỏn First-fit đơn giản, dễ cài đặt, hiệu quả cao nhất về tốc độ cấp phỏt. Thuật toỏn Best-fit, là một thuật toỏn cú hiệu suất thấp nhất vỡ HĐH phải duyệt qua tất cỏc cỏc khối nhớ trống để tỡm ra một khối nhớ cú kớch thước vừa đủ để chứa tiến trỡnh vừa yờu cầu, điều này làm giảm tốc độ cấp phỏt của hệ điều hành. Mặt khỏc với việc chọn kớch thước vừa đủ cú thể dẫn đến sự phõn mảnh lớn trờn bộ nhớ, tức là cú quỏ nhiều khối nhớ cú kớch thước quỏ nhỏ trờn bộ nhớ, nhưng nếu xột về mặt lóng phớ bộ nhớ tại thời điểm cấp phỏt thỡ thuật toỏn này làm lóng phớ ớt nhất.

Thuật toỏn Worst-fit cho hiệu quả khụng bằng First-fit, nhưng nú thường xuyờn sử dụng được cỏc khối nhớ trống lớn nhất, nờn cú thể hạn chế được sự phõn mảnh.

Túm lại, khú cú thể đỏnh giỏ về hiệu quả sử dụng của cỏc thuật toỏn này, vỡ hiệu quả của nú được xột trong “tương lai” và trờn nhiều khớa cạnh khỏc nhau chứ khụng phải chỉ xột tại thời điểm cấp phỏt. Và hơn nữa trong bản thõn cỏc thuật toỏn này đó cú cỏc mõu thuẫn với nhau về hiệu quả sử dụng của nú.

ngoài (swap-out) để dành chỗ nạp một tiến trỡnh mới cú yờu cầu, và tiến trỡnh này sẽ được nạp vào lại (swap-in) bộ nhớ tại một thời điểm thớch hợp sau này.

- Cho phộp nõng cao mức độ đa chương vỡ tăng được số lượng tiến trỡnh đồng thời. - Khi tiến trỡnh được mang lại vào BN chớnh, nếu sự kết buộc địa chỉ được thực hiện vào thời điểm nạp, tiến trỡnh cần được nạp vào đỳng vị trớ nú đó chiếm giữ trước đú. Nếu kết buộc địa chỉ vào thời điểm xử lý, thỡ cú thể nạp tiến trỡnh vào vị trớ vựng nhớ bất kỳ.

- Cần BN phụ cú kớch thước đủ lớn để lưu trữ cỏc tiến trỡnh bị swap-out và phải cho phộp truy xuất trực tiếp đến cỏc tiến trỡnh này.

- Trong cỏc hệ swapping, thời gian chuyển đổi giữa cỏc tỏc vụ cần được quan tõm. Mỗi tiến trỡnh cần được phõn chia một khoảng thời gian sử dụng BXL đủ lớn để khụng thấy quỏ rừ sự chậm trễ do cỏc thao tỏc swap gõy ra. Nếu khụng, hệ thống sẽ dựng phần lớn thời gian để dời chuyển cỏc tiến trỡnh ra BN chớnh và sử dụng BXL sẽ khụng hiệu quả.

Chỳ ý: Một nhược điểm lớn của cỏc kỹ thuật ở trờn là dẫn đến hiện tượng phõn mảnh bộ nhớ gõy lóng phớ bộ nhớ nờn hiệu quả sử dụng bộ nhớ kộm. Để khắc phục HĐH sử dụng cỏc kỹ thuật phõn trang hoặc phõn đoạn bộ nhớ.

Một phần của tài liệu BÀI GIẢNG NGUYÊN LÝ HỆ ĐIỀU HÀNH - TRẦN ANH TUẤN pptx (Trang 61 - 64)