Trong ngữ cảnh của một hệ thống tệp, phân mảnh là việc sử dụng không gian lưu trữ không hiệu quả để lưu trữ nội dung của một tệp ở các vị trí khác nhau trên đĩa thay vì theo một chuỗi bit liền kề ở một nơi. Phân mảnh là hiện tượng tự nhiên xảy ra trên ổ cứng hoặc đôi khi trên mô-đun bộ nhớ khi dữ liệu không được ghi đủ chặt chẽ trên ổ đĩa.
Dữ liệu đôi khi được viết không theo thứ tự, có nghĩa là các phần dữ liệu không được đặt cạnh nhau trên ổ đĩa do việc sử dụng tệp thường xuyên. Những mẩu dữ liệu này được gọi là các mảnh. Tại một số điểm, hệ điều hành sẽ cần truy cập vào hệ thống tệp để tìm vị trí của các đoạn khác nhau trên ổ đĩa.
Ví dụ: khi bạn tạo một tài liệu mới, hãy nói một tệp từ; các tập tin dường như ở một nơi. Bạn có thể mở tệp, chỉnh sửa hoặc xóa nó - bất cứ điều gì bạn muốn. Tất cả các hoạt động dường như đang diễn ra trên ổ đĩa, ít nhất đó là những gì bạn nghĩ.
Ổ cứng có thể đang lưu các khối tệp trong một khu vực của thiết bị, nhưng phần còn lại của nó tồn tại theo nghĩa đen ở một nơi khác trên thiết bị lưu trữ. Nói một cách đơn giản, phân mảnh đề cập đến không gian lưu trữ bị lãng phí trong hệ thống tệp cho phép phát triển khoảng cách giữa các phần khác nhau của tệp.
Sự phân mảnh về cơ bản xảy ra trong hệ thống cấp phát bộ nhớ động vì nó dành quá nhiều không gian cho tệp dẫn đến các khu vực mở xung quanh nó.
Nó bằng cách nào đó liên quan đến phân vùng kích thước cố định. Hệ thống phân bổ bộ nhớ cho các chương trình và quy trình khác nhau bằng cách chia chúng thành các khối nhỏ theo yêu cầu của chương trình. Tuy nhiên, đôi khi nhiều bộ nhớ được phân bổ hơn mức cần thiết cho quá trình, điều này cuối cùng dẫn đến việc bộ nhớ dư thừa sẽ bị lãng phí hoặc không được sử dụng.
Ví dụ, bộ nhớ chỉ có thể được phân bổ cho các chương trình trong các khối chia hết cho 4, 8 hoặc 16. Khi một quá trình yêu cầu 24 byte, nó thường nhận được một khối 32 byte, 8 byte thừa sẽ không được sử dụng. Do đó, bộ nhớ không sử dụng nằm trong một vị trí được phân bổ cụ thể và nó nhỏ đến mức một quy trình mới không thể được phân bổ cho nó, dẫn đến lãng phí. Chất thải này được gọi là phân mảnh nội bộ. Có lẽ cách duy nhất để loại bỏ phân mảnh này là phân bổ bộ nhớ động.
Bộ nhớ chính hình thành các lỗ hổng giữa các phần của bộ nhớ được phân bổ quá nhỏ để chứa bất kỳ quá trình nào. Đó là nhược điểm của thuật toán phân bổ lưu trữ, khi các khối không gian không sử dụng liền kề không thể phục vụ yêu cầu mới vì không gian quá nhỏ cho nhu cầu ứng dụng bộ nhớ lớn. Nói một cách đơn giản, các khối không liền kề tạo ra các lỗ hổng trong bộ nhớ dẫn đến việc lưu trữ không sử dụng nằm ngoài các vùng được phân bổ, có nghĩa là nó không thể được sử dụng cùng với bộ nhớ chính cho các tác vụ bộ nhớ lớn hơn. Họ cuối cùng bị cô lập và không thể bị loại bỏ hoàn toàn khỏi không gian bộ nhớ. Điều này được gọi là phân mảnh bên ngoài. Nó có thể được loại bỏ bằng cách nén mà xáo trộn nội dung của bộ nhớ để đặt tất cả bộ nhớ trống lại với nhau.
Phân mảnh nội bộ:
Phân mảnh nội bộ đề cập đến các không gian bổ sung gây lãng phí khi nhiều bộ nhớ được phân bổ cho một quy trình hơn mức cần thiết. Nó thường xảy ra khi các khối bộ nhớ kích thước cố định được phân bổ cho các chương trình hoặc quy trình.
Phân mảnh bên ngoài:
Sự phân mảnh bên ngoài, ngược lại, đề cập đến các không gian không sử dụng được hình thành giữa các khối bộ nhớ liền kề không liền kề nhau.
Phân mảnh nội bộ:
Không gian trống hình thành trong khối bộ nhớ được phân bổ khi bộ nhớ được phân bổ cho quá trình lớn hơn bộ nhớ mà quy trình yêu cầu được gọi là phân mảnh bên trong. Nội bộ trong lòng đề cập đến các byte không được sử dụng nằm trong các khối bộ nhớ lớn hơn.
Phân mảnh bên ngoài:
Khi bộ nhớ chính hình thành các lỗ quá nhỏ để đáp ứng bất kỳ yêu cầu nào, nó được gọi là phân mảnh bên ngoài.
Phân mảnh nội bộ:
Lý do chính tại sao phân mảnh nội bộ xảy ra là khi bộ nhớ được phân vùng thành các khối có kích thước cố định .
Phân mảnh bên ngoài:
Sự phân mảnh bên ngoài là hiện tượng xảy ra khi bộ nhớ được chia thành các khối có kích thước thay đổi dựa trên kích thước của các quá trình khác nhau.
Phân mảnh nội bộ:
Sự phân mảnh bên trong là một hiện tượng tự nhiên có thể được loại bỏ bằng cách cấp phát bộ nhớ động, đó là phân bổ động các phần của khối bộ nhớ cho các tiến trình theo yêu cầu của chúng và giải phóng nó khi chúng không còn cần thiết trong khi thực hiện chương trình.
Phân mảnh bên ngoài:
Mặt khác, sự phân mảnh bên ngoài có thể được loại bỏ bằng cách nén, phân trang và phân đoạn để bộ nhớ có thể được phân bổ cho một quá trình theo cách không liền kề.
Cả sự phân mảnh bên trong và bên ngoài là những hiện tượng tự nhiên liên quan đến không gian bộ nhớ không sử dụng hoặc bộ nhớ bị lãng phí. Sự phân mảnh bên trong bị phân bổ bộ nhớ không hiệu quả xảy ra khi bộ nhớ được phân bổ cho một quá trình nhiều hơn những gì được yêu cầu, để lại không gian không sử dụng trong khối bộ nhớ cuối cùng gây ra sự phân mảnh bên trong. Sau khi quá trình được xóa khỏi bộ nhớ vật lý, không gian trống sẽ được phân phối ở đây và ở đó và không có khối bộ nhớ liền kề nào có thể được tìm thấy, gây ra sự phân mảnh bên ngoài. Tuy nhiên, cả hai hiện tượng có thể tránh được. Phân mảnh bên trong có thể được giảm bằng cách phân bổ bộ nhớ cho các quy trình một cách linh hoạt, trong khi phân mảnh bên ngoài có thể tránh được tốt nhất bằng cách nén, phân trang và phân đoạn.