Cтраница 2
Однако даже такие монолитные системы могут иметь некоторую структуру. При обращении к системным вызовам, поддерживаемым операционной системой, параметры помещаются в строго определенные места - регистры или стек, после чего выполняется специальная команда прерывания, известная как вызов ядра или вызов супервизора. Эта команда переключает машину из режима пользователя в режим ядра и передает управление операционной системе, что видно на шаге 6 рис. 1.17. Затем операционная система проверяет параметры вызова, чтобы определить, какой системный вызов должен быть выполнен. После этого операционная система обращается к таблице как к массиву с номером системного вызова в качестве индекса. [16]
![]() |
Простая модель монолитной системы. [17] |
Однако даже такие монолитные системы могут иметь некоторую структуру. При обращении к системным вызовам, поддерживаемым операционной системой, параметры помещаются в строго определенные места - регистры или стек, после чего выполняется специальная команда прерывания, известная как вызов ядра или вызов супервизора. Эта команда переключает машину из режима пользователя в режим ядра и передает управление операционной системе, что видно на шаге б рис. 1.17. Затем операционная система проверяет параметры вызова, чтобы определить, какой системный вызов должен быть выполнен. После этого операционная система обращается к таблице как к массиву с номером системного вызова в качестве индекса. [18]
Операнд макрокоманды ожидания ссылается явно или неявно на блок управления событиями ЕСВ, занимающий в задаче одно слово. В момент выполнения макрокоманды WAIT операционная система занесет в 0 - й разряд блока ЕСВ единицу - признак ожидания, свидетельствующий о том, что еще не завершена программа канала, связанная с данным блоком ЕСВ. Затем операционная система переключится на выполнение других работ, а в момент окончания обмена сбросит бит ожидания, перенесет в старший байт ЕСВ код завершения обмена и передаст управление задаче. Код завершения, заносимый в блок ЕСВ, полностью совпадает с кодом ЕСВ, который устанавливается в блоке ЮВ. Единственная разница состоит в том, что заполнением соответствующих байтов в ЮВ и ЕСВ ведают разные программы супервизора и события эти, естественно, происходят в разное время. [19]
Второй подход - использовать аппаратное обеспечение мультикомпьютера и операционную систему, которая моделирует разделенную память, обеспечивая единое виртуальное адресное пространство, разбитое на страницы. Каждая машина содержит свою собственную виртуальную память и собственные таблицы страниц. Если процессор совершает команду LOAD или STORE над страницей, которой у него нет, происходит прерывание операционной системы. Затем операционная система находит нужную страницу и требует, чтобы процессор, который обладает нужной страницей, преобразовал ее в исходную форму и послал по сети межсоединений. Когда страница достигает пункта назначения, она отображается в память, и выполнение прерванной команды возобновляется. По существу, операционная система просто вызывает недостающие страницы не с диска, а из памяти. Но у пользователя создается впечатление, что машина содержит общую разделенную память. DSM мы рассмотрим ниже в этой главе. [20]
Очень полезно всегда помнить следующее. Любой компьютер с одним процессором в каждый конкретный момент времени может выполнить только одну команду. Если процесс выполняет программу пользователя в пользовательском режиме и нуждается в системной службе, например чтении данных из файла, он должен выполнить прерывание или команду системного вызова для передачи управления операционной системе. Затем операционная система по параметрам вызова определяет, что требуется вызывающему процессу. После этого она обрабатывает системный вызов и возвращает управление команде, следующей за системным вызовом. В известном смысле выполнение системного вызова похоже на осуществление вызова процедуры, только первый проникает в ядро, а второй этого не делает. [21]
Если аппаратное обеспечение не поддерживает эти биты, их можно смоделировать следующим образом. Когда процесс запускается, все его записи в таблице страниц помечаются как отсутствующие в памяти. Как только происходит обращение к странице, происходит страничное прерывание. Затем операционная система устанавливает бит R ( в своих внутренних таблицах); изменяет запись в таблице страниц, чтобы она указывала на корректную страницу с режимом READ ONLY ( только для чтения), и перезапускает команду. [22]
Очень полезно всегда помнить следующее. Любой компьютер с одним процессором в каждый конкретный момент времени может выполнить только одну команду. Если процесс выполняет программу пользователя в пользовательском режиме и нуждается в системной службе, например чтении данных из файла, он должен выполнить прерывание или команду системного вызова для передачи управления операционной системе. Затем операционная система по параметрам вызова определяет, что требуется вызывающему процессу. После этого она обрабатывает системный вызов и возвращает управление команде, следующей за системным вызовом. В известном смысле выполнение системного вызова похоже на осуществление вызова процедуры, только первый проникает в ядро, а второй этого не делает. [23]
Сама операционная система может также создавать и использовать объекты, чем она активно занимается. Большинство этих объектов создаются, чтобы позволить одному компоненту системы некоторое время хранить определенную информацию или чтобы передать некоторую структуру данных другому компоненту системы. Например, при загрузке драйвера создается объект, в котором хранятся его свойства и указатели на содержащиеся в нем функции. Затем операционная система обращается к драйверу, используя этот объект. [24]
Если аппаратное обеспечение не поддерживает эти биты, их можно смоделировать следующим образом. Когда процесс запускается, все его записи в таблице страниц помечаются как отсутствующие в памяти. Как только происходит обращение к странице, происходит страничное прерывание. Затем операционная система устанавливает бит R ( в своих внутренних таблицах); изменяет запись в таблице страниц, чтобы она указывала на корректную страницу с режимом READ ONLY ( только для чтения), и перезапускает команду. [25]
Сама операционная система может также создавать и использовать объекты, чем она активно занимается. Большинство этих объектов создаются, чтобы позволить одному компоненту системы некоторое время хранить определенную информацию или чтобы передать некоторую структуру данных другому компоненту системы. Например, при загрузке драйвера создается объект, в котором хранятся его свойства и указатели на содержащиеся в нем функции. Затем операционная система обращается к драйверу, используя этот объект. [26]
Компилятор с кобола знает файлы, относящиеся к сортировке, и будет строить таблицы параметров согласно требованиям интерфейса сортировки и модуля подготовки сортировки. Глагол SORT может устанавливать связь с интерфейсным модулем кобола из библиотеки сортировки или системы, который затем будет использоваться для размещения процедур ввода и вывода в надлежащих позициях выхода. При ином подходе необходим интерфейс с операционной системой. Глагол RELEASE будет передавать записи интерфейсному модулю сортировки, который лишь строит файл сортировки на некотором устройстве. Затем операционная система запрашивается для запуска сортировки. Файл сортировки сортируется так, как будто он был вызван обычным, поддерживаемым операционной системой способом, как подзадача. На первый взгляд это непривлекательный подход, поскольку он требует дополнительного просмотра данных. Однако возможно, что сортировке будет выделено значительно больше памяти, будут сэкономлены просмотры слияния, и, следовательно, сортировка-слияние будет работать быстрее без процедуры ввода. [27]