Кіріспе
Операциялық жүйенің бір бөлігі – таспалық немесе дискілік құрылымнан жүктеуді жылдамдататын қолданбалар. Компьютерлік жүйелерде жүктеуші – бағдарламалар мен кітапханаларды жүктеуге жауапты операциялық жүйенің құрамы. Бұл бағдарламаны іске қосу процесінің маңызды кезеңі, себебі ол бағдарламаларды жадқа орналастырып, оларды орындалуға дайындайды. Бағдарламаны жүктеу жадты бейнелеуді немесе бағдарламалық нұсқауларды қамтитын атқарылатын файлдың мазмұнын жадқа көшіруді, содан кейін атқарылатын файлды іске қосу үшін қажетті дайындық шараларын жүргізуді қамтиды. Жүктеу аяқталғаннан кейін операциялық жүйе жүктелген бағдарламалық кодқа басқаруды беру арқылы бағдарламаны іске қосады. Бағдарламаны жүктеуді қолдайтын барлық операциялық жүйелерде жүктеушілер болады, тек қана белгілі бір мақсаттағы, арнайы бағдарламалар жиынтығына ие өте мамандандырылған компьютерлік жүйелерден басқа. Кіріктірілген жүйелерде көбінесе жүктеушілер болмайды, оның орнына код тікелей ROM-нан немесе осыған ұқсас жадтан орындалады. Операциялық жүйені жүктеу үшін, жүктеу процесінің бір бөлігі ретінде арнайы жүктеуші пайдаланылады. Көптеген операциялық жүйелерде жүктеуші жадыда тұрақты түрде орналасқан, бірақ виртуалды жадты қолдайтын кейбір операциялық жүйелер жүктеушіге жадтың беттік аймағында орын алуға мүмкіндік береді. Виртуалды жадты қолдайтын операциялық жүйелерде жүктеуші атқарылатын файлдардың мазмұнын жадқа көшірмей, виртуалды жад жүйесіне бағдарлама кодын және оған байланысты атқарылатын файлдың мазмұнын қамтитын жад аймағы арасындағы сәйкестік туралы хабарлай алады. (Жадты бейнелеген файлды қараңыз.) Виртуалды жад жүйесіне егер бағдарлама орындалуы жадтың толтырылмаған бөліктеріне жеткенде, осы жад аймағындағы беттерді қажеттілік туғанда толтыру қажеттігі туралы хабар беріледі. Бұл бағдарлама кодың бөліктері оларды пайдалану алдында жадқа көшірілмейді дегенді білдіреді, ал пайдаланылмаған код жадқа ешқашан жүктелмеуі мүмкін.
applications that speed up loading from a tape or disk drive
In computer systems a loader is the part of an operating system that is responsible for loading programs and libraries. It is one of the essential stages in the process of starting a program, as it places programs into memory and prepares them for execution. Loading a program involves either memory mapping or copying the contents of the executable file containing the program instructions into memory, and then carrying out other required preparatory tasks to prepare the executable for running. Once loading is complete, the operating system starts the program by passing control to the loaded program code. All operating systems that support program loading have loaders, apart from highly specialized computer systems that only have a fixed set of specialized programs. Embedded systems typically do not have loaders, and instead, the code executes directly from ROM or similar. In order to load the operating system itself, as part of booting, a specialized boot loader is used. In many operating systems, the loader resides permanently in memory, though some operating systems that support virtual memory may allow the loader to be located in a region of memory that is pageable. In the case of operating systems that support virtual memory, the loader may not actually copy the contents of executable files into memory, but rather may simply declare to the virtual memory subsystem that there is a mapping between a region of memory allocated to contain the running program's code and the contents of the associated executable file. (See memory mapped file.) The virtual memory subsystem is then made aware that pages with that region of memory need to be filled on demand if and when program execution actually hits those areas of unfilled memory. This may mean parts of a program's code are not actually copied into memory until they are actually used, and unused code may never be loaded into memory at all.
Жүк тиеушілерді ауыстыру
Кейбір операциялық жүйелерге мекен-жайларды (көрсеткіштерді) орындалатын файлда реттеу қажет болады, бұл жүктеу басталатын мекен-жайдағы өзгерістерді өтеу үшін жасалады. Бағдарлама әрқашан (виртуалды) адрестік кеңістікте бірдей орынға жүктелмейтін және көрсеткіштер бағдарламаның бастапқы мекен-жайынан емес, абсолютті мекен-жайлар болып табылатын операциялық жүйелерге жылжымалы жүктегіштер қажет. Белгілі мысалдардың бірі – IBM-нің System/360 мейнфреймдері үшін OS/360 және оның ұрпақтары, соның ішінде z/Architecture мейнфреймдері үшін z/OS.
OS/360 және деривативтер
OS/360 және одан кейінгі жүйелерде (артыққылықты) операциялық жүйе мүмкіндігі IEWFETCH деп аталады және OS Supervisor-дің ішкі құрамы болып табылады, ал (артыққылықсыз) LOADER қосымшасы көптеген бірдей функцияларды орындай алады, сондай-ақ Linkage Editor функцияларын қоса, және OS Supervisor-ге толығымен сыртқы (дегенмен, ол көптеген Supervisor қызметтерін пайдаланады). IEWFETCH жоғары мамандандырылған каналдық бағдарламаларды пайдаланады және теориялық тұрғыдан алғанда, DASD медиасының бір толуы ішінде (максималды 16,6 мс, орташа 8,3 мс, "ескі" 3600 айналымдық дискілерде) толық орындалатын файлды жүктеу және қайта орналастыру мүмкін. Жолдың көлемінен асып кеткен жүктеме модульдері үшін, модульдің барлығын бір толуды жоғалтпай жүктеу және қайта орналастыру да мүмкін. IEWFETCH сонымен қатар, "жабық құрылымдар" деп аталатын мүмкіндіктерді қамтиды, бұл ықтимал өте үлкен орындалатын файлдарды минималды жад үлгісінде (кейбір OS нұсқаларында 44 КБ дейін, бірақ 88 КБ және 128 КБ көбірек таралған) іске қосуды жеңілдетеді. OS ядросы (Supervisor-дің әрқашан жүктеліп тұратын бөлігі) IEWFETCH-тің қысқартылған нұсқасымен үйлесімді форматта жасалған. Қалыпты орындалатын файлдардан айырмашылығы, OS ядросы "шашырап жүктеледі": ядроның бөліктері жадтың әртүрлі бөліктеріне жүктеледі; атап айтқанда, кейбір жүйелік кестелер бастапқы 64 КБ-тан төмен орналасуы керек, ал басқа кестелер мен код басқа жерде орналасады. Жүйенің Linkage Editor қосымшасы IEWL деп аталады. IEWL-дің негізгі функциясы жүктеме модульдерін (орындалатын бағдарламалар) және объект модульдерін (мысалы, ассемблерлер мен компиляторлардың нәтижесі), соның ішінде кітапханаларға "автоматты шақыруларды" (жоғары деңгейдегі тілдің "ішіне кіріктірілген функциялары") IEWFETCH-пен ең тиімді жүктелетін форматқа біріктіру. Өңдеудің көптеген опциялары бар, бірақ стандартты қосымша үшін олардың бірнешеуі ғана жиі қолданылады. Жүктеме модулі форматында бастапқы "мәтіндік жазба" болады, содан кейін бірден осы мәтіндік жазбаның "қайта орналастыру және/немесе басқару жазбасы" болады, содан кейін мәтіндік жазбалар мен қайта орналастыру және/немесе басқару жазбаларының жұптары модульдің соңына дейін жалғасады. Мәтіндік жазбалар әдетте өте үлкен; қайта орналастыру және/немесе басқару жазбалары кішкентай, өйткені IEWFETCH-тің үш қайта орналастыру және/немесе басқару жазба буфері 260 байтқа белгіленген (кішірек қайта орналастыру және/немесе басқару жазбалары мүмкін, бірақ 260 байт ең жоғары мүмкін, және IEWL қажет болған жағдайда келесі мәтіндік жазбадан бұрын қосымша қайта орналастыру жазбаларын қосып, осы шектеу сақталуын қамтамасыз етеді; бұл ерекше жағдайда жазбалардың тізбегі: , мәтіндік жазба, қайта орналастыру жазбасы, , басқару жазбасы, мәтіндік жазба, ). Қайта орналастыру және/немесе басқару жазба буферіндегі арнайы байт "тоқтатылған бит айналымы" байланыс аймағы ретінде қолданылады және бірегей мәнмен инициализацияланады. Осы қайта орналастыру және/немесе басқару жазбасының Оқу CCW-да Бағдарламамен басқарылатын үзіліс биті орнатылған. Осылайша процессорға арна арқылы осы CCW-ға қол жеткізілген кезде арнайы IOS шығысы арқылы хабар беріледі. Бұл кезде процессор "тоқтатылған бит айналымы" циклына кіреді (кейде "дүниедегі ең қысқа цикл" деп аталады). Байт бастапқы мәнінен өзгергеннен кейін, CPU бит айналымынан шығып, қайта орналастыру орын алады, қайта орналастыру және/немесе басқару жазбасы мен келесі мәтіндік жазба арасындағы медиадағы "аралық" кезінде. Егер қайта орналастыру келесі жазбадан бұрын аяқталса, Оқудан кейінгі NOP CCW TIC-ке ауыстырылады, ал жүктеу және қайта орналастыру келесі буферді пайдалану арқылы жалғасады; әйтпесе, арна NOP CCW-де тоқтайды, оны IEWFETCH басқа арнайы IOS шығысы арқылы қайта іске қосқанға дейін. Үш буфер үздіксіз шеңберлік кезекте орналасқан, әрқайсысы келесісіне, ал соңғысы біріншісіне бағытталған, және жүктеу және қайта орналастыру процесінде үш буфер үнемі қайта пайдаланылады. Осылайша IEWFETCH кез келген нақты көлемдегі жүктеме модулін жүктей алады және ең аз уақыт ішінде қайта орналастыра алады.
Динамикалық байланыс құралдары
Динамикалық сілтеме жүктеушілері – бұл ортақ кітапханаларды (мысалы, .so файлдар, .dll файлдар немесе .dylib файлдар) жүктеп, іске қосылған бағдарламаларға байланыстыратын жүктеушілердің тағы бір түрі. Мұндай ортақ кітапханалар бірнеше процестермен ортақ пайдаланыла алады, ортақ кодтың бір ғана көшірмесі әр процестің адрестік кеңістігінде әртүрлі (виртуалды) мекенжайда орналасуы мүмкін. Сондықтан ортақ кітапханадағы кодтың қайта орналастырылуы қажет, яғни кітапхана тек өзіне қатысты немесе код сегментінің базасына қатысты ішкі мекенжайларды ғана пайдалануы керек. Кейбір процессорларда мұны жеңілдету үшін өзіне қатысты код сілтемелерін пайдалана алатын командалар бар.