15 мая 2009, 04:15 (5670 дней назад, №8767)Вспомнилось: Об операционных системах
Набрел чисто случайно на
одну страничку, вспомнил кусочек жизни.
Где-то в 1998-1999 годах мы с приятелем - Алексеем Пиялкиным (dragonfa) частенько бывали в
институте Математики им.Стеклова (ЛОМИ) - примерно на углу Фонтанки и Невского он находится. Не то, чтобы нравилась математика (скорее наоборот :) , но там был Интернет, в то время не такой уж общедоступный, и Sun Classic. Как сейчас помню, взаимосвязь была прямая - чтобы настроить dialup, надо было на этот Sun Classic поставить Solaris 2.0 и скомпилить для него SunOS'овский slip (с ppp были какие-то непреодолимые проблемы).
Сейчас с удивлением вспоминаю, что я реально ставил GNU C, чего-то там в adb/gdb отлаживал. Ради любопытства даже на Sparc'овском ассемблере писал короткие программки, конвейер заполнял nop'ами после переходов, с регистровыми окнами разбирался (в том же adb!). Просто не верится..
Поскольку весь этот процесс развлечения с Solaris'ом был очень небыстрым (а на Sun Classic'е с 24мб RAM - тем более), ходили мы туда регулярно. Пару раз домой шли пешком аж до Лесной-Гражданки.
Само собой, не ехать на метро была причина. Мы придумывали свою операционную систему (в те времена этим занималось заметно меньше народу, чем сейчас - видимо, просто было меньше компьютеров на душу населения :)
Изучили просто нереальное количество документации, начиная с 1960-х. Сейчас, подозреваю, единицы имеют представление об архитектурах типа i432, AS/400, SWARD, Эльбрус (не тот, который E2K, а оригинальный). Мы всё пытались придумать архитектуру виртуальной машины, которая красиво легла бы на любую железку - с любым процессором, в том числе и несколькими. Тогда железки были слабоваты и производительность
имела значение. Скажем, стековую архитектуру той же JVM (равно как и CISC'овскую у конкурентов -
Dis) трудно было рассматривать всерьез, если предполагать, что оно должно работать как на RISC'ах, так и на CISC'ах (и еще VLIW был на подходе), плюс распараллеливаться на несколько процессоров (слово "ядро" не употребялось еще). В то время высокотехнологичные костыли в виде JIT'ов не достигли таких высот, как сейчас.
У нас предполагалось что-то типа регистровой машины с тэговой архитектурой (данные сопровождаются типом, операция частично определяется типами операндов) изначальной ориентированной на использование прекомпилятора. Ну а поверх предполагались объекты, мигрирующие между различной памятью, процессорами/кластерами взависимости от условий и доступности (все это считается средой со свойствами, а объекты стремятся оказаться в среде со свойствами подходящими именно им), capability based системой разграничения доступа, одноуровневой памятью.
Закончились наши исследования вот чем - во-первых, мы уткнулись в проблему драйверов периферии. Во-вторых, чуть позже, Алексей погиб в автокатастрофе. Чем и была поставлена точка (
заметки кое-какие остались). Но поняли мы тогда многое. К примеру, я отчетливо вижу, что в области микропроцессоров, компьютеров и операционных систем с, примерно, 1970-х годов ничего
качественно нового не появилось. Просто, мало кто читает старые книжки. Да и пользователям, видимо, хватает того, что уже придумано. Дима Завалишин вот
пытается обобщить некоторые правильные идеи и реализовать их в одном продукте. Если удастся - должна хорошая вещь получиться.
...
А
страничка неплохая - приятно видеть, что народ полезным делом занимается.