Кіріспе

Суперкомпьютерлік операциялық жүйе Network Livermore Time Sharing System (NLTSS, кейде New Livermore Time Sharing System) - 1979 жылдан бастап 1988 жылға дейін Лоренс Ливермор зертханасында (қазіргі Лоренс Ливермор ұлттық зертханасы) белсенді түрде әзірленген, бірақ 1995 жылға дейін өндірістік қолданбаларды іске қосуды жалғастырған операциялық жүйе. Бұрынғы жүйе, Ливермордың уақыт бөлісу жүйесі он жылдан астам уақыт бұрын жасалды. NLTSS бастапқыда CDC 7600 компьютерімен жұмыс істеді, бірақ 1985 жылдан 1994 жылға дейін Cray компьютерлерінде, соның ішінде Cray 1, Cray X MP және Cray Y MP модельдерінде ғана өндірілді.

Сипаттамалары

NLTSS операциялық жүйесі көптеген жағынан ерекше, ал кейбір жағынан бірегей болды.

Төмен деңгейлі архитектура

NLTSS микроядролық хабарламалар беру жүйесі болды. Бұл жүйе ядросының тек бір жүйелік шақыруды қолдауымен ерекше болды. Бұл жүйелік шақыруды "коммуникация" деп атауға болады (оның аты жоқ, өйткені оны басқа жүйелік шақырулардан ажыратудың қажеті жоқ) "буферлік кестелердің" тізімін қабылдады (мысалы, NLTSS хабарлама жүйесі интерфейсін қараңыз), онда хабарлама байланысы үшін басқару ақпараты бар жібереді немесе қабылдайды. Мұндай байланыс жүйе ішінде де, желіде де жүйе ядросының барлық пайдаланушы процестері үшін тікелей қолдау тапты. "Хабарлама жүйесі" (бір шақыруды және желілік протоколдарды қолдайтын) және дискілер мен процессор үшін драйверлер жүйенің бүкіл өзегін құраған.

Орта деңгейлі архитектура

NLTSS - бұл мүмкіндіктерге негізделген қауіпсіздік клиенті-сервер жүйесі. Екі негізгі серверлер - файл сервері және процесс сервері. Файл сервері жергілікті сақтау үшін (дискідегі сақтау) драйверлер сенім артатын артықшылықты процесс болды, ал процессер процессор драйвері сенім артатын артықшылықты процесс болды ("алмастырғышта" процестер арасындағы уақыт бөлісуді басқаратын бағдарламалық қамтамасыз ету, "байланыс" шақырудан басқа процестер үшін үзілістерді басқаратын, процессер сервері үшін жадқа және процесстің күйіне қол жеткізуді қамтамасыз еткен және т.б.). NLTSS шынайы желілік операциялық жүйе болды, өйткені оның ресурстық сұраныстары желідегі кез-келген жердегі жергілікті процестерден немесе қашықтағы процестерден болуы мүмкін және серверлер оларды ажыратпады. Сервердің мұндай айырмашылықтарды жасаудың жалғыз жолы желілік мекенжай арқылы болады және олардың мұндай айырмашылықтарды жасауға ешқандай себебі жоқ. Серверлерге жіберілген барлық сұраулар желілік сұраулар ретінде пайда болды. NLTSS-тегі процестер арасындағы байланыс үшін конвенция бойынша Ливермордың интерактивті желілік байланыс жүйесі (LINCS) протоколы жиынтығы қолданылды, ол OSI эталондық моделімен анықталған протокол стегін анықтады. NLTSS және LINCS үшін тасымалдау деңгейі протоколы Delta T деп аталды. Ұсынылу деңгейінде LINCS нөмірленген параметрлерді белгілер ретінде (мысалы, бүтін сандар, мүмкіндіктер және т.б.) жеткізу стандарттарын анықтады. қашықтағы процедуралық шақыру түрінің механизмімен өңдеу үшін сессия деңгейіндегі жазбада сақталған. NLTSS-те "пайдаланушы" ұғымы өте шеткі түрде ғана анықталды. "Есеп сервері" бар еді, ол қай пайдаланушылардың қандай ресурстарды пайдаланғанын қадағалайтын (мысалы, файл немесе процестер сияқты объектілерді құру үшін мұндай есептік мүмкіндікті талап ететін сұраулар). Кіруді бақылау толықтай мүмкіндіктермен (хабарланатын билік белгілері) басқарылды.

