Современные операционные системы

Современные операционные системы
Что такое операционная система  Виртуальная машина java

Виртуальная машина java

Виртуальные машины используются — правда, несколько иным образом — и в другой области: для запуска программ на языке Java. Когда компания Sun Microsystems изобрела язык программирования Java, она также изобрела и виртуальную машину (то есть архитектуру компьютера), названную JVM (Java Virtual Machine — виртуальная машина Java). Компилятор Java создает код для JVM, который затем обычно выполняется программным интерпретатором JVM. Преимущество такого подхода состоит в том, что код для JVM может доставляться через Интернет на любой компьютер, имеющий JVM-интерпретатор, и запускаться на этом компьютере.

Виртуальная машина java читать полное описание.


Что такое операционная система  Экзоядра

Экзоядра

Вместо клонирования настоящей машины, как это делается в виртуальных машинах, существует иная стратегия, которая заключается в их разделении, иными словами, в предоставлении каждому пользователю подмножества ресурсов. При этом одна виртуальная машина может получить дисковые блоки от 0 до 1023, другая может получить блоки от 1024 до 2047, и т. д.

Самый нижний уровень, работающий в режиме ядра, — это программа под названием экзоядро (Engler et al., 1995). Его задача состоит в распределении ресурсов между виртуальными машинами и затем в отслеживании попыток их использования, чтобы ни одна из машин не пыталась использовать чужие ресурсы. Каждая виртуальная машина может запускать свою собственную операционную систему, как на VM/370 и на Pentium в режиме виртуальных машин 8086, с тем отличием, что каждая машина ограничена использованием тех ресурсов, которые она запросила и которые были ей предоставлены.

Преимущество схемы экзоядра заключается в том, что она исключает уровень отображения.

Экзоядра читать полное описание.


Что такое операционная система  Устройство мира согласно языку с

Устройство мира согласно языку с

Операционные системы, как правило, представляют собой большие программы, написанные на языке С (или иногда на С++), которые состоят из множества фрагментов, написанных разными программистами. Среда, которая используется для разработки операционных систем, существенно отличается от той среды, которая используется отдельными людьми (например, студентами) для написания небольших программ на языке Java. В этом разделе будет предпринята попытка весьма краткого введения в мир написания операционной системы для малоопытных Java-программистов.

Устройство мира согласно языку с читать полное описание.


Что такое операционная система  Большие программные проекты

Большие программные проекты

Для создания операционной системы каждый файл с расширением .с с помощью компилятора С превращается .в объектный файл. Объектные файлы, имеющие имена, заканчивающиеся символами .о (.о-файлы), содержат двоичные инструкции для целевой машины. Позже они будут непосредственно выполняться центральным процессором. В мире С нет ничего подобного байтовому коду Java.

Первый проход компилятора С называется препроцессором С. По мере чтения каждого файла с расширением .с, при каждой встрече директивы #include, он переходит к указанному в этой директиве заголовочному файлу, берет и обрабатывает его содержимое, расширяя макросы и управляя условной компиляцией (и другими определенными вещами), и передает результаты следующему проходу компилятора, как будто они были физически включены в с-файл.

Большие программные проекты читать полное описание.


Что такое операционная система  Модель времени выполнения

Модель времени выполнения

Как только будет выполнена компоновка двоичного файла операционной системы, компьютер может быть перезапущен с загрузкой новой операционной системы. После запуска операционная система может в динамическом режиме подгружать те части, которые не были статически включены в двоичный файл, например драйверы устройств и файловые системы. Во время выполнения операционная система может состоять из множества сегментов: для текста (программного кода), данных и стека. Сегмент текста обычно является постоянным, не изменяясь в процессе выполнения. Сегмент данных с самого начала имеет определенный размер и проинициализирован конкретными значениями, но если потребуется, он может изменять свой размер (обычно разрастаться при необходимости).

Модель времени выполнения читать полное описание.