Дистанционная поддержка образовательного процесса

Лекция 24 Операционная система UNIX

Лекция 24
Операционная система UNIX
Unix - семейство полноценных, изначально многопользовательских, многозадачных и многотерминальных операционных систем, почти полностью совместимых друг с другом на уровне исходных текстов программ.
Практически все протоколы, на которых основан Internet, были разработаны под Unix, в частности стек протоколов TCP/IP придуман в университете Berkeley.
Важным свойством Unix является его многотерминальность когда много пользователей могут одновременно запускать программы на одной Unix-машине. Своей масштабируемостью Unix из-за его многоплатформенности на порядок превосходит любую другую операционную систему .
Независимо от версии, общими для Unix чертами являются:
многопользовательский режим со средствами защиты данных от несанкционированного доступа
реализация мультипрограммной обработки в режиме разделения времени, основанная на использовании алгоритмов вытесняющей многозадачности (preemptive multitasking)
использование механизмов виртуальной памяти и свопинга для повышения уровня мультипрограммирования
унификация операций ввода-вывода на основе расширенного использования понятия файл
иерархическая файловая система, образующая единое дерево каталогов независимо от количества физических устройств, используемых для размещения файлов
переносимость системы за счет написания ее основной части на языке C
разнообразные средства взаимодействия процессов, в том числе и через сеть
кэширование диска для уменьшения среднего времени доступа к файлам.
Хотя операционная система и большинство команд написаны на Си, система UNIX поддерживает ряд других языков, таких как Фортран, Бейсик, Паскаль, Ада, Кобол, Лисп и Пролог. Система UNIX может поддерживать любой язык программирования, для которого имеется компилятор или интерпретатор, и обеспечивать системный интерфейс, устанавливающий соответствие между пользовательскими запросами к операционной системе и набором запросов, принятых в UNIX.
Unix состоит из ядра с включенными в него драйверами и из утилит (внешних по отношению к ядру программ). Если надо изменить конфигурацию (добавить устройство, изменить порт или прерывание), то ядро пересобирают (перелинковывают) из обьектных модулей или (напр., во FreeBSD) из исходников. (Некоторые параметры пожно поправить без пересборки. Существуют также loadable kernel modules).
Выполняя различные элементарные операции по запросам пользовательских процессов, ядро обеспечивает функционирование пользовательского интерфейса. Среди функций ядра можно отметить:
Управление выполнением процессов посредством их создания, завершения или приостановки и организации взаимодействия между ними.
Планирование очередности предоставления выполняющимся процессам времени центрального процессора (диспетчеризация). Процессы работают с центральным процессором в режиме разделения времени: центральный процессор выполняет процесс по завершении отсчитываемого ядром кванта времени процесс приостанавливается и ядро активизирует выполнение другого процесса. Позднее ядро запускает приостановленный процесс. 
Выделение выполняемому процессу оперативной памяти. Ядро операционной системы дает процессам возможность совместно использовать участки адресного пространства на определенных условиях, защищая при этом адресное пространство, выделенное процессу, от вмешательства извне. Если системе требуется свободная память, ядро освобождает память, временно выгружая процесс на внешние запоминающие устройства, которые называют устройствами выгрузки. Если ядро выгружает процессы на устройства выгрузки целиком, такая реализация системы UNIX называется системой со свопингом (подкачкой); если же на устройство выгрузки выводятся страницы памяти, такая система называется системой с замещением страниц.
Выделение внешней памяти с целью обеспечения эффективного хранения информации и выборка данных пользователя. Именно в процессе реализации этой функции создается файловая система. Ядро выделяет внешнюю память под пользовательские файлы, мобилизует неиспользуемую память, структурирует файловую систему в форме, доступной для понимания, и защищает пользовательские файлы от несанкционированного доступа.
Управление доступом процессов к периферийным устройствам, таким как терминалы, ленточные устройства, дисководы и сетевое оборудование.

Выполнение ядром своих функций довольно очевидно. Например, оно узнает, что данный файл является обычным файлом или устройством, но скрывает это различие от пользовательских процессов. Так же оно, форматируя информацию файла для внутреннего хранения, защищает внутренний формат от пользовательских процессов, возвращая им неотформатированный поток байтов. Наконец, ядро реализует ряд необходимых функций по обеспечению выполнения процессов пользовательского уровня, за исключением функций, которые могут быть реализованы на самом пользовательском уровне. Например, ядро выполняет действия, необходимые shell'y как интерпретатору команд: оно позволяет процессору shell читать вводимые с терминала данные, динамически порождать процессы, синхронизировать выполнение процессов, открывать каналы и переадресовывать ввод-вывод. Пользователи могут разрабатывать свои версии командного процессора shell с тем, чтобы привести рабочую среду в соответствие со своими требованиями, не затрагивая других пользователей. Такие программы пользуются теми же услугами ядра, что и стандартный процессор shell.
Unix является изначально многопользовательской и многозадачной системой. 
В Unix используется вытесняющая многозадачность.
Основным различием между вытесняющим и невытесняющим вариантами многозадачности является степень централизации механизма планирования процессов.
 В первом случае механизм планирования процессов целиком сосредоточен в операционной системе, а во втором - распределен между системой и прикладными программами. 
При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс. 
При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой, а не самим активным процессом.
По критериям эффективности, использованным при разработке ОС, Unix относится к многозадачным системам разделения времени.
Системы разделения времени призваны исправить основной недостаток систем пакетной обработки - изоляцию пользователя-программиста от процесса выполнения его задач. Каждому пользователю системы разделения времени предоставляется терминал, с которого он может вести диалог со своей программой. Так как в системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым. 
Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину.


В настоящее время различные Unix-подобные системы широко представлены на рынке операционных систем: Minix, OpenSolaris, NetBSD, OpenBSD, AIX, HP-UX, Mac OS X, Xenix и др. Некоторые являются открытыми и распространяются свободно, некоторые коммерческими. Но самыми популярными из них безусловно являются FreeBSD.


Среда, 27.11.2024, 15:28
Приветствую Вас Гость

Вход на сайт

Поиск

Календарь

«  Ноябрь 2024  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930

Архив записей

Друзья сайта

  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика


    Онлайн всего: 2
    Гостей: 2
    Пользователей: 0