Алеф: Желілік жүйе қадамдары және микроядроның бастауы
Aleph kernel
Aleph – 1975 ж. Rochester университетінде жасалған тоқтатылған операциялық жүйе ядросы. Mach жүйесінің дамуына әсер етті, желілік байланыс пен микроядролық архитектураны зерттеді.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Aleph – 1975 жылы Рочестер университетінде олардың Рочестердің интеллектуалды шлюзі (RIG) жобасының бөлігі ретінде әзірленген қолданыстан шығарылған операциялық жүйе ядросы. Aleph – алғашқы практикалық микроядролық операциялық жүйе Mach құру жолындағы алғашқы қадам болды. Aleph бағдарламалар мен ядро арасында деректерді алмасу үшін процестер аралық байланысты пайдаланды, соның арқасында қолданбалар жергілікті желідегі кез келген машинадағы ресурстарға тікелей қол жеткізе алды (сол кезде бұл 3 Мбит/с жылдамдықтағы эксперименталды Xerox Ethernet желісі болды). Бірнеше жылдан кейін компьютерлік жабдықтар нарығындағы қарқынды өзгерістерге байланысты жоба тоқтап қалды, бірақ оның идеялары Карнеги Меллон университетінде Accent құрылуына, ал ол өз кезегінде Mach құрылуына әкелді. RIG жүйесі үшін жазылған қолданбалар порттар арқылы байланыс жасады. Порттар – бұл негізінен Aleph ядросымен басқарылатын хабарлама кезегі болды, олар процесс ID және порт ID жұбынан тұратын машинаға тән (глобалдік емес) ID арқылы анықталды. Процестерге автоматты түрде процесс нөмірі немесе PID тағайындалды, содан кейін олар ядродан порттарды ашуды сұрай алатын болды. Процестер бірнеше портты ашып, оларды "оқи" алатын, деректер келгенше автоматты түрде тоқтап, басқа бағдарламалардың жұмыс істеуіне мүмкіндік беретін. Процестер басқа процестің "көлеңкесі" бола алатын, көлеңкеде тұрған процеске жіберілген әрбір хабарламаның көшірмесін алатын. Сол сияқты, бағдарламалар басқа бағдарламаға "араласып", хабарламаларды қабылдап, сөйтісуден бастапқы хабарламаны толығымен алып тастауға мүмкіндік беретін. RIG бірнеше Data General Eclipse мини-компьютерлерінде іске асырылды. Порттар жад буферлерін пайдалана отырып іске асырылды, олардың көлемі 2 кБ-қа шектелген. Бұл үлкен көлемдегі деректерді көшіру кезінде айтарлықтай қосымша шығындарға әкелді. Тағы бір мәселе, кейін ғана анықталды, жаһандық ID-лердің қолданылуы қауіпті бағдарламалық жасақтамаға порттарды "болжауға" және оларға тиесілі емес ресурстарға қол жеткізуге мүмкіндік берді. Ал аталған ID-лер бағдарлама ID-сіне негізделгендіктен, бағдарлама қайта іске қосылғанда порт ID-сі өзгерді, бұл белгілі бір порт нөміріне сүйенетін клиенттері бар серверлерді жасауды қиындатты.
Aleph is a discontinued operating system kernel developed at the University of Rochester as part of their Rochester's Intelligent Gateway (RIG) project in 1975. Aleph was an early step on the road to the creation of the first practical microkernel operating system, Mach. Aleph used inter process communications to move data between programs and the kernel, so applications could transparently access resources on any machine on the local area network (which at the time was a 3 Mbit/s experimental Xerox Ethernet). The project eventually petered out after several years due to rapid changes in the computer hardware market, but the ideas led to the creation of Accent at Carnegie Mellon University, leading in turn to Mach. Applications written for the RIG system communicated via ports. Ports were essentially message queues that were maintained by the Aleph kernel, identified by a machine unique (as opposed to globally unique) ID consisting of a process id, port id pair. Processes were automatically assigned a process number, or pid, on startup, and could then ask the kernel to open ports. Processes could open several ports and then "read" them, automatically blocking and allowing other programs to run until data arrived. Processes could also "shadow" another, receiving a copy of every message sent to the one it was shadowing. Similarly, programs could "interpose" on another, receiving messages and essentially cutting the original message out of the conversation. RIG was implemented on a number of Data General Eclipse minicomputers. The ports were implemented using memory buffers, limited to 2 kB in size. This produced significant overhead when copying large amounts of data. Another problem, realized only in retrospect, was that the use of global ID's allowed malicious software to "guess" at ports and thereby gain access to resources they should not have had. And since those IDs were based on the program ID, the port IDs changed if the program was restarted, making it difficult to write servers with clients that could rely on a specific port number for service.