Подразделение Microsoft Research всегда поражало меня своими инновациями и разработками. Достаточно вспомнить Microsoft Surface, Microsoft Photosynth, MySong и т. д. Не так давно Robert Scoble пускал слезу, от того, что ему показали в MSR.
Однако же одной из самых последних и самых обсуждаемых новостей от MSR является открытие исходного кода легендарной операционной системы Singularity, на 90% состоящей из managed кода.
К своему удивлению, я нередко читаю/слышу высказывания, что вскоре Singularity заменит Windows. На это мне хотелось бы процитировать Rich Rashid, Microsoft’s Senior Vice President of Research:
“Singularity is not the next Windows. Think of it like a concept car. It is a prototype operating system designed from the ground up to test-drive a new paradigm for how operating systems and applications interact with one another.”
Т.е. Singularity — это прототип, на котором Microsoft “обкатывает” новые идеи и подходы, часть из которых в дальнейшем может быть использована в следующих версиях Windows.
Каждая операционная система содержит в себе некоторые проектные решения (design decisions). Эти решения включают в себя выбор языка разработки, модель защиты программ, модель безопасности, системные абстракции и т. д. Современные ОС — будь то Windows, Linux, Mac OS X или BSD — разделяют очень многие проектные решения. И это неудивительно, т.к. все они берут начало в 60-70 годах, когда процессорное время было дорогим, а компьютеры были доступны очень узкому кругу людей. И эти решения приходилось вырабатывать, руководствуясь доступными на тот момент языками программирования, системами разработки и т. д. Но с тех пор изменилось очень многое. И далеко не все проектные решения прошли проверку временем и актуальны по сей день. Поэтому авторы Singularity задались вопросом: “А как будет выглядеть операционная система, если начать ее проектировать “с нуля”, а главной целью поставить надежность ОС?”
Singularity — это микроядерная ОС, написанная на Sing#, которая содержит в себе три ключевые архитектурные идеи: software-isolated processes (SIPs), contract-based channels и manifest-based programs. SIPs в некотором смысле похожи на процессы в существующих операционных системах. Основные отличия, которые я заметил, это единое для всех SIPs адресное пространство (которое, естественно, не перекрывается для разных SIPs) и отсутствие shared memory. Кроме того, SIP не может изменять свой код в run-time. Все это дает возможность для статической проверки кода и изоляции SIPs на уровне software, а не hardware, что существенно “дешевле”. Таким образом, каждый SIP выполняется полностью автономно — у него есть свой runtime и свой garbage collector. Все взаимодействие между SIPs осуществляется с помощью contract-based channels. Благодаря этим каналам взаимодействие между SIPs поддается более простому и эффективному анализу. Третья составляющая Singularity — Manifest-Based Programs. В Singularity каждая программа должна снабжаться манифестом, который описывает code resources, необходимые системные требования и зависимости от других программ. В процессе установки MBP манифест служит для проверки того, что код MBP соответствует требованиям безопасности, а система удовлетворяет всем потребностям MBP.
Более подробно о Singularity можно почитать в статье “Singularity: Rethinking the Software Stack” (откуда я и передрал технические подробности выше). Также советую посмотреть интересное видео с разработчиками Singularity:





