
- •Ос в общей структуре компьютера.
- •История операционных систем.
- •Классификация современных ос. Задачи современных ос.
- •6. Понятие процесса – ключевое понятие ос.
- •8. Трансляторы: компиляторы и интерпретаторы.
- •9. Иерархия зу (запоминающих устройств).
- •10. Управление оперативной памятью (оп). Менеджер памяти; swapping; виртуальная память.
- •11. Модели организации виртуальной памяти.
- •12. История ос unix.
- •13. Общая архитектура unix. Основные подсистемы ядра.
- •14. Пользовательская среда unix.
- •Командный интерпретатор shell.
- •16. Система каталогов в oс unix. Управление с помощью команд языка Bourn shell.
- •17. Управление файлами с помощью команд языка Bourn shell. Перенаправление ввода/вывода.
- •19. Обработка аргументов командной строки. Переменные окружения.
- •20. Пользователь и группа. Права доступа к файлу.
- •21. Системные вызовы и функции стандартных библиотек. Обработка ошибок.
- •22.Структура программы на языке с. Параметры главной функции (пример).
- •23. Файловая система ос unix: монтирование, индексные дескрипторы, жесткие и символические ссылки, файлы устройств.
- •24.Системные вызовы для работы с файлами
- •25. Понятие «процесс» в ос unix. Контекст процесса; свойства процесса; состояние процесса.
- •26.Создание процессов и упр-е ими.
- •27. Запуск внешней программы
- •29.Общая классификация средств взаимодействия процессов в ос unix.
- •30.Иерархия процессов в ос unix. Понятие сеанса. Фоновые процессы.
- •31.Каналы – средства взаимодействия процессов. Неименованные каналы. Организация конвейера (пример программы).
- •33.Сигналы как средство взаимодействия процессов в ос unix. Диспозиция сигналов.
- •34.Ограничения для процесса в ос unix (по ресурсам). Связь со свойствами процесса.
- •36.Отображение файлов в виртуальное адресное пространство. Разделяемая память.
- •37. Взаимодействие процессов через псевдотерминал.
- •38. Недостатки потокового взаимодействия процессов. Средства System vipc. Пространство имен. Общие принципы работы со средствами System vipc.
- •39. Организация очереди сообщений в ос unix. Структура сообщения. Отправка и принятие сообщений.
- •40.Семафоры, как средство взаимодействия процессов System vipc. Понятие атомарной операции. Массив семафоров.
- •41.Разделяемая память, как средство взаимодействия процессов System vipc.
- •42.Взаимодействие по сети. Понятие протокола. Семейства адресации и типы взаимодействия. Создание сокета в ос unix.
- •45. Потоковые сокеты. Клиент – серверная модель.
- •46. Проблема очередности действий и ее решение.
- •47. Процессы-демоны. Система журнализации.
- •48. Загрузка и жизненный цикл в ос unix.
- •49. Взаимоисключения. Понятие критической секции. Устаревшие подходы к организации взаимного исключения.
- •50.Поддержка взаимоисключения на уровне ос. Мьютексы и семафоры (Дейкстры). Команда ассемблера tsl.
- •51.Проблема тупиков. Граф ожидания
- •52. Нити исполнения (pthreads) в ос unix. Мьютексы pthreads.
- •53.Графический интерфейс в ос unix. Базовые принципы построения x_window.
- •54.Файловая подсистема. Общая структура. Методы выделения дискового пространства. Управление дисковым пространством.
- •55.Файловая подсистема. Структура файловой системы на диске. Реализация директорий. Поиск в директории (хеширование).
- •56.Подсистема ввода/вывода. Схема взаимодействия подсистем ос. Понятие драйвера. Типы драйверов.
25. Понятие «процесс» в ос unix. Контекст процесса; свойства процесса; состояние процесса.
Процесс
– можно понимать программу, кот выполн-ся
под упр-ем ОС. Контекст процесса вкл:
пользоват контекст(код и данные располож
в адресном пр-ве процесса) и контекст
ядра(стек ядра, образуется в режиме ядра
и данные ядра). Данные ядра –UID
–идентификатор пользователя , PID
- процесса, GID
- группы. Св-ва процесса:1) сегмент кода,
2)сегмент данных,3)стек,4)состояние
процессора PSW,5)права
и полномочия для UNIX,6)ресурсы.
В каждый момент времени процесс может
исполн и не исполн, причем кот не исполн
готов к исполнению, так и не готов. Схема
состояния процесса:
Всостоянии блокировке процесс м.попасть,
если процесс произвел такой сист вызов,
после кот его продолжение невозможно.
В ОСUNIX
легковесный процесс –представл собой
доп единицу планировки в рамках одного
обыч процесса. Обычн процесс может
представ как группу легковесных.
Легковесный процесс – поток, нить –
thread.
У каждой нити есть свой собств стек и
свой счетчик команд из PSW.
При прогр-и легковесн процессов говорим
об парал программ-е с разделен данными.
Св-ва процесса в Unix:
1)код, м.б. разделяемый, св-во доступно
только на чтение.2)сегмент данных вкл
стек, доступно Read/WR.3)сост-е
регистра – контекст, вкл счетчик команд,
PSW,
указатель стека и все РОН. Пока прогр-е
не в сост-и выполнения содержимое его
регистров храниться в спуц структуре
данных – ядре.4)таблица дискрипторов –
привяз номера к реальн структуре в
ядре.5)команд строка – структура данных
из массивов указателей на аргументы
команд.строки. >ls
–l
-a
/usr/local.
Argv – ссылка на массив указателей:
char*argv:
6)окружение – стр-ра данных содерж указатели на строки переменных окружения.
Строки заканчиваются \0.
7)текущий каталог – люб процесс наход в каталоге файловой системы.
8)корневой каталог - в UNIX м. организовать файл систему и всем его потомкам, частью дерева каталогов, имеющий общий корень. Процессу можно определить корнев каталог jal, а каталоги за его перелом будут невидимы.
9)umask – при создании новых файлов значение этого пар-ра побитово вычисляется из прав доступа
10) идентификаторы – UID и GID – факт полномочия программы, определяют права процесса в файловой системе. Эти прог-мы выполн с правами пользователя, владещ правами программы, а не тот кто запустил.
11)идентификатор процесса
12)диспозиция обработки сигнала – это то как процесс реаг-ет на определен сигналы.
13) счетчики потребл-х ресурсов.
26.Создание процессов и упр-е ими.
Процесс в UNIX создается системным вызовом fork():
#include <sys/types.h> #include <unistd.h>
Pid_t fork(void)
Процесс, сделавший вызов fork называется родительским, а вновь созданный процесс —дочерним. Новый процесс является точной копией породившего его процесса. Как это ни удивительно, но новый процесс имеет те же инструкции и данные, что и его родитель. Более того, выполнение родительского и дочернего процесса начнется с одной и той же инструкции, следующей за вызовом fork, причем знач-е возвращ-мое fork различны, в род процессе fork вернет PID потомка, а в потомок вернет 0. Каждый процесс имеет одного родителя, но может иметь несколько дочерних процессов. Тем не менее между родительским и дочерним процессом имеется ряд различий: 1) Дочернему процессу присваивается уникальный идентификатор PID,отличный от родительского. 2) Соответственно и идентификатор родительского процесса PPID для родителя и потомка различны. 3) Дочерний процесс получает собственные файловые дескрипторы, хотя он разделяет те же записи файловой таблицы. 4) счетчик потребл ресурсов у созданного обнуляется. 5) Для дочернего процесса очищаются все ожидающие доставки сигналы. Пример: дочерний печатает – ребенок
Main()
{int pid; pid=fork();
If (pid==-1) {perror(“error fork\n”);exit(1);}
If (pid==0) {printf(“this Child\n”);} else
{printf(“this parent\n”);} Return 0;}
Последовательность
печати не определена, а зависит от
оставшего кванта времени на родительский
процесс, если у родителя мал, то он
переходит в ожидание, а дочерний порождает
и печатаетthis
Child.
Создавшая ситуация гонок.