21
исполнения ОС, которой ядро ОС управляет;
• прикладное ПО реализует некоторую модель СОД и обращается к ядру ОС за
дополнительными функциями, в основном связанными с доступом к аппаратным средствам ЭВМ;
• обращение прикладного ПО к ядру ОС осуществляется посредством систем-
ных вызовов;
• классификация и абстрагирование системных вызовов функций ядра ОС на
более высоком уровне приводит к трем базовыми концепциям ОС: файл, пользователь и процесс.
Таким образом, мы пришли к понятию среды исполнения ОС, которая опирается на три базовых концепции файл, пользователь и процесс, образующие иерархию отношений, показанную на рисунке 1.10.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Среда исполнения ОС |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Родительский процесс |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дочерний процесс |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Читать |
|
|
|
|
|
|
|
|
|
Файловая система |
|
Пользователь |
|
|||||||||
|
|
|
|
|
|||||||||
|
Писать |
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
Запускать |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Обычный файл |
|
|
|
|
Владелец |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Специальный файл |
|
|
|
|
Группа |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Другие |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рисунок 1.10 - Базовые концепции пользовательского режима ОС
Все концепции, структурно представленные на рисунке 1.10, будут подробно изучаться в последующих темах. Здесь мы рассмотрим лишь основные понятия и идеи, которые уже известны из теории других дисциплин или без которых невозможно обойтись при выполнении лабораторных работ.
Первое понятие, которое следует обсудить, яаляется концепция файла. ОС UNIX (Linux) прямо декларируют парадигму: «Все есть файл». К любому потенциально применимы три операции: r - чтения, w - записи и x - запуска.
22
Конкретизация понятия файл, в аспекте хранилища данных, формализуется в понятие файловой системы, которая представляет собой поименованную совокупность обычных и специальных файлов.
Обычный файл — именованная упорядоченная последовательность байт. Специальный файл имеет имя и специализацию по назначению:
устройства — отображение аппаратных средств компьютера в файловую систему ОС;
директории — файлы, представляющие список имен файлов и директорий; обеспечивают иерархическую структуру файловой системы ОС. Операция запуск, применительно к директории означает возможность «войти в нее» пользователю;
ссылки — именованные указатели на другие файлы, позволяющие работать с ними по имени ссылки.
именованные каналы — точки доступа, через которые можно передавать данные;
сокеты — точки доступа, через которые работает сетевое обеспечение ЭВМ.
Все операции с файлами интерпретируются через концепцию пользователя. Понятие пользователя интерпретируется через свои элементы - владелец, группа и другие:
владелец — именованный и индексированный объект ОС, права которого
интерпретируются на операции с файлами; индекс владельца или UID — User Identification — целое число (от нуля и выше), которое присутствует в каждом файле и интерпретируется как «хозяин файла»; чем меньше значение UID, тем более «важным» является пользователь; например, пользователь root имеет UID=0 и наивысшие права на файлы ОС;
группа — именованный и индексированный объект ОС, предназначенный для
объединения владельцев ОС; каждый владелец должен входить хотя бы в одну группу; индекс группы или GID — Group Identification, аналогичен UID и выполняет те же функции для групп; владелец root имеет собственную группу с именем root и идентификатом GID=0; все администраторы ОС обычно входят в группу root;
другие — это пользователи без имени и идентификатора, которые дополняют концепцию пользователя и права которых также отображены в каждом файле.
Третья концепция - процесс, который обычно интерпретируется как запущенная программа или задача.
Процесс — это элементарный управляемый объект ОС, имеющий целочисленный идентификатор PID — Process Identification, обеспечивающий функциональное преобразование файлов (данных) с правами, которые определяются объектами
пользователь.
Значения PID начинаются с 1 (обычно - это процесс init) — главный родительский процесс, и увеличиваются по мере порождения дочерних процессов. Новому про-
23
цессу присваивается номер на 1 больше, чем максимальный номер существующего или существовавшего с момента запуска ОС процесса.
Ядро ОС самостоятельно запускает только один процесс init. Все остальные процессы режима пользователя являются дочерними относительнопроцесса init.
Запуск любой программы в режиме пользователя осуществляется с помощью двух системных вызовов: fork(...) и exec(...).
Вызов функции fork(...) из программы на языке С, имеет вид:
#include <unistd.h> pid_t fork(void);
Функция fork(...) полностью дублирует существующий процесс, вместе со всеми открытыми файлами, порождая новый (дочерний) процесс с новым PID. Программист различает родительский и дочерний процессы только по целочисленному значению, которое возвращает функция fork(...):
-1 — ошибка, дочерний процесс не создан; 0 - дочерний процесс;
> 0 — родительский процесс, которому передано значение PID дочернего процесса.
Замечание
Родительский процесс обязан дождаться завершения дочернего процесса, иначе контроль передается по иерархии выше. Процесс init является родителем для всех остальных процессов.
Если дочерний процесс создан для запуска некоторой программы, то используется одна из разновидностей системной функции exec(...):
#include <unistd.h> extern char **environ;
int execl(const char |
*path, const char *arg, ...); |
||||
int execp(const char |
*file, const char |
*arg, |
...); |
||
int execle(const char |
*path, const char |
*arg, |
…, char * const envp[]); |
||
int execv(const char |
*path, |
const |
*char argv[]); |
||
int execvp(const char |
*file, |
const |
*char argv[]); |
||
int execvpe(const char *file, const *char argv[], char * const envp[]);
Хорошо видно, что любой вызов имеет ссылку на файл, в качестве аргумента. После всех проверок на права запуска, указанный файл загружается в пространство дочернего процесса. Загруженной программе передаются все ресурсы дочернего процесса, включая открытые и созданные файлы.
24
Замечание
Обратите внимание, что родительский процесс продолжает контролировать работу уже новой программы и имеет право принудительно завершить ее работу.
Когда говорят, что на ЭВМ установлена некоторая ОС, то обычно подразумевают некоторый ее дистрибутив, включающий конкретное ядро ОС и другое системное ПО, а также прикладное ПО и системы разработки.
Выбор конкретного дистрибутива предполагает учет многих факторов:
производитель дистрибутива;
тип процессора, на который рассчитан дистрибутив;
лицензия дистрибутива и ценовая политика дистрибьютора;
поддержка национальных языков;
типы носителей, на которых распространяется дистрибутив;
особенности инсталляции;
сопровождение дистрибутива;
наличие документации.
Учет всех перечисленных факторов может оказаться довольно сложной задачей и выходит за рамки нашей дисциплины. Более того, каждому дистрибутиву и его версиям посвящены отдельные сайты, а многие дистрибутивы постоянно обсуждаются на форумах в Интернете.
Для целей обучения выбран 64-битный базовый дистрибутив Arch Linux. На его основе создан набор ПО, организованный как учебный программный комплекс кафедры АСУ (УПК АСУ).
Структура УПК АСУ ориентирована не только на задачи курса «Операционные системы», но имеет все необходимое ПО для его изучения и организации лабораторных работ.
25
Данный учебный материал явялется методическим пособием по проведению лабораторной работы №1 по дисциплине «Оперционные системы».
Работа проводится в рамках темы №1 «Назначение и функции ОС».
Цель работы — получение практических навыков использования ОС УПК АСУ, применительно к изучаемой дисциплине.
Указанная цель достигается посредством:
•изучения структуры ПО ОС УПК АСУ;
•создания индивидуального загрузочного устройства flashUSB;
•освоения процедуры запуска ОС УПК АСУ с загрузочного flashUSB;
•получения навыков работы в среде пользователя asu; в частности: подключе-
ние к ОС УПК АСУ личного архива студента, содержащего рабочую область пользователя upk; выход из сесси пользователя asu и вход в сессию пользователя upk;
•изучения рабочей среды (рабочего стола) пользователя upk, содержащего
учебный материал и инструментальные средства для выполнения всех лабораторных работ по изучемой дисциплине;
•выполнения учебных заданий данного раздела пособия;
•оформления отчета по выполненным заданиям;
•освоением процедур создания личного архива на flashUSB и завершения работы с ОС УПК АСУ.
Замечание
Данное учебно-методическое пособие становится доступным только после запуска ОС УПК АСУ, подключения личного архива студента и входа в сеанс пользователя upk, поэтому:
•значительная часть работ выполняется под непосредственным руководством преподавателя;
•основной учебный материал по данной лабораторной работе содержится в методическом пособии [3, раздел 1, «Назначение и использование ОС УПК АСУ»];
•учебный материал данного раздела только дополняет и уточняет [3], в плане особенностей изучаемой дисциплины.
Учитывая указанные выше ограничения, лабораторная работа №1 выполняетмя в три этапа.
Этап 1, студент:
•передает преподавателю личное устройство flashUSB для установки на него загрузочного ПО;
•изучает учебный материал первого раздела пособия [3], доступный на ЭВМ учебных классов кафедры АСУ как файл: upk_asu.pdf.
Этап 2, студент:
• получает от преподавателя личное устройство flashUSB с установленным на