
- •2. Операционная система как расширенная машина
- •3. Операционная система как менеджер ресурсов
- •4. Обзор современных ос Операционные системы мэйнфреймов
- •Серверные операционные системы
- •Операционные системы для персональных компьютеров
- •Операционные системы реального времени
- •Встроенные операционные системы
- •Операционные системы для смарт-карт
- •5. Аппаратный состав персонального компьютера
- •6. Процессоры
- •7. Память
- •8. Устройства ввода-вывода
- •9. Шины
- •10. Понятия операционной системы
- •11. Процессы
- •12. Взаимоболокировка
- •13. Управление памятью.
- •14. Ввод-вывод данных
- •15. Файлы
- •16 Безопасность
- •17 . Оболочка.
- •18. Системный вызов
- •19. Windows Win32 api
- •20. Структура операционной системы
- •21 Монолитные системы
- •22 Многоуровневые системы
- •23. Виртуальные машины.
- •24. Экзоядро.
- •25. Модель клиент-сервис.
- •26. Модель процесса.
- •27 Создание процесса
- •28 Завершение процесса
- •29. Иерархия процессов
- •30. Состояние процессов
- •31. Реализация процессов
- •32. Потоки
- •33. Модель потока.
- •34. Использование потоков.
- •35. Реализация потоков в пространстве пользователя.
- •36. Реализация потоков в пространстве ядра.
- •37 Смешанная реализация
- •38 Активация планировщика
- •39 Всплывающие потоки
- •40 Состояние состязания
- •41. Критические области
- •42. Взаимное исключение с активным ожиданием
- •43. Примитивы межпроцессного взаимодействия
- •Проблема производителя и потребителя
- •44. Семафоры
- •45 Мьютексы
- •46 Монитор
- •47 .Передача сообщений
- •48. Барьеры
- •49. Сокеты
- •50. Планирование
- •52. Планирование в интерактивных системах
- •53. Планирование в системах реального времени
- •54.Политика и мезанизм.
- •57 Условие взаимоблокировки
- •58 Моделирование взаимоблокировок
- •59. Страусовский алгоритм
- •60. Обнаружение и устранение взаимоблокировок и обнаружение взаимоблокировки при наличии одного ресурса каждого типа
- •61. Обнаружение взаимоблокировок при наличии нескольких ресурсов каждого типа
- •1)Восстановление при помощи принудительной выгрузки ресурса
- •2) Восстановление путем уничтожения процессов
- •63. Избежание взаимоблокировок
- •64 Алгоритм банкира
- •65 Алгоритм банкира для несколько видов ресурсов
- •66. Предотвращение взаимоблокировок
- •67 Двухфазовое блокирование, тупики без ресурсов и голодание
- •68 Программный ввод-вывод
- •69: Управляемый прерываниями ввод-вывод
- •70: Ввод-вывод с использованием dma(Direct Memory Access).
- •71. Программные уровни ввода-вывода
- •72. Обработчики прерываний
- •73. Драйверы устройств
- •74. Аппаратная часть таймеров
- •75 Программное обеспечение таймеров
- •76 Мягкие таймеры
- •77. Транслятор
- •78. Компилятор
- •79 Понятие прохода. Многопроходный и однопроходные компиляторы
- •80 Интерпретаторы. Особенности построения интерпретаторов
- •81. Трансляторы с языка ассемблера („ассемблеры“ )
- •82.Макроопределения и макрокоманды
- •83. Отладчики
- •84. Компоновщик. Его назначение и функции
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. Теперь программа может продолжать свою работу.