Введение в операционную систему Unix
Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Тема: Введение в операционную систему Unix
1.История операционной системы Unix
2. Особенности операционной системы Unix
1.История операционной системы Unix
История операционной системы UNIX начинается с 1969 года, когда в рамках научно-исследовательского проекта фирмы Bell Labs концерна AT&T была разработана небольшая операционная система разделения времени общего назначения, оказавшаяся достаточно эффективной. В 1976 году Bell Labs выпустила уже шестую версию этой системы (Sixth Edition), которая была широко известна как V6 и бесплатно распространялась в университетах. Через 3 года была выпущена седьмая версия (Version Seven). Она стала первой версией для широкого распространения (в основном в университетах и научно-исследовательских лабораториях) и послужила основой для большинства последующих версий UNIX.
В 1992 году концерн AT&T продал все структуры, занимающиеся системой UNIX, компании Novell, которая на базе System V разработала систему под названием UnixWare, не получившую большой популярности (В настоящее время система UnixWare продана фирмой Novell фирме Santa Crouze Operation и называется SCO UnixWare).
Операционная система Berkley UNIX была создана в 1977 году, когда Исследовальтельская группа вычислительных систем (Computer Systems Research Group - CSRG) Калифорнийского университета в Беркли приобрела лицензию на исходный код V6 у AT&T. Версии, выпускаемые этой группой, сокращённо назывались BSD (от Berkley Software Distribution). Их выпуск начался начался в 1977 году с версии 1BSD для машины PDP-11 и достиг кульминации в 1993 году, когда вышла версия 4.4BSD. Поскольку BSD построена на базе UNIX варианта AT&T, то для её использования нужна была лицензия AT&T.
В 80-е годы некоторые поставщики рабочих станций начали сами разрабатывать собственные версии UNIX. В настоящее время основным стандартом является разработанная консорциумом X/Open Единая спецификация UNIX, которая получила название Spec 1170 и содержала первоначально приблизительно 1170 интерфейсов прикладных программ (API). Spec 1170 поддерживают все основные производители операционной системы UNIX.
2. Особенности операционной системы Unix
Операционная система UNIX проектировалась как инструментальная система для разработки программного обеспечения. Создание операционной системы преследовало следующие основные цели:
− стремление сохранить простоту и обойтись минимальным количеством функций,
− общность, т.е. одни и те же методы и механизмы должны были использоваться во многих случаях,
− создание операционной среды, в которой большие задачи можно было бы решать, комбинируя существующие небольшие программы, а не разрабатывая программы заново.
Важным является тот факт, что система UNIX предоставляет пользователям возможность направить выход одной программы непосредственно на вход другой (речь идет о программных каналах (pipe). В результате большие программные системы можно создавать путем композиции имеющихся небольших программ, а не путем написания новых, что в большинстве случаев упрощает задачу.
Резедентная в оперативной памяти часть системы называется ядром. На диске ядро оформлено как выполняемый файл, считываемый начальным загрузчиком в оперативной памяти, начиная с нулевого адреса. После загрузки ядро получает управление и в дальнейшем постоянно присутствует в ОП, работая в режиме "Система".
На рисунке 1 показана блок-схема ядра операционной системы UNIX.
Рис.1. Блок-схема ядра операционной системы UNIX
Ядро содержит системные программы, которые выполняют диспетчерские функции, и управляющие структуры данных, используемые этими программами. Все работы, выполняемые вне ядра, оформлены в виде процессов, работающих режиме "Пользователь"
Практически все протоколы, на которых основан Internet, ориентированы под ОС UNIX (TCP/IP).
К основным функциям операционной системы UNIX можно отнести следующее:
− обработка прерываний;
− создание и уничтожение процессов;
− переключение процессов из одного состояния в другое;
− диспетчеризация;
− приостановка и активизация процессов;
− синхронизация процессов;
− организация взаимодействия между процессами;
− манипулирование блоками управления процессами;
− поддержка операции ввода−вывода;
− поддержка операции распределения и перераспределения памяти;
− поддержка работы файловых систем;
− поддержка механизма вызова-возврата по обращению к процедурам;
В структуре можно выделить три основные части:
Самая низкоуровневая часть ОС − специальные средства для управления конкретными аппаратными и программными ресурсами, специфичными для данной конкретной платформы [12, c.88].
Более высокий уровень − уровень конкретных служебных программ и языков программирования. На этом уровне система получает ресурсы через обращение к ядру ОС (т.е. по прерываниям).
Уровень вспомогательных процедур, интерпретаторов, компиляторов. На данной основе строятся пользовательские приложения (текстовые редакторы, графические интерфейсы и собственно приложения).
На рисунке 2 представлена структура ОС UNIX.
Рис.2 Структура ОС UNIX
cpp − компилятор языка Си;
sh − уровень интерпретатора языка Shell;
vi − текстовый редактор;
who − команда для просмотра списка зарегистрированных в системе пользователей и исполнения их программ;
grep − команда, позволяющая искать файлы по их содержимому и другие.
На рисунке 3 представлена блок-схема жизненного цикла процесса в ОС UNIX.
Рис.3 Блок схема жизненного цикла процесса в ОС UNIX
Пояснения к схеме:
1 − процесс выполняет инструкции программы (USER RUNNING);
2 − процесс выполняет системный вызов (KERNEL RUNNING);
3 − процесс готов к выполнению (READY_TO_RUN);
4 − процесс в режиме ожидания и ждет события (ASLEEP_IN_MEMORY);
5 − процесс готов к выполнению, но он находится на внешнем носителе (т.е. выгружен) (READY_TO_ RUN, SWAPPED);
6 − процесс в режиме ожидания и находится на внешнем носителе (SLEEP, SWOPPED);
7 − процесс только что создан (процесс родился) (CREATED);
8 − процесс уничтожен, завершен (ZOMBIE);
9 − процесс прерван по приоритету (PREEMPTED).
Для создания системного процесса используется системный вызов fork (разветвление), в результате которого получаются два идентичных процесса, называемые родительский процесс и порожденный (дочерний) процесс. Они не имеют общей первичной памяти, но совместно используют все открытые файлы. Для уничтожения процесса имеется вызов EXIT, который завершает работу данного процесса и передает код возврата (завершения) родительскому процессу. Сегменты данного процесса уничтожаются. Остается структура пользования для родительского процесса. Когда родительский процесс подучил информацию об уничтожении порожденного им процесса, тогда уничтожается структура пользования и освобождается место в таблице процессов.
Схемы взаимодействия между процессами соответствуют механизму сопрограмм. Использование сопрограмм упрощает логику ядра системы и требует одного выделенного процесса, который создается нестандартным образом. С него начинается работа системы после запуска. В ОС UNIX этот процесс называется "диспетчерским" ("swapper"), он не имеет пользовательской фазы.
Управление процессами осуществляется в ОС UNIX с помощью двух структур.
1. PROC-STRUCTRE (блок управления процессом). Составляющие блока:
− состояние процесса;
− размер и адрес процесса;
− кому принадлежит процесс;
− идентификация процесса;
− канал ожидания;
− поле сигналов;
− таймер и счетчик используемого времени.
2. USER-STRUCTRE (структура использования) − содержит информацию о процессе, которая должна быть доступна только на уровне исполнения. Содержание структуры:
− параметры ввода-вывода (I/O), т.е. адреса буферов и т.д.;
− окружение в файловой системе (текущий каталог, коренной каталог);
− таблица открытых файлов;
− код возврата, номера ошибок;
− поле сигналов (информация, как надо реагировать на сигнал).
Распределением ресурсов между процессами занимается ядро ОС. Программы ядра выполняются от имени процесса. Процесс может находится: в режиме пользователя или в режиме системы.