Контрольная работа по "Информатике". 7. 2
Вопрос 1. Что такое ОС
- Операционная система как виртуальная машина
- Операционная система как менеджер ресурсов
Операционная система (ОС) – это программа (комплекс программ), которая обеспечивает возможность рационального использования оборудования компьютера удобным для пользователя образом
1-ОС предоставляет удобный интерфейс пользователю не заставляя его вникать в подробности аппаратного обеспечения
2-менеджер ресурсов, распределение
ресурсов между процессами ОС-
Вопрос 2. Краткая история эволюции вычислительных систем
- Первый период (1945–1955 гг.). Ламповые машины. Операционных систем нет
- Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
- Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ОС
- Четвертый период (с 1980 г. по настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы
1- Программирование
осуществлялось на машинном
Крайне высокая
стоимость вычислительных систем, незначительное
их количество, низкая надежность и
малая эффективность
2- Появление
новой элементной базы –
Появились первые системы пакетной обработки, которые автоматизировали запуск программ из пакета, тем самым увеличили коэффициент загрузки процессора. Системы пакетной обработки стали прообразом современных операционных систем, они были первыми системными программами, предназначенными для управления вычислительным процессом.
3- Появление и широкое использование интегральных микросхем привело к повышению надежности и снижению стоимости ЭВМ. Повышается производительность процессоров, растет сложность и увеличивается количество решаемых задач. Разрабатываются первые многозадачные ОС с применением аппарата прерываний.
Появление магнитного диска как устройства прямого доступа привело к дальнейшему развитию вычислительных систем. Пакетные системы начинают заниматься планированием заданий: в зависимости от наличия запрошенных ресурсов, срочности вычислений и т.д. на выполнение выбирается то или иное задание. С целью дальнейшего повышения эффективности использования процессора было предложено мультипрограммирование. Мультипрограммирование требует наличия в памяти нескольких программ одновременно. При этом каждая программа загружается в свой участок оперативной памяти, называемый разделом, и не должна влиять на выполнение другой программы. Поэтому данный механизм существенно повлиял на развитие аппаратной поддержки вычислительных систем:
1965 – 80 ОС Multics, UNIX, System V, BSD, стандарт POSIX
4- С появление больших интегральных схем (БИС) произошло резкое возрастание степени интеграции и существенное снижение стоимости микросхем. Наступила эра персональных компьютеров. Компьютеры стали использоваться не только специалистами, но и людьми, весьма «далекими» от информатики и программирования, что потребовало разработки "дружественного" программного обеспечения.
Рост сложности и разнообразия задач, решаемых на персональных компьютерах, необходимость повышения надежности их работы привели к реализации практически всех черт, характерных для архитектуры больших ЭВМ.
1980 Intel 8086, IBM PC, IBM SYSTEM(p,z,x), Solaris, Oracle
Вопрос 3. Аппаратное обеспечение компьютера
MMU – Memory Management Unit – блок управление памятью
ЦП компьютера копирует команды из памяти, декодирует их в машинный код, исполняет декодирование команды на арифметичко логическом устройстве, осуществляет обратное декодирование и копирует результат обратно в память.
Вопрос 4. Основные понятия, концепции ОС
- Системные вызовы
- Прерывания
- Файлы
- Процессы, потоки
- Оболочка
- Адресное пространство
Основные понятия, концепции ОС
В процессе эволюции возникло несколько важных концепций, которые стали неотъемлемой частью теории и практики ОС.
Системные вызовы
В любой операционной системе
Системные вызовы (system calls) – это
интерфейс между операционной системой
и пользовательской программой. Они создают,
удаляют и используют различные объекты,
главные из которых – процессы и файлы.
Пользовательская программа
Поэтому системные вызовы иногда
еще называют программными прерываниями,
в отличие от аппаратных прерываний,
Программное прерывание
– это синхронное событие, которое может быть повторено при выполнении одного и того же программного кода.
Прерывание (hardware interrupt) – это
событие, генерируемое внешним(по отношению
к процессору) устройством. Посредством
аппаратных прерываний аппаратура либо
Файлы
Файл – побитовое представление чего либо(изображение, текстовый файл)
Обычно под файлом понимают именованную часть
пространства на носителе информации.
Главная задача файловой системы (file system) – скрыть
особенности ввода-вывода и дать программисту
простую абстрактную модель файлов, независимых
от устройств. Для чтения, создания, удаления,
записи, открытия и закрытия файлов также
имеется обширная категория системных
вызовов (со-здание, удаление, открытие,
закрытие, чтение и т.д.). Пользователям
хорошо знакомы такие связанные с организацией
файловой системы понятия, как каталог, текущий
каталог, корневой каталог,
Процесс
Процесс – это программы во время ее выполнения.
У каждого процесса ОС есть свое адресное пространство, т.е. адреса ячеек памяти которым обладает запущенная программа. Вся информация о процессах в ОС храниться в виде отдельной таблицы, которая называется таблицей процессов.
Поток - это последовательность или цикл управления в процессе.
Важно понять разницу между системным вызовом fork и созданием новых потоков. Когда процесс выполняет системный вызов fork, создается новая копия процесса с ее собственными переменными и собственным PID. Время выполнения этого нового процесса планируется независимо и выполняется он (в основном) независимо от создавшего его процесса. Когда мы создаем в процессе новый поток, этот поток исполнения в противоположность новому процессу получает собственный стек (и, следовательно, локальные переменные), но использует совместно с создавшим его процессом глобальные переменные, файловые дескрипторы, обработчики сигналов и положение текущего каталога.
Оболочка
Оболочка- взаимодействие пользователя
с компьютером посредствам
Если оболочка содержит графич. Знаки это графический интерфейс пользователя GUI.
Адресное пространство
Адресное пространство — это просто диапазон адресов, обозначающих определенное место в памяти. Адресные пространства подразделяются на три разновидности:
-Физическое адресное пространство
-Линейное адресное пространство
-Логическое адресное пространство, известное также как виртуальное адресное пространство
Физические адреса — это реальные, аппаратные адреса, доступные в системе.
В противоположность этому, линейные адреса обычно не рассматриваются как адреса, находящиеся на страницах. Процессор (на самом деле модуль управления памятью, рассматриваемый ниже) преобразует логические адреса, используемые процессом, в линейные адреса с применением способа, зависящего от архитектуры. В архитектуре х86 это преобразование предусматривает простое сложение виртуального адреса с другим адресом — базовым адресом сегмента процесса; поскольку этот базовый адрес устанавливается равным 0 для любой задачи, логические адреса и линейные адреса в этой архитектуре одинаковы. Затем результирующий линейный адрес преобразуется в физический адрес для взаимодействия с оперативной памятью системы.
Вопрос 5. Архитектурные особенности ОС
- Монолитное ядро
- Многоуровневые системы (Layered systems)
- Виртуальные машины
- Микроядерная архитектура
- Клиент-серверная модель
- Смешанные системы
Монолитное ядро – это такая схема операционной системы, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Для монолитной операционной системы ядро совпадает со всей системой.
Многоуровневые системы (Layered systems) - Нижним уровнем в таких системах обычно является hardware, верхним уровнем – интерфейс пользователя. Чем ниже уровень, тем более привилегированные команды и действия может выполнять модуль, находящийся на этом уровне. Впервые такой подход был применен при создании системы THE (Technishe Hogeschool Eindhoven) Дейкстрой (Dijkstra) и его студентами в 1968 г. Эта система имела следующие уровни:
5 |
Интерфейс пользователя |
4 |
Управление вводом выводом |
3 |
Драйвер устройств оператора связи и консоли |
2 |
Управление памятью |
1 |
Планирование задач и процессов |
0 |
Hardware |
Виртуальная
машина - программная и/или аппаратная
система, эмулирующая
Микроядерная архитектура (microkernel architecture) операционной системы, когда большинство ее составляющих являются самостоятельными программами. В этом случае взаимодействие между ними обеспечивает специальный модуль ядра, называемый микроядром. Микроядро работает в привилегированном режиме и обеспечивает взаимодействие между программами, планирование использования процессора, первичную обработку прерываний, операции ввода-вывода и базовое управление памятью.
Клиент-серверная
модель - в базовой модели клиент-сервер
все процессы в распределенных системах
делятся на две возможно перекрывающиеся
группы. Процессы, реализующие некоторую
службу, например службу файловой системы
или базы данных, называются серверами (servers). Процессы, запрашивающие службы
у серверов путем посылки запроса и последующего
ожидания ответа от сервера, называются клиентами(clients).
Смешанные системы - ядро операционной системы Linux представляет собой монолитную систему с элементами микроядерной архитектуры. При компиляции ядра можно разрешить динамическую загрузку и выгрузку очень многих компонентов ядра – так называемых модулей. В момент загрузки модуля его код загружается на уровне системы и связывается с остальной частью ядра. Внутри модуля могут использоваться любые экспортируемые ядром функции.
Вопрос 6. Классификация ОС
-Реализация многозадачности
-Поддержка многопользовательского режима
-ОС мейнфреймов и серверов
-ОС мобильных устройств и ПК
-Многопроцессорная обработка
-Системы реального времени
Реализация многозадачности
два класса:
-многозадачные (Unix, OS/2, Windows);
-однозадачные (например, MS-DOS).
Многозадачная ОС - решает проблемы распределения ресурсов и конкуренции.
Многозадачный режим, который воплощает в себе идею разделения времени, называется вытесняющим. Каждой программе выделяется квант процессорного времени, по истечении которого управление передается другой программе. Говорят, что первая программа будет вытеснена.
В некоторых ОС (Windows 3.11) пользовательская программа может монополизировать процессор, то есть работать в не вытесняющем режиме. Как правило, в большинстве систем не подлежит вытеснению код собственно ОС. Ответственные программы, в частности задачи реального времени, также не вытесняются.
Поддержка многопользовательского режима
По числу одновременно работающих пользователей ОС можно разделить на:
-однопользовательские (MS-DOS, Windows 3.x);
-многопользовательские (
Наиболее существенное
отличие между этими ОС
ОС мейнфреймов и серверов
Linux Debian, Ubuntu Server, Windows Server
ОС мобильных устройств и ПК
PalmOS, Maemo, Android, Windows Mobile
Многопроцессорная обработка
Solaris 2.x, Open Server 3.x, OS/2, Windows NT/2000/XP , NetWare 4.1 и старше.
Системы реального времени
QNX.
-cистемы жесткого DB
-системы мягкого PB
Вопрос 7. Системные вызовы
-управление процессами
-управление файлами и каталогами
-остальные
Системный вызов – интерфейс программ с ОС в виде вызовов процедур, методов или макросов, являющихся частью ОС. Способы передачи параметров системному вызову: через регистр, через таблицу, адрес которой в регистре, или через стек. Системные вызовы выполняют управление процессами, файлами, устройствами, выдают сопровождающую информацию, осуществляют коммуникации.
Управление процессами
Для создания процессов
используются два системных вызова:
fork() и exec. fork() создает новое адресное
пространство, которое полностью
идентично адресному
Теперь, когда мы уже создали процесс, мы можем запустить программу с помощью вызова exec. Параметрами функции exec является имя выполняемого файла и, если нужно, параметры, которые будут переданы этой программе. В адресное пространство порожденного с помощью fork() процесса будет загружена новая программа и ее выполнение начнется с точки входа (адрес функции main).
Управление файлами и каталогами
Потоковая передача информации может осуществляться не только между процессами, но и между процессом и устройством ввода-вывода, например между процессом и диском, на котором данные представляются в виде файла.
функции работы с файлами из стандартной библиотеки ввода-вывода, такие как fopen(), fread(), fwrite(), fprintf(), fscanf(), fgets() и т.д. Эти функции входят как неотъемлемая часть в стандарт ANSI на язык C и позволяют программисту получать информацию из файла или записывать ее в файл при условии, что программист обладает определенными знаниями о содержимом передаваемых данных.
Вопрос 8. Процессы
- Создание и завершение процесса
- Демоны
- Иерархия процессов
- Состояния процесса
- Модель многозадачного режима
процесс это – совокупность программного кода и данных, загруженных в память ЭВМ. На первый взгляд процесс – это запущенная программа (приложение) или команда. Но это не совсем так. Некоторые приложения могут создавать несколько процессов одновременно.
Создание процесса происходит
по следующим причинам:
1) при инициализации ОС;
2) если процесс вызывает системный вызов
создания процесса;
3) если пользователь запускает процесс.
Фоновые процессы работают без взаимодействия
с пользователем. Большую часть времени
они спят и просыпаются только тогда, когда
поступает запрос от пользователя. Фоновый
процесс обрабатывает этот запрос и снова
засыпает. Такие процессы называются демонами.
Понятие демон было взято от демона Максвела,
он объяснял студентам второе начало термодинамики,
говоря что все порождается некоторыми
силами, которые он назвал демонами.
Единственным способом создания процесса
в ОС Unix является системный вызов fork(),
он создает точную копию родительского
процесса, а так же точную копию адресного
пространства родительского процесса
(образа памяти).
Процессы завершаются по следующим причинам:
1) добровольное завершение: системный
вызов exit или действие пользователя в
графическом режиме вызывающее выход;
2) возникновение ошибки:
$gcc main.c
Нет файла main.c
$
3) возникновение фатальной ошибки: ошибка
содержится в самой программе.
4) принудительное завершение процесса.
Процесс бывает в следующих состояниях:
1. Выполнение: когда процесс выполняется
ЦП;
2. Готовность: когда процесс готов к выполнению,
но ЦП занят другим процессом;
3. Блокировка: когда процесс ожидает происшествия
каких-то внешних событий.
например, ввода данных, команд.Процессы, не привязанные к какому-то конкретному терминалу называются “демонами” (daemons). Такие процессы, будучи запущенными пользователем, не завершают свою работу по окончании сеанса, а продолжают работать, так как они не связаны никак с текущим сеансом и не могут быть автоматически завершены. Как правило, с помощью демонов реализуются серверные службы, так например сервер печати реализован процессом-демоном cupsd, а сервер журналирования – syslogd.
Вопрос 9. Потоки
- Классическая модель потока
- Потоки в POSIX
- Потоки в режиме пользователя и ядра
Понятие потока
Каждому процессу соответствует адресное пространство и одиночный поток исполняемых команд. В многопользовательских системах, при каждом обращении к одному и тому же сервису, приходится создавать новый процесс для обслуживания клиента. Это менее выгодно, чем создать квазипараллельный поток внутри этого процесса с одним адресным пространством.
Модель потока
С каждым потоком связывается:
- Счетчик выполнения команд
- Регистры для текущих переменных
- Стек
- Состояние
Потоки делят между собой элементы своего процесса:
- Адресное пространство
- Глобальные переменные
- Открытые файлы
- Таймеры
- Семафоры
- Статистическую информацию.
В остальном модель идентична модели процессов.
В POSIX и Windows есть поддержка потоков на уровне ядра.
Преимущества использования
-Упрощение программы в некоторых случаях, за счет использования общего адресного пространства.
-Быстрота создания потока, по сравнению с процессом, примерно в 100 раз.
Повышение производительности самой программы, т.к. есть возможность одновременно выполнять вычисления на процессоре и операцию ввода/вывода.
Потоки в POSIX
Все потоки Pthreads имеют
определенные свойства. У каждого
потока есть свой идентификатор, набор
регистров (включая счетчик команд) и набор атрибутов, которые сохраняются
в определенной структуре. Атрибуты включают
размер стека, параметры планирования
и другие элементы, необходимые при использовании
потока.
Новый поток создается
с помощью вызова функции pthread_create.
В качестве значения функции возвращается
идентификатор только что созданного
потока. Этот вызов намеренно сделан очень
похожим на системный вызов fork, а идентификатор
потока играет роль PID, главным образом
для идентификации ссылок на потоки в
других вызовах.
Когда поток заканчивает возложенную
на него работу, он может быть завершен
путем вызова функции pthread_exit. Этот
вызов останавливает поток и освобождает
пространство, занимавшееся его стеком.
Зачастую потоку необходимо перед продолжением
выполнения ожидать окончания работы
и выхода из другого потока. Ожидающий поток вызывает
функцию pthread Join, чтобы ждать завершения
другого указанного потока. В качестве
параметра этой функции передается идентификатор
потока, чьего завершения следует ожидать.
Иногда бывает так, что поток не является
логически заблокированным, но считает,
что он проработал достаточно долго, и намеревается дать шанс
на выполнение другому потоку. Этой
цели он может добиться за счет вызова функции
pthread_yield.
Реализация потоков в
А - потоки в пространстве пользователя
B - потоки в пространстве ядра
В случае А ядро о потоках ничего не знает. Каждому процессу необходима таблица потоков, аналогичная таблице процессов.
Преимущества случая А:
- Такую многопоточность можно реализовать на ядре не поддерживающим многопоточность
- Более быстрое переключение, создание и завершение потоков
- Процесс может иметь собственный алгоритм планирования.
Недостатки случая А:
- Отсутствие прерывания по таймеру внутри одного процесса
- При использовании блокирующего (процесс переводится в режим ожидания, например: чтение с клавиатуры, а данные не поступают) системного запроса все остальные потоки блокируются.
- Сложность реализации
Вопрос 10. Операции над процессами и связанные с ними понятия
- Состязательная ситуация
- Критическая секция
Операции над процессами удобно объединить их в три пары:
- создание процесса – завершение процесса ;
- приостановка процесса (перевод из состояния исполнение в сост
ояние готовность ) – запуск процесса (перевод из состояния готовность в состоян ие исполнение ); - блокирование процесса (перевод из состояния исполнение в сост
ояние ожидание ) – разблокирование процесса (перевод из состояния ожидание в состоя ние готовность ).
Операции создания и завершения процесса являются одноразовыми, так как применяются к процессу не более одного раза (некоторые системные процессы при работе вычислительной системы не завершаются никогда). Все остальные операции, связанные с изменением состояния процессов, будь то запуск или блокировка, как правило, являются многоразовыми.
Критическая секция — часть программы, в которой есть обращение к совместно используемым данным. При нахождении в критической секции двух (или более) процессов, возникает состояние «гонки» («состязания»). Для избежания данной ситуации необходимо выполнение четырех условий:
- Два процесса не должны одновременно находиться в критических областях.
- В программе не должно быть предположений о скорости или количестве процессоров.
- Процесс, находящийся вне критической области, не может блокировать другие процессы.
Невозможна ситуация, в которой процесс вечно ждет попадания в критическую область.
Вопрос 11. Взаимное исключение с активным ожиданием
- Запрет на прерывание
- Блокирующие переменные
- Строгое чередование
- Алгоритм Петерсона
- Команда TSL
Запрет на прерывание - Самое простое решение состоит в запрете всех прерываний при входе процесса в критическую область и разрешение прерываний по выходу из нее. Если прерывания запрещены, невозможно прерывание по таймеру. Отключение прерываний исключает передачу процессора другому процессу. Таким образом, запретив прерывания, процесс может спокойно считывать и сохранять совместно используемые данные, не опасаясь вмешательства конкурентов.
Блокирующие переменные – перед входом в критическую секцию создается переменная флаг которая указывает занята критическая секция или нет(0 или 1). Недостатками такого подхода является ситуация когда один процесс считает значение 0 и изменит его на 1, параллельно другой процесс так же считает 0 и изменит его на 1, в результате для обоих процессов критическая секция будет заблокирована.
Строгое чередование
While(true){
While(turn!=0)
Critical_region(); //Функция входа в критич. секцию
Turn=1; //определяет какому процессу входить в критич. секцию
Noncritical_region(); //Функция выхода из критич. секции
}
While(true){
While(turn!=0)
Critical_region();
Turn=0;
Noncritical_region();
}
Недостатками такого подхода является такая ситуация когда одновременно идет обращение двух процессов к критич. секции.
В этом случае переменная Turn может быть одновременно равна либо 1 либо для обоих случаев. Это приведет к невозможности доступа к критич. секции.
Алгоритм Петерсона
Алгоритм Петерсона, представленный в листинге 2.1, состоит из двух процедур, написанных на ANSI С, что предполагает необходимость прототипов для всех определяемых и используемых функций.
Решение Петерсона для взаимного исключения
#define FALSE О
#define TRUE 1
idefine N 2 /* Количество процессов */
int turn: /* Чья сейчас очередь? */
int interested[N]; /* Все переменные изначально равны О (FALSE) */
void enter region(int process): /* Процесс О или 1 */
int other; /* Номер второго процесса */
other = 1 - process: /* противоположный процесс */
interested[process] = TRUE: /* Индикатор интереса */
turn = process: /* Установка флага */
while (turn == process && interested[other] == TRUE) /* Пустой цикл */:
void leave region(int process) /* Процесс, покидающий критическую область */
interestedCprocess] = FALSE:
/* Индикатор выхода из
Команда TSL(Test and send Lock) с помощью этой команды можно запретить доступ к шине данных. Формат команды: TSL REGISTER, Lock В отличие от запрета прерываний запрет доступа к шине данных позволяет заблокировать все процессы на всех процессах.

- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"
- Контрольная работа по "Информатике"