Кіріспе

Операциялық жүйе

Nachos, яғни «Тағы бір толыққанды эвристикалық операциялық жүйе емес», – бакалавриат және мүмкін жоғары сынып студенттеріне арналған операциялық жүйелер курстарын оқытуға арналған оқу бағдарламалық құралы. Ол Калифорния университетінде (Беркли) Томас Андерсон жасаған және әлемнің көптеген оқу орындарында қолданылады. Бастапқыда C++ тілінде MIPS үшін жазылған Nachos хост операциялық жүйеде пайдаланушы процесі ретінде жұмыс істейді. MIPS симуляторы Nachos операциялық жүйесінде іске қосылатын кез келген пайдаланушы бағдарламасының кодын орындайды. Nachos кодының әртүрлі архитектураларға арналған нұсқалары бар. Nachos жүйесімен бірге бірнеше тапсырмалар да беріледі. Nachos-тың мақсаты – студенттерді операциялық жүйені жобалау және іске асыру тұжырымдамаларымен таныстыру, оларға Nachos жүйесінде маңызды функционалдық бөлімдерді іске асыруды тапсыру арқылы. Nachos жағдайында операциялық жүйе симуляторы дегеніміз – Bochs/VMware сияқты, бір операциялық жүйені (қосымша OS) екіншісінің (хост OS) үстінде іске қосу мүмкіндігін білдіреді. Ол келесілерді эмуляциялайды:
* CPU (MIPS CPU)
* Қатты дискі
* Үзіліс контроллері, таймер және басқа да компоненттер
Бұл компоненттер Nachos пайдаланушы кеңістігіндегі қолданбаларды іске қосу үшін қажет. Яғни, сіз Nachos үшін бағдарламалар жазып, оларды нақты компилятормен (MIPS үшін кодты құрастыратын ескі gcc компиляторы) жинай аласыз және іске қоса аласыз. Nachos ядросы хост операциялық жүйенің платформасына компиляцияланады және хост операциялық жүйенің процессорында тікелей жұмыс істейді. Nachos 3.4 нұсқасы көп жылдар бойы Nachos-тың тұрақты және кеңінен қолданылатын нұсқасы болды. Nachos 4.0 нұсқасы шамамен 1996 жылдан бері бета-нұсқа ретінде қолданылуда.

Іске асыру

Nachos негізгі операциялық жүйенің функционалдығын іске асыратын әртүрлі модульдерді қамтиды. ОЖ ядросының әртүрлі жүйелік шақыруларына арналған орауыш функциялар UNIX жүйелік шақыруларына ұқсас әдіспен жүзеге асырылады. ОЖ-ның әртүрлі бөліктері туған кодты пайдалана отырып, объектілер ретінде құрылады. Мысалы, Machine класы симуляцияланған машинаның бас класы ретінде қолданылады. Ол FileSystem, Processor, Timer және т.б. сияқты әртүрлі объектілерді қамтиды, олар әртүрлі аппараттық жайттарды модельдеу үшін анықталған.

Негізгі компоненттері

Нахос машинасы MIPS архитектурасына жуық машинаны симуляциялайды. Машинада регистрлер, жад және процессор бар. Nachos/MIPS машинасы Machine объектісі арқылы іске асырылады, Nachos іске қосылғанда оның бір данасы құрылады. Ол Run, ReadRegister, WriteRegister сияқты әдістерді қамтиды. Сондай-ақ, ол үзілістерді басқару үшін үзіліс объектісін анықтайды. Таймер және статистика да осы жерде іске асырылған. NachOS жіптері NachOS-та жіп класы анықталған. Жіптің күйі болады, ол дайын, орындалып жатқан, тоқтатылған немесе жаңадан құрылған болуы мүмкін. Жіп объектісінің PutThreadToSleep, YieldCPU, ThreadFork, ThreadStackAllocate және т.б. сияқты әртүрлі әдістері бар. Әрбір жіп виртуалды адрестік кеңістікте жұмыс істейді. NachOS пайдаланушы бағдарламаларын өздерінің жеке адрестік кеңістігінде іске қосады. NachOS кез келген MIPS екілік кодын іске қоса алады, егер ол NachOS түсінетін жүйелік шақыруларды ғана жасаумен шектелсе. Unix жүйесінде "a.out" файлдары "coff" форматында сақталады. NachOS орындалатын файлдардың қарапайым "Noff" форматында болуын қажет етеді. Бір форматтағы екілік файлдарды екінші форматқа түрлендіру үшін coff2noff бағдарламасын пайдаланыңыз.

Орынбасарлар

Nachos бірнеше жылдан бері белсенді түрде дамытылмағандықтан және бірқатар анықталған кемшіліктері бар (әсіресе портативтілік тұрғысынан: Nachos MIPS құрастыру кодын пайдаланады және x86 архитектурасында жұмыс істеу үшін түрлендіруді қажет етеді), оның ізбасар жобалары қолға алынды. 2004 жылы Стэнфорд университеті C тілінде жазылған және нақты x86 аппараттық құралдарында жұмыс істеуге арналған Pintos жүйесін жасады, ол Nachos-тан шабыттанды. 2000 жылы UC Берклидегі Дэн Хеттена Nachos-ты Java тіліне Nachos 5.0j ретінде түрлендірді, бұл Nachos-ты көбірек портативті, студенттерге қолжетімді ету және студенттік кодтағы ұсақ қателерге байланысты туындайтын мәселелерді азайту мақсатында жасалды, себебі бұрынғы нұсқаларда осы мәселелер студенттік жобаларды дамыту уақытының көп бөлігін алып жатқан еді. Райс университетінің профессоры Питер Друшель де Java тіліндегі тағы бір нұсқасын жасады. Кейіннен 2003 жылы Стони Брук университетінің профессоры Юджин Старк оны бейімдеп, Операциялық жүйе курсында қолданды. Грац технологиялық университетінде (Австрия) SWEB ("Schon wieder ein Betriebssystem") деп аталатын жүйе іске асырылды және ол операциялық жүйе принциптерін оқыту үшін пайдаланылады.