Кіріспе

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-сі өзгерді, бұл белгілі бір порт нөміріне сүйенетін клиенттері бар серверлерді жасауды қиындатты.