Вътрешна срещу външна фрагментация
Разликата между вътрешна и външна фрагментация е тема от интерес за мнозина, които искат да подобрят компютърните си познания. Преди да разберем тази разлика, трябва да видим какво е фрагментация. Фрагментирането е явление, което се случва в компютърната памет, като памет с произволен достъп (RAM) или твърди дискове, което причинява загуба и неефективно използване на свободното пространство. Докато ефективното използване на наличното пространство е възпрепятствано, това също причинява проблеми с производителността. Вътрешна фрагментация възниква, когато разпределението на паметта се основава на дялове с фиксиран размер, където след като приложение с малък размер е присвоено на слот, оставащото свободно пространство на този слот се губи. Външна фрагментация възниква, когато паметта се разпределя динамично, където след зареждане и разтоварване на няколко слота тук и там свободното пространство се разпределя, а не е непрекъснато.
Какво е вътрешно фрагментиране?
Разгледайте фигурата по-горе, където се следва механизъм за разпределяне на памет с фиксиран размер. Първоначално паметта е празна и разпределителят е разделил паметта на дялове с фиксиран размер. След това по-късно три програми с имена A, B, C са заредени в първите три дяла, докато 4-тият дял е все още свободен. Програма A съответства на размера на дяла, така че няма загуба в този дял, но програма B и програма C са по-малки от размера на дяла. Така че в дял 2 и дял 3 има останало свободно място. Това свободно пространство обаче е неизползваемо, тъй като разпределителят на памет присвоява само пълни дялове на програми, но не и части от него. Тази загуба на свободно пространство се нарича вътрешна фрагментация.
В горния пример това са фиксирани дялове с еднакъв размер, но това може да се случи дори в ситуация, в която са налични дялове с различни фиксирани размери. Обикновено паметта или най-твърдото пространство е разделено на блокове, които обикновено са с размер на степен 2, като 2, 4, 8, 16 байта. Така програма или файл от 3 байта ще бъде присвоен на 4-байтов блок, но един байт от този блок ще стане неизползваем, причинявайки вътрешна фрагментация.
Какво е външно фрагментиране?
Разгледайте фигурата по-горе, където разпределението на паметта се извършва динамично. При динамичното разпределение на паметта разпределителят разпределя само точния необходим размер за тази програма. Първата памет е напълно безплатна. След това програмите A, B, C, D и E с различни размери се зареждат една след друга и се поставят в паметта последователно в този ред. След това по-късно програма A и програма C се затварят и се разтоварват от паметта. Сега в паметта има три свободни области, но те не са съседни. Сега ще бъде заредена голяма програма, наречена програма F, но нито един от блоковете свободно пространство не е достатъчен за програма F. Добавянето на всички свободни пространства определено е достатъчно за програма F, но поради липсата на съседство това пространство е неизползваем за програма F. Това се нарича външно фрагментиране.
Каква е разликата между вътрешната и външната фрагментация?
• Вътрешно фрагментиране възниква, когато се използва техника за разпределяне на памет с фиксиран размер. Външно фрагментиране възниква, когато се използва техника за динамично разпределение на паметта.
• Вътрешна фрагментация възниква, когато дял с фиксиран размер е присвоен на програма/файл с по-малък размер от дяла, което прави останалото пространство в този дял неизползваемо. Външната фрагментация се дължи на липсата на достатъчно съседно пространство след зареждане и разтоварване на програми или файлове за известно време, защото тогава цялото свободно пространство се разпределя тук и там.
• Външната фрагментация може да бъде копана чрез уплътняване, при което присвоените блокове се преместват на една страна, така че да се спечели непрекъснато пространство. Тази операция обаче отнема време, а също и определени критични зададени области, например системни услуги, не могат да бъдат преместени безопасно. Можем да наблюдаваме тази стъпка на уплътняване, извършена на твърди дискове, когато стартирате дефрагментатора на диска в Windows.
• Външното фрагментиране може да бъде предотвратено чрез механизми като сегментиране и страниране. Тук е дадено логично непрекъснато виртуално пространство в паметта, докато в действителност файловете/програмите са разделени на части и поставени тук и там.
• Вътрешната фрагментация може да бъде осакатена чрез наличие на дялове с няколко размера и присвояване на програма въз основа на най-доброто прилягане. Въпреки това вътрешната фрагментация все още не е напълно елиминирана.
Резюме:
Вътрешна срещу външна фрагментация
Както вътрешната фрагментация, така и външната фрагментация са явления, при които паметта се губи. Вътрешна фрагментация възниква при разпределение на памет с фиксиран размер, докато външна фрагментация възниква при динамично разпределение на памет. Когато разпределен дял е зает от програма, която е по-малка от дяла, оставащото пространство се губи, причинявайки вътрешна фрагментация. Когато не може да се намери достатъчно съседно пространство след зареждане и разтоварване на програми, поради факта, че свободното пространство се разпределя тук и там, това причинява външна фрагментация. Фрагментирането може да възникне във всяко устройство с памет, като RAM, твърд диск и флаш устройства.