- •Ос в общей структуре компьютера.
- •История операционных систем.
- •Классификация современных ос. Задачи современных ос.
- •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.Подсистема ввода/вывода. Схема взаимодействия подсистем ос. Понятие драйвера. Типы драйверов.
47. Процессы-демоны. Система журнализации.
Под демоном понимается процессы, не предназначенные для непосредств. взаимодействия с пользователями с-мы. Существует демоны внутрисистемные. Демоны обычно рассчитаны на длительное функционирование и в некоторых с-мах огни могут работать годами без перезапуска => при его запуске принимаются меры чтобы его функционирование не мешало работе проуесса и администрированию системы.
Текущий каталог обычно меняется на корневой (чтобы не мешать админу удалять каталоги и т.д.). Демону не нужен управляющий терминал, дескрипторы стандартного I/O и вывод ошибок, но желательно чтобы дескрипторы 0,1,2 оставались открытыми, потому что демоны обычно работают с файлами т.к. если файл будет открыт с дескриптором 0,1,2 , то какая-нить процедура может случайно испортить файл =>все 3 дескриптора связывают с устройством dev/NULL – символьное потоковое уст-во, яв-ся чисто логическим. Все что в него записывается – исчезает.
Чтобы действие производимые с терминалом не влияли надемона, он обычно работает в отдельном сеансе.
Процедура старта процесса-демона:
Close(0);
…(1); // Закрываем стандартные дескрипторы
…(2);
// Связываем с dev/NULL:
Open(“/dev/NULL”,O_RDONLY); - чтение
Open(“/dev/NULL”,O_WRONLY); - запись
Open(“/dev/NULL”,O_WRONLY); - ошибки
// Дальше fork и запуск
If (fork()>0)
exit(0); - завершение родит. процесса.
Setsid();
Chdir(“/”);
Т.к. с терминалом процесс-демон не связан, то сообщения об ошибках и др. передаются альтернативным способом. Обычно это делается через инфраструктуру системной журнализации:
Void openlog (const char *ident, int option, int facility); - открытие
Void syslog (int priority, const char *format,..); - послать сообщение демону
Void closelog (void); - закрытие
Есть еще модификация syslog – либо пишет сообщение в системный журнал, либо отправляет его на консоль, либо перенаправляет в соотв-е со списком пользователей системы (etc/syslog.conf).
Параметры:
Ident – это строка будет выдаваться перед каждым сообщением программы.
Чтобы начать работу с журналом прога вызывает openlog, передает первым параметром свое название , указ-ся некоторые дополн опции.
Через параметр facility указывается к какой подсистеме относится данная программа. Если подсистема не имеет спец значение, то ставится LOG_USER.
Функция syslog похожа на printf.
Priority – степень важности сообщения:
LOG_ERR – ошибки
LOG_WARN – предупреждения
LOG_INFO – информационные сообщения
Сисадмин может настроить все т.о., чтобы в файл журнала попадали сообщения с опред уровнем важности. Например: syslog(LOG_INFO,”demon with pid=%d”, getpid());
Функция closelog завершает работу с системой журнализации, закрывает открытые файлы и т.д.
Управление процессами-демонами можно осуществлять через сигналы SIG_HUB демон переписывает конфигурац. Файл и при необходимости даже меняется режим работы.
48. Загрузка и жизненный цикл в ос unix.
После включения ПК управление получает небольшая прога из ПЗУ. После выполнения действий по проверке оборудования эта прога определяет загрузочное устройство и считывает в память 1й сектор диска.
Потом передает управление на считанные порт. Размер загрузочного сектора в Unix обычно 512байт =>прога довольно проста и ее роль заключается в загрузке в память более сложной проги, которая записана на диске в различных областях. Эта загруженная прога будет загрузчиком ОС.
Загрузчик ОС загружает ядро и передает управление его инициализационному коду. Получается ядро инициализирует собств. подсистемы, включая драйверы устройств. Затем ядро монтирует файл. подсистему с корневого дискового устройства. Корневой каталог сразу доступен только на чтение, затем ядро готово к работе.
После этого ядро создает процесс с номером 0 – этот процесс существует только на этапе загрузки и его фукнция с помощью fork создать процесс с PID=1, после чего 0-вой процесс прекращает свое существование.
Процесс с №1 выполнит execv, чтобы загрузить в память прогу INIT. Важно чтобы INIT была в корневом дисковом устройстве. INIT – это обычная прога, написанная на С++. Процесс INIT работает все время работы системы, его завершение влечет останов системы. INIT выполняет проверку дисков, перемонтирует корневой раздел в режим чт/зап и монтирует остальные файл. системы. Инициализирует pose, запускает демонов и активирует терминалы (запуск getty). У пользователя getty создает сеанс, связанный с ее терминалом, затем с помощью exec getty запускает интерпретатор командно строки. У проги INIT сложный функционал =>выполнение большинства действий по инициализации системы возложено на скрипты системной инициализации, прога INIT только указывает на расположение скриптов.
Останов системы: стоп все процессы, размонтируются все файл системы кроме корнеовй, корневой в режим чтения и останов.