Fragmentasi (komputer)

Dalam penyimpanan data komputer, Fragmentasi adalah sebuah fenomena dimana ruang penyimpanan digunakan secara tidak efisien, mengakibatkan berkurangnya kapasitas penyimpanan, performa penyimpanan dan seringkali keduanya secara bersamaan. Istilah ini juga digunakan untuk menunjukkan tempat yang tersia-siakan itu sendiri.

Ada tiga bentuk yang terkait dengan fragmentasi: fragmentasi eksternal, fragmentasi internal, dan fragmentasi data, ketiganya dapat terjadi secara independen atau bersamaan. Fragmentasi seringkali dapat diterima atas timbal balik untuk peningkatan kecepatan atau simplisitas.

Fragmentasi internal

sunting

Fragmentasi internal terjadi saat penyimpanan dialokasikan tanpa pernah ingin menggunakannya. Ini adalah ruang-siakan. Sementara ini tampaknya bodoh, sering diterima dalam kembali untuk meningkatkan efisiensi atau kesederhanaan. Istilah "internal" merujuk pada kenyataan bahwa unusable penyimpanan yang dialokasikan di dalam wilayah namun tidak sedang digunakan.

Misalnya, dalam banyak sistem file, setiap file selalu dimulai pada awal sebuah cluster, karena ini simplifies organisasi dan memudahkan tumbuh file. Setiap ruang kiri atas antara terakhir byte dari file yang pertama dan byte berikutnya dari cluster adalah bentuk internal disebut fragmentasi file atau kendur kendur ruang.

Demikian pula, sebuah program yang mengalokasikan satu byte data sering kali banyak yang dialokasikan untuk tambahan byte metadata dan berpihak. Spasi ini juga fragmentasi internal.

Contoh lainnya: Inggris teks sering disimpan dengan satu karakter di masing-masing 8-bit byte meskipun standar ASCII encoding yang paling signifikan sedikit setiap byte selalu nol. Bit yang digunakan adalah bentuk fragmentasi internal.

Serupa dengan meninggalkan masalah daya cipta unused muncul di banyak daerah lain. Misalnya, alamat IP hanya dapat dimiliki dalam ukuran blok tertentu, sehingga banyak IP yang dilindungi undang-undang, tetapi tidak sedang digunakan. Ini adalah kontribusi terhadap kekurangan alamat IPv4.

Tidak seperti jenis fragmentasi, fragmentasi internal yang sulit untuk kembali, biasanya cara terbaik untuk melepaskannya adalah dengan perubahan desain. Misalnya, dalam alokasi memori dinamis, memori internal renang secara drastis memotong fragmentasi oleh menyebarkan overhead ruang yang lebih besar atas jumlah benda.

Fragmentasi eksternal

sunting

Fragmentasi eksternal adalah fenomena yang gratis menjadi dibagi menjadi beberapa bagian kecil dari waktu ke waktu. Ini adalah kelemahan dari beberapa algoritme alokasi penyimpanan, terjadi ketika aplikasi dan mengalokasikan deallocates ( "frees") dari daerah penyimpanan berbagai ukuran, dan alokasi oleh algoritme merespon meninggalkan dialokasikan dan deallocated daerah interspersed. Hasilnya adalah bahwa, walaupun gratis tersedia, maka secara efektif unusable karena dibagi menjadi potongan-potongan yang terlalu kecil untuk memenuhi kebutuhan dari aplikasi. Istilah "eksternal" merujuk pada kenyataan bahwa unusable penyimpanan yang dialokasikan di luar daerah.

Misalnya, dalam alokasi memori dinamis, blok 1000 byte mungkin diminta, tetapi yang terbesar adalah berdekatan blok ruang kosong yang hanya 300 byte. Bahkan jika terdapat sepuluh blok 300 byte dari ruang kosong, yang dipisahkan oleh daerah dialokasikan, satu masih tidak dapat mengalokasikan yang diminta blok 1000 byte, dan alokasi permintaan akan gagal.

Fragmentasi eksternal juga terjadi di banyak file sebagai sistem file yang berbeda ukuran dibuat, mengubah ukuran, dan akan dihapus. Efek lebih buruk lagi adalah jika sebuah file yang dibagi menjadi beberapa bagian kecil akan dihapus, karena ini mirip daun kecil daerah bebas spasi.

Fragmentasi data

sunting

Data fragmentasi terjadi ketika sebuah bagian dari data dalam memori rusak ke dalam banyak potongan-potongan yang tidak saling berdekatan. Hal ini biasanya hasil dari mencoba untuk memasukkan benda yang besar ke dalam penyimpanan yang telah menderita fragmentasi eksternal.

Misalnya, file dalam file sistem biasanya diatur dalam unit yang disebut blok atau kelompok. Ketika sebuah file sistem yang dibuat, ada ruang untuk menyimpan file blok bersama contiguously. Hal ini memungkinkan untuk cepat berurut membaca dan menulis file. Namun, seperti file ditambahkan, dihapus, dan berubah dalam ukuran, ruang bagi menjadi eksternal, hanya meninggalkan lubang kecil di tempat yang tepat untuk data baru. Bila file yang baru ditulis, atau jika file yang sudah ada diperpanjang, maka data baru blok pasti tersebar, karena perlambatan akses untuk mencari waktu dan pemutaran penundaan dari membaca / menulis head, dan overhead incurring tambahan untuk mengelola tambahan lokasi. Hal ini disebut fragmentasi file system.

Sebagai contoh lain, jika node yang terhubung daftar dialokasikan turut dalam memori, ini akan meningkatkan lokalitas dari referensi dan data cache meningkatkan kinerja selama traversal dari daftar. Jika memori renang gratis bagi ruang adalah, baru node akan tersebar di seluruh memori, meningkatkan jumlah cache misses.

Seperti compaction dapat menghilangkan fragmentasi eksternal, data fragmentasi dapat dihapuskan oleh rearranging data terkait agar buah yang saling berdekatan. Misalnya, pekerjaan utama dari defragmentation alat ini untuk mengatur ulang blok pada disk, sehingga setiap file blok yang berdekatan. Paling defragmenting utilitas juga berusaha untuk mengurangi atau menghilangkan fragmentasi ruang kosong. Beberapa pindah pengumpul sampah terkait juga akan memindahkan objek dekat bersama (disebut Memadatkan) untuk meningkatkan kinerja cache.