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

Автор: Пользователь скрыл имя, 10 Января 2013 в 15:28, контрольная работа

Описание работы

Вопрос 1. Что такое ОС
•Операционная система как виртуальная машина
•Операционная система как менеджер ресурсов
Операционная система (ОС) – это программа (комплекс программ), которая обеспечивает возможность рационального использования оборудования компьютера удобным для пользователя образом

Работа содержит 1 файл

Osso_Otvety.doc

— 519.00 Кб (Скачать)

 

Вопрос 6. Классификация ОС

-Реализация многозадачности

-Поддержка многопользовательского режима

-ОС мейнфреймов и серверов

-ОС мобильных устройств и ПК

-Многопроцессорная обработка

-Системы реального времени

 

 

Реализация многозадачности

два класса:

-многозадачные (Unix, OS/2, Windows);

-однозадачные (например, MS-DOS).

Многозадачная ОС - решает проблемы распределения ресурсов и конкуренции.

Многозадачный режим, который  воплощает в себе идею разделения времени, называется вытесняющим. Каждой программе выделяется квант процессорного времени, по истечении которого управление передается другой программе. Говорят, что первая программа будет вытеснена.

В некоторых ОС (Windows 3.11) пользовательская программа может монополизировать процессор, то есть работать в не вытесняющем режиме. Как правило, в большинстве систем не подлежит вытеснению код собственно ОС. Ответственные программы, в частности задачи реального времени, также не вытесняются.

Поддержка многопользовательского режима

По числу  одновременно работающих пользователей ОС можно разделить на:

-однопользовательские (MS-DOS, Windows 3.x);

-многопользовательские (Windows NT, Unix).

Наиболее существенное отличие между этими ОС заключается в наличии у многопользовательских систем механизмов защиты персональных данных каждого пользователя.

ОС мейнфреймов и серверов

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() создает новое адресное пространство, которое полностью  идентично адресному пространству основного процесса. После выполнения этого системного вызова мы получаем два абсолютно одинаковых процесса - основной и порожденный. Функция fork() возвращает 0 в порожденном процессе и PID (Process ID - идентификатор порожденного процесса) - в основном. PID - это целое число.

Теперь, когда мы уже создали  процесс, мы можем запустить программу с помощью вызова 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. Операции над процессами и связанные с ними понятия

- Состязательная  ситуация

- Критическая  секция

Операции над  процессами удобно объединить их в  три пары:

  • создание процесса – завершение процесса ;
  • приостановка процесса (перевод из состояния исполнение в состояние готовность ) – запуск процесса (перевод из состояния готовность в состояние исполнение );
  • блокирование процесса (перевод из состояния исполнение в состояние ожидание ) – разблокирование процесса (перевод из состояния ожидание в состояние готовность ).

Операции создания и завершения процесса являются одноразовыми, так как применяются к процессу не более одного раза (некоторые системные процессы при работе вычислительной системы не завершаются никогда). Все остальные операции, связанные с изменением состояния процессов, будь то запуск или блокировка, как правило, являются многоразовыми.

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

  1. Два процесса не должны одновременно находиться в критических областях.
  2. В программе не должно быть предположений о скорости или количестве процессоров.
  3. Процесс, находящийся вне критической области, не может блокировать другие процессы.

Невозможна  ситуация, в которой процесс вечно  ждет попадания в критическую область.

 

Вопрос 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 В отличие от запрета прерываний запрет доступа к шине данных позволяет заблокировать все процессы на всех процессах.

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