Кіріспе

Нақты уақыт операциялық жүйе

DNIX (түпнұсқа жазылуы: D Nix) – швед компаниясы Dataindustrier AB (DIAB) жасаған Unix-қа ұқсас, қолданыстан тоқтатылған нақты уақыт операциялық жүйе. ABCenix деп аталатын нұсқасы Luxor компаниясының ABC 1600 компьютері үшін әзірленген. Daisy Systems компаниясының да кейбір компьютерлік көмекпен жобалау (CAD) жұмыс станцияларында Daisy DNIX деп аталатын жүйесі болған. Бұл жүйе DIAB өнімдерімен ешқандай байланысы жоқ.

Швециядағы DIAB-те басталған

Dataindustrier AB (сөзбе-сөз аударма: компьютерлік индустриялар акционерлік қоғамы) 1970 жылы Ларс Карлссонмен Швецияның Сундсвалл қаласында бір тақталы компьютер өндіруші ретінде құрылды, ол Zilog Z80 негізіндегі Data Board 4680 деп аталатын компьютерді шығарды. 1978 жылы DIAB швед телекомпаниясы Luxor AB-мен бірлесіп, үй және кеңсе компьютерлерінің ABC 80 және ABC 800 серияларын өндіруге кірісті. 1983 жылы DIAB тәуелсіз түрде алғашқы Unix-ке үйлесімді DIAB DS90 машинасын, Motorola 68000 процессоры негізінде әзірледі. AT&T Corporation-ның UNIX System V лицензиясы негізінде D NIX осы жерде пайда болды. Алайда, DIAB – өнеркәсіптік басқару жүйесі (автоматтандыру) компаниясы болғандықтан, нақты уақыт операциялық жүйесіне мұқтаж болды. Сондықтан компания AT&T ұсынған UNIX ядросын өздері әзірлеген, бірақ үйлесімді нақты уақыт нұсқасымен алмастырды. Бұл ядро Литон Индустриз компаниясының Monroe Systems бөлімшесі үшін жасалған OS.8 деп аталатын Z80 ядросынан шабыт алды. Уақыт өте келе компания UNIX стандартты пайдаланушы құралдарының бірнешеуін өз іске асыруларымен алмастырды, нәтижесінде ешқандай код UNIX-тен алынбады және олардың машиналары кез келген AT&T UNIX лицензиясынан тәуелсіз жұмыс істей алды. Екі жыл өткен соң, Luxor компаниясымен бірлесіп, кеңсе нарығы үшін ABC 1600 деп аталатын компьютер әзірленді, ал сонымен қатар DIAB Motorola 68010, 68020, 68030 және ақырында 68040 сияқты Motorola процессорларының жаңа нұсқаларын қолдана отырып, DS90 компьютерінің жетілдірілген нұсқаларын шығаруды жалғастырды. 1990 жылы DIAB компаниясын Groupe Bull сатып алды, ол DS машиналарын DIAB брендімен, DIAB 2320, DIAB 2340 сияқты атаулармен шығаруды және қолдауды жалғастырды, олар әлі де DIAB-тің DNIX нұсқасын қолданды.

ISC Systems Corporation-тегі туынды құрал