Файл сервері

Кез келген процесс файл серверіне файлдарды құруға (файл мүмкіндіктерін қайтару), файлдарды оқу немесе жазуға (файл мүмкіндіктерін ұсыну арқылы) және т.б. сұраулар жасай алады. Мысалы, файлды оқу үшін әдетте үш буферлік кесте қажет, біреуі файл серверіне сұрау салуды жіберу үшін, біреуі файл серверінен жауап алу үшін және біреуі файлдан деректерді алу үшін. Бұл үш өтініш әдетте хабарлама жүйесіне бір уақытта, кейде басқа өтініштермен бірге жіберілді. Буфер кестелерінде кез келген тапсырылған буфер кестелері "Толық" деп белгіленсе, процесті ояту (блокты шешу) үшін басқару биттері орнатылуы мүмкін. Файлды оқу үшін кітапхана шақыруы, әдетте, файл серверінен бақылау жауабы алынғанға дейін бұғатталады, бірақ асинхронды I / O, әрине, бұғаттамайды және кейіннен тексеруге немесе бұғаттауға болады. Пайдаланушы жағындағы кез келген осындай айырмашылық файл серверіне көрінбейді.

Процесс сервері

NLTSS-те процессер файл серверіне өте ұқсас болды, өйткені пайдаланушы процестері процестерді құруды, процестерді бастауды немесе тоқтатуды, процестер жадынан немесе регистрлерден оқуды немесе жазуды және процестердегі қателер туралы хабардар етуді сұрай алады. Процесс сервері қарапайым пайдаланушы режіміндегі процес болды, ол жай ғана CPU драйверімен байланыс орнатуға сенімді болды, файл сервері диск драйверімен байланыс орнатуға сенімді болған сияқты. Процесс сервері процесстің жай-күйін файл сервері ұсынған файлдарда сақтайды және осыған байланысты файл серверіне кез-келген басқа пайдаланушы процессі сияқты көрінеді.

Каталог сервері

NLTSS-те жоғары деңгейдегі сервердің мысалы каталог сервері болды. Бұл сервердің міндеті файлдарды (пайдаланушы үшін көрінбейтін) атау бойынша мүмкіндіктерді сақтау және алу үшін пайдаланылатын каталогтарға айналдыру болды. Мүмкіндіктер жай ғана деректер болғандықтан, бұл әсіресе қиын тапсырма емес, негізінен LINCS протоколы жиынтығында анықталған конвенцияларға сәйкес мүмкіндіктерге қатынау рұқсаттарын өзгертуден тұрады. Бұл қызықтырақ болған жер - мұрагерлік деп аталатын рұқсатты пайдалану. Егер бұл бит қосылған болса (рұқсат етілсе), онда мүмкіндіктерді толық кіру мүмкіндігімен каталогтан алуға болады. Егер бұл бит өшірілген болса (рұқсат етілмесе), онда каталогтағы мүмкіндіктердегі рұқсат рұқсат етілмеген болса, ол сұралған қосымшаға қайтарылғанға дейін, қайтадан алынатын мүмкіндіктерде өшіріледі. Бұл механизм адамдарға, мысалы, каталогта файлдарды оқу / жазуды сақтауға мүмкіндік берді, бірақ басқа пайдаланушыларға олардың тек оқу экземплярларын алуға рұқсат берді.

Даму

