Программное обеспечение вычислительной системы

Автор работы: Пользователь скрыл имя, 16 Декабря 2012 в 12:09, курс лекций

Краткое описание

Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и в непрерывном взаимодействии. Между программами, как и между физическими узлами и блоками существует взаимосвязь – многие программы работают, опираясь на другие программы более низкого уровня. Уровни программного обеспечения (ПО) представляют собой пирамидальную конструкцию. Каждый следующий уровень опирается на программное обеспечение предшествующих уровней (рис.1).

Вложенные файлы: 1 файл

Лекции.doc

— 510.00 Кб (Скачать файл)

Чтобы войти в систему  пользователь должен со свободного терминала  ввести свое учетное имя (account name) и, возможно, пароль (password). Каждый зарегистрированный  пользователь получает неограниченный доступ к своему домашнему (home) каталогу.

Традиционный способ взаимодействия пользователя с системой UNIX – использование командных языков. Но сейчас работают все чаще с графическим интерфейсом X Window. Общее название для любого командного интерпретатора ОС UNIX – shell (оболочка). Вызванный командный интерпретатор выдает приглашение на ввод пользователем командной строки, которая может содержать простую команду, конвейер команд или последовательность команд.

Оболочкой (shell) называют механизм взаимодействия между пользователем и системой. Любой командный язык семейства shell состоит из трех частей:

  • служебных инструкций;
  • встроенных команд, выполняемых интерпретатором командного языка;
  • команд, представляемых отдельными выполняемыми файлами.

 

Процессы в ОС UNIX понимаются в классическом смысле этого термина, т.е. как программа, выполняемая в собственном виртуальном адресном пространстве. Когда пользователь входит  в систему, автоматически создается процесс. Для создания нового процесса и запуска в нем программы используются два системных вызова API – fork() и exec(имя_выполняемого_файла). Каждый процесс, за исключением нулевого, порождается в результате запуска другим процессом операции fork(). Каждый процесс имеет одного родителя, но может породить много процессов. Процесс с идентификатором 1, известный под именем unit является предком любого другого процесса в системе и связан с каждым процессом особым образом.

 

  1. Функционирование системы UNIX

 

Процесс может выполняться в одном из двух состояний: пользовательском (выполняет пользовательскую программу) и системном (выполняет программы ядра и имеет доступ к системному сегменту данных).

Когда пользовательскому  процессу требуется выполнить системную функцию, он создает системный вызов. Фактически происходит вызов ядра системы как подпрограммы. С этого момента процесс считается системным.

В UNIX- системах используется разделение времени, т.е. каждому процессу выделяется квант времени. Процессам, которые получили большое количество процессорного времени, назначают более низкие приоритеты, а процессам с небольшим процессорным временем – повышают приоритет. Все системные процессы имеют более высокие приоритеты по сравнению с пользовательскими процессами.

 

Функции ввода/вывода задаются в основном с помощью пяти системных вызовов:

  • open – открыть файл;
  • close – закрыть файл;
  • read – чтение;
  • write – запись;
  • seek – операция поиска.

 

Механизм перенаправления  ввода/вывода является одним из наиболее элегантных, мощных и одновременно простых механизмов OC UNIX.

Реализация этого механизма  основывается на следующих свойствах OC UNIX:

  • любой ввод/вывод трактуется как ввод из некоторого файла и вывод в некоторый файл;
  • клавиатура и экран также интерпретируются как файлы (первый можно только читать, а во второй – только писать);
  • доступ к любому файлу производится через его дескриптор (положительное целое число). Файл с дескриптором 1 – файл стандартного ввода (stdin), 2 – файл стандартного вывода (stdout) и 3 – файл стандартного вывода диагностического сообщения (stderr);
  • программа, запущенная в некотором процессе, «наследует» от породившего процесса все дескрипторы открытых файлов.

Файлом стандартного ввода является клавиатура, а файлом стандартного вывода и вывода диагностических сообщений – экран. Однако при запуске любой команды можно  сообщить какой файл или вывод какой программы  должен служить соответствующим файлом. Тогда интерпретатор перед выполнением системного вызова exec открывает указанные файлы, подменяя смысл дескрипторов 1, 2, 3.

Функция printf  неявно использует stdout, функция scan – stdin, функция error – stderr. Т.е. указывать дескриптор при использовании этих функций не надо.

 

  1. Файловая система

 

Файл в UNIX представляет собой множество символов с произвольным доступом. Рассмотрим организацию файлов на диске.

Информация на диске  размещается поблочно, по 512 байт в  каждом блоке. Диск разбивается на области (см. рис.1):

  • неиспользуемый блок;
  • управляющий блок (суперблок), в котором содержится размер диска и границы других областей;
  • i-ый список, состоящий из описаний файлов, называемых i-узлами;
  • область для хранения содержимого файлов.

Каждый i-ый  узел содержит:

  • идентификацию владельца;
  • идентификацию группы владельца;
  • биты защиты;
  • физические адреса на диске, где находится содержимое файла;
  • размер файла;
  • время создания файла;
  • время последнего использования файла;
  • время последнего изменения атрибутов;
  • число связей-ссылок, указывающих на файл;
  • индикацию, является ли файл директорией, обычным файлом или специальным файлом.

Следом за i-м списком идут блоки, предназначенные для хранения содержимого файлов. Пространство, оставшееся свободным от файлов, образует связанный список свободных блоков.

Рис.1. Организация файлов в UNIX на диске.

 

Каждый файл однозначно идентифицируется:

  • старшим номером устройства (определяет массив входных точек в драйверы):
  • младшим номером устройства (для выбора устройства из группы идентичных физических устройств):
  • i-м номером ( индекс i-узла данного файла в массиве i-узлов).

 

  1. Межпроцессорные коммуникации

 

Для построения программных  систем, работающих по принципам модели «клиент-сервер» в UNIX существуют следующие механизмы:

  • сигналы;
  • семафоры;
  • программные каналы;
  • очереди сообщений;
  • сегменты разделяемой памяти;
  • вызовы удаленных процедур.

 Многие из этих  механизмов уже нам знакомы.  Рассматривать их не будем.




Информация о работе Программное обеспечение вычислительной системы