Jądro Aleph
Aleph to wycofane jądro systemu operacyjnego opracowane na Uniwersytecie w Rochester jako część ich projektu RIG w 1975 roku. Aleph był wczesnym krokiem na drodze do stworzenia pierwszego praktycznego systemu operacyjnego z mikrojądrem , Mach .
Aleph wykorzystywał komunikację między procesami do przenoszenia danych między programami a jądrem, dzięki czemu aplikacje mogły w przejrzysty sposób uzyskiwać dostęp do zasobów na dowolnej maszynie w sieci lokalnej (która w tamtym czasie była eksperymentalnym Xerox Ethernet 3 Mbit / s ). Projekt ostatecznie wygasł po kilku latach z powodu gwałtownych zmian na rynku sprzętu komputerowego, ale pomysły doprowadziły do powstania Accent na Carnegie Mellon University , prowadzącego z kolei do Mach .
Aplikacje napisane dla systemu RIG komunikują się poprzez porty . Porty były zasadniczo kolejkami komunikatów utrzymywanymi przez jądro Aleph, identyfikowanymi przez unikalny identyfikator maszyny (w przeciwieństwie do unikalnego globalnie) składającego się z pary identyfikator procesu i identyfikatora portu. Procesom automatycznie przypisywano numer procesu lub pid podczas uruchamiania, a następnie mogły prosić jądro o otwarcie portów. Procesy mogły otwierać kilka portów, a następnie „odczytywać” je, automatycznie blokując i zezwalając na działanie innych programów do czasu nadejścia danych. Procesy mogły również „śledzić” inny, otrzymując kopię każdej wiadomości wysłanej do tego, który śledził. Podobnie programy mogą „wtrącać się” do innego, odbierając wiadomości i zasadniczo wycinając oryginalną wiadomość z rozmowy.
RIG został zaimplementowany na wielu minikomputerach Data General Eclipse . Porty zostały zaimplementowane przy użyciu buforów pamięci o wielkości ograniczonej do 2 kB. Spowodowało to znaczny narzut podczas kopiowania dużych ilości danych. Innym problemem, który uświadomiono sobie dopiero z perspektywy czasu, było to, że korzystanie z globalnych identyfikatorów umożliwiało złośliwemu oprogramowaniu „odgadywanie” portów i uzyskiwanie w ten sposób dostępu do zasobów, których nie powinno mieć. A ponieważ te identyfikatory były oparte na identyfikatorze programu, identyfikatory portów zmieniały się po ponownym uruchomieniu programu, co utrudniało pisanie serwerów z klientami, które mogłyby polegać na określonym numerze portu w celu świadczenia usług.
Rashid, Richard F. (1986). „Od RIG do Accent do Mach: ewolucja sieciowego systemu operacyjnego”. Materiały z 1986 ACM Fall wspólnej konferencji komputerowej . s. 1128–1137. ISBN 0-8186-4743-4 . S2CID 1114881 .