Кіріспе

Динамикалық жадты бөлу әдісі

Жад жинақтары, сондай-ақ белгілі бір мөлшердегі блоктарды бөлу деп те аталады, жадты басқару үшін жинақтарды пайдалану арқылы динамикалық жадты бөлуге мүмкіндік береді. Динамикалық жадты бөлуді malloc және C++ операторы new сияқты техникаларды қолдану арқылы жүзеге асыруға болады; бұл әдістер орнықты әрі сенімді болғанымен, өзгергіш блок мөлшерлеріне байланысты фрагментацияға ұшырайды, сондықтан оларды нақты уақыт жүйелерінде пайдалану ұсынылмайды. Көбірек тиімді шешім – бірдей мөлшердегі жад блоктарын алдын ала бөлу, осылайша жад жинағын құру. Бағдарлама орындалу кезінде тұтқалар арқылы көрсетілген блоктарды бөлуге, оларға қол жеткізуге және босатуға болады. Көптеген нақты уақыт операциялық жүйелері, мысалы, Транзакциялық өңдеу құрылымы жад жинақтарын пайдаланады. Кейбір жүйелер, мысалы, Nginx веб-сервері, жад жинағы терминін кейінірек бірден босатылатын өзгергіш мөлшердегі бөлімдер тобын білдіру үшін қолданады. Бұл аймақ деп те аталады; аймақ негізіндегі жад басқару туралы қараңыз.

Жеңіл жады жиынтығын іске асыру

Қарапайым жад жиынтығы модулі, мысалы, модульді қолданатын бағдарламаға оңтайландырылған блок өлшемдерімен компиляция уақытында үш жиынтықты бөлуге мүмкін. Бағдарлама келесі интерфейс арқылы жадты бөлуге, оған қол жеткізуге және босатуға болады: Функция қажетті блокқа сәйкес келетін жиынтықты анықтайды. Егер осы жиынтықтың барлық блоктары бұрыннан резервтелген болса, функция келесі үлкен жиынтықтағы біреуін табуға тырысады. Бөлінген жад блогы тұтқамен көрсетіледі. Бөлінген жадқа қол жеткізу үшін сілтеме алу. Бұрын бөлінген жад блогын босату. Мысалы, тұтқа қолтаңбасыз int арқылы іске асырылуы мүмкін. Модуль тұтқаны ішкі түрде жиынтық индексіне, жад блогы индексіне және нұсқаға бөліп түсіндіре алады. Жиынтық және жад блогы индексі тұтқа арқылы сәйкес блокқа жылдам қол жеткізуге мүмкіндік береді, ал әр жаңа бөлу кезінде өсетін нұсқа жад блогы босатылған тұтқаларды (тұтқалардың тым ұзақ сақталуынан туындаған) анықтауға мүмкіндік береді.