Автор работы: Пользователь скрыл имя, 16 Декабря 2012 в 12:09, курс лекций
Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и в непрерывном взаимодействии. Между программами, как и между физическими узлами и блоками существует взаимосвязь – многие программы работают, опираясь на другие программы более низкого уровня. Уровни программного обеспечения (ПО) представляют собой пирамидальную конструкцию. Каждый следующий уровень опирается на программное обеспечение предшествующих уровней (рис.1).
Чтобы войти в систему пользователь должен со свободного терминала ввести свое учетное имя (account name) и, возможно, пароль (password). Каждый зарегистрированный пользователь получает неограниченный доступ к своему домашнему (home) каталогу.
Традиционный способ взаимодействия пользователя с системой UNIX – использование командных языков. Но сейчас работают все чаще с графическим интерфейсом X Window. Общее название для любого командного интерпретатора ОС UNIX – shell (оболочка). Вызванный командный интерпретатор выдает приглашение на ввод пользователем командной строки, которая может содержать простую команду, конвейер команд или последовательность команд.
Оболочкой (shell) называют механизм взаимодействия между пользователем и системой. Любой командный язык семейства shell состоит из трех частей:
Процессы в ОС UNIX понимаются в классическом смысле этого термина, т.е. как программа, выполняемая в собственном виртуальном адресном пространстве. Когда пользователь входит в систему, автоматически создается процесс. Для создания нового процесса и запуска в нем программы используются два системных вызова API – fork() и exec(имя_выполняемого_файла). Каждый процесс, за исключением нулевого, порождается в результате запуска другим процессом операции fork(). Каждый процесс имеет одного родителя, но может породить много процессов. Процесс с идентификатором 1, известный под именем unit является предком любого другого процесса в системе и связан с каждым процессом особым образом.
Процесс может выполняться в одном из двух состояний: пользовательском (выполняет пользовательскую программу) и системном (выполняет программы ядра и имеет доступ к системному сегменту данных).
Когда пользовательскому процессу требуется выполнить системную функцию, он создает системный вызов. Фактически происходит вызов ядра системы как подпрограммы. С этого момента процесс считается системным.
В UNIX- системах используется разделение времени, т.е. каждому процессу выделяется квант времени. Процессам, которые получили большое количество процессорного времени, назначают более низкие приоритеты, а процессам с небольшим процессорным временем – повышают приоритет. Все системные процессы имеют более высокие приоритеты по сравнению с пользовательскими процессами.
Функции ввода/вывода задаются в основном с помощью пяти системных вызовов:
Механизм перенаправления ввода/вывода является одним из наиболее элегантных, мощных и одновременно простых механизмов OC UNIX.
Реализация этого механизма основывается на следующих свойствах OC UNIX:
Файлом стандартного ввода является клавиатура, а файлом стандартного вывода и вывода диагностических сообщений – экран. Однако при запуске любой команды можно сообщить какой файл или вывод какой программы должен служить соответствующим файлом. Тогда интерпретатор перед выполнением системного вызова exec открывает указанные файлы, подменяя смысл дескрипторов 1, 2, 3.
Функция printf неявно использует stdout, функция scan – stdin, функция error – stderr. Т.е. указывать дескриптор при использовании этих функций не надо.
Файл в UNIX представляет собой множество символов с произвольным доступом. Рассмотрим организацию файлов на диске.
Информация на диске размещается поблочно, по 512 байт в каждом блоке. Диск разбивается на области (см. рис.1):
Каждый i-ый узел содержит:
Следом за i-м списком идут блоки, предназначенные для хранения содержимого файлов. Пространство, оставшееся свободным от файлов, образует связанный список свободных блоков.
Рис.1. Организация файлов в UNIX на диске.
Каждый файл однозначно идентифицируется:
Для построения программных систем, работающих по принципам модели «клиент-сервер» в UNIX существуют следующие механизмы:
Многие из этих механизмов уже нам знакомы. Рассматривать их не будем.
Информация о работе Программное обеспечение вычислительной системы