NLTSS бағдарламасының басым бөлігі "Model" деп аталатын Лос-Аламос ұлттық зертханасында жасалған Паскаль кеңейтуінде жасалды. Модель Паскальды абстрактілі деректер түрі (объект) механизмі мен басқа да кейбір мүмкіндіктерді қосу үшін кеңейтті. NLTSS үйлесімділік мұрасымен ауысты. NLTSS LLNL-дегі Livermore Компьютер орталығында Livermore Time Sharing System (LTSS) жүйесін әзірлеу мен іске қосуды (1968-1988 жылдары) жалғастырды. NLTSS-ті дамыту LTSS-ті Cray 1-ге көшіріп, Cray Time Sharing System-ке айналдырған уақытта басталды. LLNL-дегі көптеген ғылыми қолданбалармен үйлесімді болу үшін NLTSS бұрынғы LTSS операциялық жүйесінің жүйелік шақыруларын эмуляциялауға мәжбүр болды. Бұл эмуляция "baselib" деп аталатын үйлесімділік кітапханасы түрінде іске асырылды. Бір мысал ретінде, каталог құрылымы және осылайша NLTSS-тің процесс құрылымы табиғи түрде бағытталған график болған кезде (процесс мүмкіндіктері файл мүмкіндіктері немесе каталог мүмкіндіктері сияқты каталогтарда сақталуы мүмкін), baselib кітапханасы қарапайым сызықтық (басқарушы басқарылатын) процестер құрылымын эмуляциялады ( Unix-тегідей тіпті ағаш құрылымы емес) алдыңғы LTSS-пен үйлесімді болу үшін. Ғылыми пайдаланушылар NLTSS қызметтеріне baselib кітапханасынан тыс ешқашан кірмегендіктен, NLTSS пайдаланушылар үшін LTSS-ке ұқсас болып шықты. Пайдаланушылардың көпшілігі мүмкіндіктер туралы білмеді, желідегі ресурстарға қол жеткізе алатындығын түсінбеді және әдетте NLTSS-тен басқа қызметтер ұсынатынын білмеді. NLTSS ортақ жадының симметриялық мультипроцессорлық жүйесін қолдады, бұл даму Cray Time Sharing System-те ұқсас дамумен қатар барды. Тіпті NLTSS атауы да мұра болып қалды. "New Livermore Time Sharing System" атауы бастапқыда даму кезінде уақытша атау ретінде қарастырылды. Жүйе кейбір қосымшаларды қос жүйелік режимде (LTSS-пен драйверлерді бөлісетін виртуалды машинаның түрі) орындай бастағаннан кейін, әзірлеушілер LIncs Network Operating System (LINOS) деген тұрақты атауды таңдады. Өкінішке орай, LLNL басшылығы атауды сол кезде өзгертуге болмайды деп шешті (көрінерлік, өйткені бұрынғы термин бюджеттік өтініштерде қолданылған), сондықтан уақытша NLTSS атауы бүкіл өмір бойы жүйеде қалды. NLTSS-пен қатар LINCS протоколдарын (NLTSS-пен бірдей файлдар мен каталогтар протоколдарын) қолданатын жаппай сақтау жүйесі де әзірленді. Бұл жүйе/бағдарламалық қамтамасыз ету кейінірек Unitree өнім ретінде коммерцияланды. Unitree жалпы алғанда LINCS және NLTSS мұрасы ретінде қарастырылатын жоғары өнімділік сақтау жүйесімен (HPSS) алмастырылды. Мысалы, LINCS және NLTSS үшінші тараптың беру нысанын енгізді (NLTSS-те файлды файлға көшіру үшін процесс файл серверлеріне екі сұрау жібере алады, біреуі оқуға, біреуі жазуға және файл серверлеріне деректерді өз ара аударуға бағыттауға) Unitree және HPSS-ке өзгертілген түрде жүзеге асырылды.

Іске асыру және жобалау мәселелері