ISC Systems Corporation (ISC) 1980-жылдардың соңында Motorola 68k негізіндегі банктік компьютерлер желісінде пайдалану үшін DNIX пайдалану құқығын сатып алды. (ISC кейіннен Olivetti сатып алды, ол өз кезегінде Wang-қа сатылды, содан кейін Getronics сатып алды. Бұл корпоративтік ұйым, көбінесе "ISC" деп аталады, жылдар бойы көптеген есімдерге жауап берді.) Бұл код тармағы SVR2 үйлесімді нұсқасы болды және олардың жұмысынан кең ауқымды өзгерістер мен дамуды алды. Бұл операциялық жүйенің ерекше ерекшеліктері сұраныс бойынша беттеу, дискісіз жұмыс станциялары, көппроцессорлық өңдеу, асинхронды кіріс/шығыс (I/O), файл жүйесіндегі каталогтарға процестерді (өңдеушілерді) орнату мүмкіндігі және хабар алмасу болды. Оның нақты уақытты қолдауы тізімдік іздеу механизмдерінен гөрі ішкі оқиғаларға негізделген кезектерден ("көктегі үйірме" болмады), екі кластағы статикалық процесс басымдықтарынан (толық орындау және уақыт бөлісі), үздіріссіз файлдарды қолдаудан (критикалық ресурстардың фрагментациясын болдырмау үшін) және жадты құлыптаудан тұрды. Ортогональды асинхронды оқиғаларды жүзеге асыру сапасы әлі күнге дейін коммерциялық операциялық жүйелерде теңдессіз, бірақ кейбіреулері оған жақындады. (Әлі қабылданбаған тұжырымдама - барлық асинхронды әрекеттің синхронды басқару нүктесі де асинхронды болуы мүмкін, шексіз. DNIX бұл мәселені шеберлікпен шешті.) Асинхронды I/O мүмкіндігі Беркли сокеттерінің таңдауын немесе SVR4 STREAMS сауалнама механизмін қажет етпеді, бірақ сокет семантикасын кері үйлесімділік үшін сақтаған сокет эмуляциясы кітапханасы болды. DNIX-тің тағы бір ерекшелігі - стандартты утилиталардың ешқайсысы (мысалы, ps, жиі бұзушы) өз жұмысын орындау үшін ядроның жадында іздемеді. Оның орнына жүйелік шақырулар қолданылды, бұл ядроның ішкі архитектурасы қажет болған жағдайда өзгеруге еркін болды. Өңдеуші тұжырымдамасы желілік протокол стектерін ядродан тыс орналастыруға мүмкіндік берді, бұл жалпы сенімділікті арттыра отырып, дамуды жеңілдетті және өнімділікті арттырды. Ол сондай-ақ шетелдік файл жүйелерін пайдаланушы деңгейіндегі процестерге мүмкіндік берді, тағы да сенімділікті арттыру үшін. Негізгі файл жүйесі, болса да, ол сыртқы процесс болған (бұл бір кезде болған), өнімділік үшін ядроға тартылды. Бұл болмаса, DNIX микроядро ретінде қарастырылуы мүмкін еді, бірақ ол ресми түрде әзірленбеді. Өңдеушілер кез келген "туған" Unix файлы, каталог құрылымы немесе құрылғысы ретінде көріне алады, ал өңдеуші өңдеуге келмейтін файл I/O сұраныстарын басқа өңдеушілерге, оның ішінде өңдеуші орнатылған негізгіге жіберуі мүмкін. Өңдеуші байланыстары да файл жүйесінен тәуелсіз болуы және таратылуы мүмкін, құбыр сияқты. Мұның бір салдары - мәтіндік терминалға (TTY) ұқсас құрылғылар ядроға негізделген жалған терминалдың қажеттілігісіз эмуляциялануы мүмкін. ISC-тің дискісіз жұмыс станциясын қолдауында өңдеушінің көмегімен шешілген жағдайдың мысалы, іске асырудағы қате жұмыс станциясында атаулы құбырларды қолдану файл серверінде қажетсіз ресурстарды құлыптауға әкелді. Тиісті ядро түзетулері әзірленгенге дейін жұмыс станциясында аталған құбырларға қол жеткізу үшін өңдеуші құрылды. Бұл өңдеушіні жүзеге асыру үшін шамамен 5 килобайт код қажет болды, бұл тривиальды емес өңдеушінің үлкен болуы қажет емес екенін көрсетеді. ISC сонымен қатар DIAB-тің DS90 10 және DS90 20 машиналарын файл серверлері ретінде өндіру құқығын алды. Алайда, DS90 20 көппроцессорлы машиналары мақсатты нарыққа тым қымбат болғандықтан, ISC өз серверлерін жобалап, оларға DNIX-ті порттады. ISC осы файл серверлерімен пайдалану үшін өзінің GUI негізделген дискісіз жұмыс станцияларын жасады және DNIX-ті қайтадан порттады. (ISC Daisy DNIX-ті орындайтын Daisy жұмыс станцияларын DIAB-тің DNIX-ін орындайтын машиналарды жобалау үшін қолданғанмен, ішкі жағынан елеусіз шатасу болды, өйткені жобалау және орналастыру қызметкерлері бағдарламалық жасақтама қызметкерлерімен сирек сөйлеседі. Сонымен қатар, аппараттық жобалау тобы екі жүйе де қолданбады! Ойынның анекдоты былай болды: "ISC-де біз компьютерлерді жасаймыз, біз оларды қолданбаймыз".) DNIX-тің асинхронды I/O қолдауы жұмыс станцияларында оқиғаға негізделген оңай бағдарламалауға мүмкіндік берді, олар салыстырмалы түрде шектеулі ресурстары болғанымен жақсы жұмыс істеді. (GUI дискісіз жұмыс станциясы 7 МГц 68010 процессорымен жабдықталған және тек 512 КБ жадпен ғана пайдалануға болатын, оның жартысын ядро тұтынады. Көптеген жұмыс станцияларында 1 МБ жад болды, бірақ кейінірек 2 МБ және 4 МБ нұсқалары, сондай-ақ 10 МГц процессорлары болды.) Толыққанды орнату бір серверден (16 МГц 68020, 8 МБ жедел жад және 200 МБ қатты дискі) және 64 жұмыс станциясына дейін құралуы мүмкін. Бастауға баяу болғанымен, мұндай массив банк кассирінің жұмысында қанағаттанарлық өнімділік көрсетеді. DNIX-тің өзіндік тиімділігінен басқа, байланысты DIAB C компиляторы жоғары өнімділікке үлкен үлес қосты. Ол әсіресе 68010 үшін жақсы кодты жасады, әсіресе ISC оны жетілдіргеннен кейін. (ISC сонымен қатар оны соңғы жұмыс станциясында қолданылған Texas Instruments TMS34010 графикалық копроцессорына қайта бағыттады.) DIAB C компиляторы, әрине, DNIX-ті құру үшін қолданылды, бұл оның тиімділігіне үлес қосатын факторлардың бірі болды және ол әлі де Wind River Systems арқылы қандай да бір нысанда қол жетімді. Бұл жүйелер 2006 жылы жазылған кезде, бұрынғы Seattle First National Bank бөлімшелерінде, қазір Bank of America деп таныстырылған жерлерде әлі де қолданылуда. ISC клиенттерінің кейбіреулері DNIX-ті әлі де қандай да бір жолмен пайдалануы мүмкін, және бәлкім, солай болар. ISC арқылы Орталық және Оңтүстік Америкада DNIX кең таралған.

