Структура и сложность операционных систем существенно изменяется по мере развития, как самих операционных систем, так и аппаратного обеспечения [2]. Операционная система CTSS, разработанная в Массачусетском технологическом институте (МТИ) в 1963 году занимала в памяти около 36 тысяч 36-разрядных слов. OS/360, разработанная фирмой IBM через год, содержала уже более миллиона машинных команд. Система Multics, совместно разработанная специалистами МТИ и Bell Laboratories в 1975 году содержала уже около 20 миллионов команд.
Увеличение размера и сложности операционных систем привело к возникновению трех распространенных проблем:
- операционные системы доходят до пользователя с существенным опозданием,
- в системах присутствуют скрытые ошибки, требующие исправления,
- рост производительности операционных систем не так велик, как хотелось бы.
Пути решения эти проблем, вообще говоря, достаточно очевидны:
- система должна состоять из модулей – это упрощает ее написание и отладку,
- модули должны иметь тщательно разработанные и максимально простые интерфейсы – это также облегчает написание и отладку, а также внесение изменений в систему.
Несмотря на очевидность такого решения, оказалось, что для сложных систем, состоящих и миллионов и более строк, оно не избавляет от всех проблем.
Структура операционной системы во многом зависит от того, к какому из типов она относится. Типов операционных систем можно выделить много, однако по большому счету можно выделить следующие:
- микроядерные,
- монолитные,
- многоуровневые,
- виртуальные машины,
- экзоядро,
- модель клиент-сервер.