Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все ответы.doc
Скачиваний:
18
Добавлен:
09.09.2019
Размер:
3.79 Mб
Скачать

17 . Оболочка.

Операционная система представляет собой программу, выполняющую системные вызовы. Командный интерпретатор UNIX называется оболочкой. Хотя она не входит в операционную систему, но во всю используется многими ее функциями. Оболочка представляет основной интерфейс между пользователем и операционной системой.

Существует множество оболочек, например, sh, csh, ksh, bash, но все они произошли от первоначальной оболочки (sh). Когда пользователь входит в систему, запускается оболочка. Стандартным входным и выходным устройством для оболочки является терминал (монитор с клавиатурой).Оболочка начинает работу с печати приглашения , знак доллара, говорящего пользователю, что оболочка ожидает ввода команды. Например, если теперь пользователь напечатает

$ date,

Оболочка создаст дочерний процесс и запустит программу date. Пока дочерний процесс работает, оболочка ожидает его завершение. После завершения дочернего процесса оболочка опять печатает приглашение и пытается прочесть следующую входную строку. Пользователь может перенаправить стандартный вывод данных в файл: $ date > file.

В общем случае, различают оболочки с двумя типами интерфейса для взаимодействия с пользователем: интерфейс командной строки (CLI) и графический пользовательский интерфейс (GUI

Интерфейс командной строки.Для обеспечения интерфейса командной строки в ОС часто используются командные интерпретаторы, которые могут представлять собой самостоятельные языки программирования, с собственным синтаксисом и отличительными функциональными возможностями.

Как правило, при низкоуровневой настройке ОС у пользователя есть возможность менять командный интерпретатор, используемый по умолчанию.

Графические оболочки для OC Windows Последних версиях ОС Windows используются в качестве своей оболочки интегрированную среду Проводника Windows. Проводник Windows представляет собой визуальную среду управления включающую в себя Рабочий стол, Меню пуск, Панель задач, а также функции управления файлами. Ранние версии ОС Windows 3.xx в качестве графической оболочки включают менеджер программ.

Многие сторонние разработчики предлагают альтернативные среды, которые могут быть использованы вместо оболочки проводника, включенной по умолчанию компанией Microsoft в систему Windows.

18. Системный вызов

Интерфейс между операционной системой и программами пользователя определяется набором системных вызовов, предоставляемой системой. У большинства современных операционных систем есть системные вызовы, выполняющие одни и те же функции , хотя их реализация может быть различна. Фактический механизм обращения к системным функциям является в высокой степени машинно-зависимым и часто должен реализовываться на ассемблере, но существуют библиотеки процедур, делающие возможным обращение к системным процедурам из программ на С и других языках программирования.

Любой компьютер с одни процессором в каждый момент времени может выполнять только одну команду. Если процесс выполняет программу пользователя в пользовательском режиме и нуждается в системной службе, например, чтение данных из файла, он должен выполнить прерывание или команду системного вызова для передачи управления операционной системе. Затем операционная система по параметрам вызова определяет, что требуется вызывающему процессу. После этого она обрабатывает системный вызов и возвращает управление команде, следующей за системным вызовом.

Рассмотрим системный вызов read.У этого вызова есть три параметра: 1) задание файла; 2) указание буфера; 3) количество байтов, которое необходимо прочитать. Как практически все системные вызовы, он запускается из программы на С с помощью вызова библиотечной процедуры с тем же именем, что и системный вызов. Вызов из программы на С может выглядеть следующим образом: count=read(fd, &buffer, nbytes);

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

Системные вызовы выполняются за серию шагов: 1) передача nbytes в стек; 2) передача &buffer в стек; 3) передача fd в стек; 4) вызов библиотечной процедуры ; 5) передача кода для чтения в регистр; 6) переключение из пользовательского режима в режим ядра; 7) запускается программа ядра проверяет номер системного вызова и затем отправляет его нужному обработчику, используя таблицу указателей на обработчик системных вызовов, индексированную по номерам вызовов; 8) в этом месте начинает функционировать обработчик системных вызовов; 9) как только он завершает свою работу, управление может возвращается в пространство пользователя к библиотечной процедуре, к команде, следующей за командой TRAP ; 10) Эта процедура в свою очередь передает управление программе пользователя обычным способом , которым производится возврат из вызванной процедуры; 11) Чтобы закончить работу, программа пользователя должна очистить стек, как это делается и после каждого вызова процедуры. Учитывая, что стек растет вниз , последняя команда увеличивает указатель стека ровно на столько, насколько нужно для удаления параметров, помещенных в стек перед запросом read. Теперь программа может продолжать свою работу.