Бір-біріне үйлесімділік

Dnix (((2) шақырудан басқа, libc интерфейсінің "стандартты" шақыруларының толық жиынтығы қолданысты болды. ашу ((2), жабу ((2), оқу ((2), жазу ((2) және т.б. Бұлар артқа қарай үйлесімділік үшін ғана емес, сонымен қатар NCR Tower компьютерімен екілік код деңгейінде үйлесімді болатындықтан, осы компьютер үшін құрастырылған екілік файлдар DNIX жүйесінде өзгеріссіз жұмыс істейтін. DNIX ядросының ішінде екі тұзақ диспетчері болды: біреуі DNIX әдісі үшін, екіншісі Unix әдісі үшін. Диспетчерді таңдау бағдарламашының қалауына байланысты болды, және оларды бір-бірімен алмастыра қолдануға болады. Олардың семантикасы функциялардың өзара сәйкес келетін бөліктерінде толықтай бірдей болды. (Бұл машиналарда unix (((2) шақырулары үшін 68000 тұзақ #0 нұсқауы, ал dnix (((2) шақырулары үшін тұзақ #4 нұсқауы қолданылды. Екі тұзақ басқарушы да өте ұқсас болды, бірақ [көбінесе жасырылған] unix(2) шақыруы функция кодын процессордың D0 тіркегішінде сақтаса, dnix(2) оны қалған параметрлермен бірге стекте сақтады.) DNIX 5.2 ішкі жүйеде желілік протоколдар жиынтығына ие болған жоқ (ISC-нің дискісіз жұмыс станцияларын қолдау пакеті үшін қосылған X.25 негізіндегі Ethernet протоколы жиынтығынан басқа), барлық желілік байланыс өңдеушілерге оқу және жазу арқылы жүзеге асырылды. Сондықтан сокет механизмі болған жоқ, бірақ TCP/IP өңдеушісімен байланыс үшін асинхронды I/O қолданатын libsocket ((3) кітапханасы болды. Типик Berkeley негізіндегі желілік бағдарламаны өзгеріссіз компиляциялау және іске қосу мүмкін болды (әдеттегі Unix порттау мәселелерін ескере отырып), бірақ ол сол функцияларды орындайтын, бірақ асинхронды I/O-ны тікелей пайдаланатын бағдарламадан гөрі тиімді болмауы мүмкін.

ISC-нің кеңейтулері

ISC DNIX-тің 5.2 (SVR2-ге үйлесімді) және 5.3 (SVR3-ге үйлесімді) нұсқаларын сатып алды. Сатып алу кезінде DNIX 5.3 әлі де DIAB-те әзірленуде болғандықтан, DNIX 5.2 орналастырылды. Уақыт өте келе, ISC инженерлері 5.3 ядросының көптеген мүмкіндіктерін 5.2 нұсқасына енгізді, ең алдымен ортақ жады мен IPC, сондықтан DIAB және ISC DNIX нұсқалары арасында кейбір ерекшеліктер пайда болды. DIAB 5.3 ISC 5.2-нің соңғы нұсқасына қарағанда көбірек SVR3 мүмкіндіктерін қамтыды. Сондай-ақ, DIAB DNIX 5.4-ке көшті, ол SVR4-ке үйлесімді операциялық жүйе болды. ISC-де әзірлеушілер DNIX 5.2 нұсқасын олардың қажеттіліктері мен Unix индустриясының жалпы тенденцияларына негізделген (тек ядроға қатысты мүмкіндіктер тізімделген) айтарлықтай кеңейтті:

Дисксіз жұмыс станциясын қолдау. Жұмыс станциясының ядролық файлдық жүйесі алынып тасталды және X.25 негізделген Ethernet байланыс тікелей қосылысымен ауыстырылды. Файл серверінің ядросы да қашықтан келетін сұрауларды қабылдап, оларды қызмет көрсету үшін ядролық процестер тобына жіберуге арналған жұптас компонентпен кеңейтілді, бірақ мұны жасау үшін стандартты өңдеуші жазылуы мүмкін еді. (Өнімнің өмірлік циклының соңында ISC стандартты SVR4 негізделген Unix серверлерін DNIX серверлерінің орнына орналастырды. Бұл X.25 STREAMS және арнайы жазылған файл сервері бағдарламасын пайдаланды. Тиімділігі төмен құрылымға қарамастан, пайдаланылған платформалардың жоғары өнімділігі әлдеқайда жылдам серверді қамтамасыз етті. Бұл файл сервері бағдарламасы DNIX серверінің барлық функционалдық мүмкіндіктерін қолдамағаны өкінішті. Атаулы құбырлар сияқты қиын мәселелер ешқашан жұмыс істемеді. Бұл құбырларды өңдеу процесіне тағы бір себеп болды.) ISC-нің MMU мүмкіндіктерін пайдалана отырып, gdb бақылау нүктесін қолдау. Файл жүйесіне асинхронды I/O енгізілді. (Бастапқыда ол тоқтатылды.) Бұл үшін ядролық процестер (kprocs немесе threads) пайдаланылды. Truss немесе strace сияқты бағдарламаға қолдау. Стандартты Unix ptrace бір қадамдық механизміндегі кейбір қателерді жөндеуден басқа, бұл трасердің стандартты бір қадамдық механизмді жұмыс істеп тұрған процестерде пайдалануы үшін уақытша процесс қабылдау құралын қосуды қажет етті. SVR4 сигналдық механизмінің кеңейтулері. Негізінен жаңа STOP және CONT сигналдары үшін, бірақ жаңа сигнал басқару шақыруларын да қамтиды. ISC-де adb және sdb жөндеушілерінің бастапқы коды болмағандықтан, u бетін өзгерту мүмкін болмады, сондықтан жаңа сигналдарды ұстау мүмкін болмады, оларды тек тоқтатуға немесе әдепкі өңдеуге ие етуге болады. Желілік аңсауды қолдау. Бұл Ethernet драйверін кеңейтуді қажет етті, сондықтан бір оқиға бірнеше I/O сұранысын қанағаттандыра алады, ал ымыраға келу режимін қолдау үшін аппараттық сүзгілеуді бағдарламалық түрде шартты түрде жүзеге асыру керек. Дискілерді көшіру. Бұл құрылғы драйверінде емес, файл жүйесінде жасалды, сондықтан сәл (немесе тіпті толығымен) әртүрлі құрылғыларды да бірге көшіруге болады. Флопиге кішкентай қатты дискіні көшіру флопиді шығару арқылы дискідегі қателерді оңай тудыратындықтан, көшіруді сынаудың танымал тәсілі болды. 32 биттік inode, 30 таңбалы файл атауы, символды сілтеме және файл жүйесіне жабысқақ каталогтар. /dev/zero, /dev/noise, /dev/stdXXX және /dev/fd/X құрылғылары қосылды. Процесс тобының идентификатор тізімдері (SVR4-тен). #! тікелей сценарийді орындау. ISC-нің Z 80 негізделген VMEbus байланыс тақталарын пайдалана отырып, сериялық портты көбейту. Жылжымалы ауыстыру бөлімі. Орындалып жатқан процестердің негізгі "сүп-сарты" суреті. Фюзер командасын қолдау. Процесс рениц функциясы. Басымдықтарды өзгерту үшін уақыт бөлісуді қайта реттеу бағдарламасы. Процестерді "қаптау" әдісі, оны барлық жад ресурстарынан бірден айыру. Қазіргі жұмыс жиынтығының қандай екенін анықтау үшін өте пайдалы, оған әлі қол жетімді, бірақ міндетті түрде қолданылмайтын нәрсеге қарама-қарсы. Бұл процестердің жад картасының барлық 1024 беттерінің жағдайын көрсететін графикалық интерфейспен байланысты. (Бұл ISC-нің MMU қолдаған жад беттерінің саны.) Пайдалану кезінде сіз мақсатты процесті оның өмір бойында кезең-кезеңмен "қағып" алатынсыз, содан кейін қанша жад ауыстырылғанын көретін болады. Бұл пайдалы болды, өйткені ISC-нің өндірістік ортасы ұзақ уақыт бойы өмір сүрген бірнеше процестерді ғана қолданды, олардың жадты пайдалануын және өсуін бақылау өнімділікті сақтаудың кілті болды.