- •Ос в общей структуре компьютера.
- •История операционных систем.
- •Классификация современных ос. Задачи современных ос.
- •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.Подсистема ввода/вывода. Схема взаимодействия подсистем ос. Понятие драйвера. Типы драйверов.
19. Обработка аргументов командной строки. Переменные окружения.
Получить информацию от пользователя можно путем считывания аргументов, которые пользователь вводит в командной строке. Командная оболочка автоматически сохраняет до 9 аргументов командной строки в специальных внутренних переменных с именами: $1, $2 … $9. Во FreeBSD можно сохранять любое количество элементов. В переменной $0 сохраняется имя самой программы.
Переменная $@ - список всех аргументов, $# - число аргументов.
Подстановка команд подразумевает выполнение команды и присвоение ее вывода переменной. Подлежащая выполнению команда заключается в левые обратные апострофы.
today=`data` #выполнить команду data и присвоить ее вывод в качестве значения переменной today.
Переменные окружения. Одним из свойств процесс в Unix является набор переменных окружения. Фактически они определены множеством текстовых строк вида: var=value. Процесс имеет возможность изменить свое окружение - удалить, добавить, изменить переменные. Дочерние процессы наследуют окружение родителя. Начальное окружение сеанса устанавливается программой login, исходя из записей в файле паролей, например:
HOME=/usr/home/student – домашний каталог, значение по умолчанию
LOGNAME=student – зарегистрированное имя
PATH=/bin:/etc:/usr/bin – пути поиска
SHELL=/bin/sh – интерпретатор сеанса
MAIL=/var/mail/зарег. имя – имя почтового ящика
……
T2=временная зона, определено системой.
Посмотреть весь набор можно, дав команду set без параметров.
Можно обращаться к переменным по их именам в командах интерпретатора: echo $PATH
Модифицировать окружение можно командой export
export PATH=$PATH:/usr/bin/home
20. Пользователь и группа. Права доступа к файлу.
Вычислительная система не умеет оперировать именами, поэтому каждому имени в системе соответствует некоторое числовое значение – идентификатор.
UID – идентификатор пользователя. Все пользователи в системе делятся на группы. Группы также получают свои имена и идентификаторы групп GID. Для каждого файла в системе запоминаются имена хозяина и группы хозяина.
Группа хозяев не обязательно та, куда входит хозяин. Хозяин – тот, кто создал файл, группа хозяев – группа тех, кому принадлежит этот пользователь. В последствии хозяин или администратор могут передать файл в собственность другому пользователю:
chown owner f1, f2, fn – меняет собственника файлов, owner – символьное username или PID.
Изменение группы хозяев:
chgrp group f1,f2,fn. group – groupname или GID.
Для каждого файла есть 3 категории пользователей:
- хозяин файла
- группа хозяев файла
- остальные пользователи
Для каждой из этих категорий хозяин может определить различные права доступа и поставить защиту на файл.
Различают 3 вида прав доступа:
- право на чтение r
- право на запись w
- право на исполнение x
Для регулярных файлов смысл буквальный.
Право на чтение для каталогов позволяет читать имена файлов и только имена, находящихся в этом каталоге. наличие права на исполнение для директории позволяет получить дополнительную информацию о фалах, входящих в каталог. Без этого права нельзя читать ни содержимое файлов в каталоге, ни исполнять их. Право исполнения требуется для директории, чтобы сделать ее текущей и для всех директорий на пути к ней.
Право записи позволяет создавать, изменять, переименовывать файлы. Для удаления файла достаточно иметь права w и x для директории независимо от прав доступа к самому файлу.
Системные вызовы getuid и getgid. Узнать идентификатор пользователя, запустившего программу на выполнение и идентификатор группы можно с помощью системных вызовов getuid() и getgid().
Заголовочные файлы:
#include <sys/types.h>
#include <unistd.h>
Прототипы:
uid_t getuid(void)
gid_t getgid(void)
Типы совместимы с int