NLTSS-ке қарсы ең үлкен соққы оның өндірістік өмір бойы өнімділігі болды. Пайдаланушыларға ең көп әсер еткен бір өнімділік мәселесі файлға қол жеткізудің кідіріс уақыты болды. Бұл жалпы алғанда дискке кіру / шығу (I / O) үшін маңызды проблема емес еді, бірақ NLTSS жұмыс істейтін жүйелер 10 микросекундтан төмен қолжетімділік уақыты бар өте төмен күту уақытын қатаң күйдегі дисктердің маңызды қосымшасын қолдайды. NLTSS-те файл операцияларының бастапқы күту уақыты қатты күйдегі дискке қол жеткізудің күту уақытымен салыстырылды және осындай қол жеткізудің LTSS күту уақытынан айтарлықтай жоғары болды. NLTSS-те файлдарға қол жеткізудің кідіріс уақытын жақсарту үшін іске асыру маңызды өзгертілді, сондықтан кідіріс уақытына ең сезімтал процестерді (әсіресе файл серверін) "желіге" орналастыру. Бұл күш-жігер алғашқыда естілгендей маңызды емес, өйткені барлық NLTSS серверлері көп желілі модельде жұмыс істеді. Бұл өзгеріс файл сервері қызметтеріне жауапты желілерді жеке файл сервері процесінен ядро "процессіне" көшіру болды. Пайдаланушыларға хабарлау өзгермеді (әлі де буферлік кестелер, LINCS токендері және т.б. арқылы). ), бірақ файлдарды басқару кейбір маңызды контексттік өзгерістерден аулақ болды, бұл ескі LTSS және бәсекелес Cray Time Sharing System ұсынғаннан жоғары латенттіктің негізгі себебі болды. Бұл өзгеріс файл I/O операцияларының кіруін едәуір жақсартты (~ 3x), бірақ сонымен қатар файл сервері ядроның сенімді бөлігіне айналды (жобалау арқылы емес, жобалау арқылы). NLTSS-ті іске асырудың екінші мәселесі оның деректерді іске асыру қабілеті қауіпсіздігіне / тұтастығына байланысты. Бұл іске асыру пароль мүмкіндіктері моделін қолданды (мысалы, пароль арқылы басқаруды қараңыз). Бұл модель бойынша процесстің жады кеңістігіне кіре алатын кез келген адам немесе процесс осы жадыда табылған деректер арқылы ұсынылған мүмкіндікке қол жеткізуге құқылы. Кейбір жүйелік архитекторлар (мысалы, Эндрю С. Таненбаум, Amoeba тарату операциялық жүйесінің архитекторы) жадыға қол жеткізудің бұл қасиеті мүмкіндіктерге қол жеткізуді білдіретін проблема емес деп болжады. NLTSS ортасында кейде адамдар бағдарламалық жадының қалдықтарын басқаларға талдау үшін алып жүретін. Осы және басқа да мәселелерге байланысты мұндай пароль мүмкіндіктері NLTSS-те осалдық деп саналды. Осы осалдықтан қорғау үшін Control by Public Key Encryption механизмі жасалды. Бұл механизм NLTSS-те өндіріске енгізілмеген, өйткені оның өнімділігі өте қымбат және пайдаланушылар пароль мүмкіндіктерінің осал екенін білмеді. Криптографиядағы қазіргі заманғы жетістіктер мүмкіндіктерді, әсіресе Интернет/Веб мүмкіндіктерін (мысалы, YURLs немесе WideWORD қараңыз) осындай қорғауға мүмкіндік береді. NLTSS-тің жобалау мәселесі оны өндірістен алып тастағаннан кейін бірнеше жылға дейін қарастырылмаған, ол оның ашық желілік архитектурасы болды. NLTSS-те процестер өрт қабырғалары немесе басқа шектеулері жоқ желідегі виртуалды процессорлар ретінде қарастырылды. Кез келген процесс кез келген басқа процеспен еркін байланыса алады. Бұл тікелей байланысты шектеу деген мағынада да шектеу мүмкін емес дегенді білдірді, мысалы, " қабырғаға соққы беру " сияқты жасырын арналарды шектеу. Бұл мәселені шешу үшін NLTSS байланыс мүмкіндіктерін қажет етеді. NLTSS-те "ағын нөмірлері" сияқты кейінгі даму жұмыстары осындай құрылғыға жақындады, бірақ 1988 жылы белсенді даму тоқтаған кезде NLTSS-те байланыс әлі де шектелмеген болатын.