- •4 Курс, 1 семестр
- •Оглавление
- •1 Введение в ос unix
- •1.1 История создания
- •1.2 Базовые концепции
- •1.3 Архитектура unix
- •1.4 Пользователи системы
- •1.5 Пользовательская среда Unix.
- •2 Файловая подсистема
- •2.1 Понятие
- •2.2 Логическая структура файловой системы
- •2.3 Имена файлов в ос unix
- •2.4 Типы файлов
- •2.5 Права доступа к файлам
- •2.6 Физическое размещение файловой системы
- •2.7 Особенности размещения файловой системы sVfs
- •2.8 Особенности размещения файловой системы ffs (ufs)
- •2.9 Монтирование файловых систем
- •2.10 Восстановление файловой системы
- •2.11 Типы файловых систем unix
- •3 Подсистема управления процессами
- •3.1 Понятие процесса
- •3.2 Логическая организация процессов
- •3.3 Жизненный цикл процесса
- •3.4 Реализация процессов
- •3.4.1 Состав процесса
- •3.4.2 Структуры управления процессом
- •3.4.3 Файловая система /proc
- •3.5 Нити (потоки)
- •Причины появления нитей
- •Типы нитей
- •3) Прикладные нити. Существует возможности поддержки нитей полностью на прикладном уровне, при этом ядру об их существовании ничего не известно.
- •3.5 Планирование
- •3.5.1 Задачи планировщика
- •3.5.2 Приоритеты процессов
- •3.5.3 Реализация планировщика
- •3.5.4 Расчет приоритета
- •3.5.5 Особенности планирования в Linux
- •3.6 Взаимодействие между процессами (Interprocess Communication, ipc)
- •3.6.1 Введение
- •3.6.2 Взаимодействие родственных процессов
- •3.6.3 Взаимодействие произвольных процессов
- •Разделяемая память.
- •Передача сообщений.
- •Семафоры.
- •3.6.4 Межпроцессное взаимодействие с помощью файловой системы
- •4 Управление памятью
- •4.1 Понятие виртуальной памяти
- •4.2 Свопинг
- •4.3 Страничное замещение
- •4.4 Стратегия замещения страниц
- •5 Подсистема ввода-вывода
- •5.1 Основные задачи
- •5.2 Типы устройств ввода-вывода в ос
- •5.3 Общая схема
- •5.4 Драйвера
- •5.5 Буферизация
- •5.6 Поддержка операций ввода-вывода
- •6 Unix в сетях
- •6.1 Конфигурация tcp/ip
- •6.2 Основные сетевые утилиты
- •6.3 Основные сетевые интерфейсы
- •6.4 Доступ к сетевым ресурсам
- •6.5 Сетевые службы Unix
3.4.3 Файловая система /proc
Файловая система /proc является механизмом для ядра и его модулей, позволяющим посылать информацию процессам. С помощью этой виртуальной файловой системы можно работать с внутренними структурами ядра, получать полезную информацию о процессах и изменять установки (меняя параметры ядра) на лету.
Файловая система /proc обеспечивает файловый интерфейс к внутренним структурам Linux. С ее помощью можно узнать полезную информацию и настроить систему.
Информация о системе
Информацию о системе и ядре хранится в следующих файлах:
/proc/cpuinfo - информация о процессоре ( модель, семейство, размер кэша и т.д.)
/proc/meminfo - информация о RAM, размере свопа и т.д.
/proc/mounts - список подмонтированных файловых систем.
/proc/devices - список устройств.
/proc/filesystems - поддерживаемые файловые системы.
/proc/modules - список загружаемых модулей.
/proc/version - версия ядра.
/proc/cmdline - список параметров, передаваемых ядру при загрузке.
И т.д.
Информация о процессах
Файловая система /proc служит также источником информации о выполняющихся процессах. В каталоге /proc находится каталоги, названия которых состоят из цифр - это и есть информация о процессах. Название каталога отражает идентификатор процесса (PID). Внутри этих каталогов находятся файлы, содержащие важную информацию о процессах - состояние, окружение и т.д.
Основные файлы:
"cmdline" содержится информация, которой был запущен процесс.
"environ" находятся переменные окружения этого процесса, а также идентификатор пользователя ( UID ) и группы ( GID ) запустившего процесс, идентификатор родительского процесса ( PPID ) и текущее состояние процесса ( например "Sleeping" или "Running" ).
"cwd" - ссылка к текущему рабочему каталогу процесса,
"exe" - исполняемый файл процесса,
"root" - ссылка к каталогу, который считается процессом корневым ( обычно это "/" ).
В подкаталоге "fd" находятся ссылки к используемым дескрипторам файлов процессом.
В подкаталоге /proc/self приложение найдет информацию о себе. На самом деле /proc/self является символической ссылкой на каталог процесса обращающегося к /proc.
Работа с ядром посредством /proc
Большинство файлов из каталога /proc доступны только на чтение. Тем не менее файловая система /proc предоставляет файлы для взаимодействия с ядром доступные на запись. Помещение информации в такие файлы изменяет состояние ядра и поэтому это надо делать очень аккуратно. Эти файлы находятся в каталоге /proc/sys.
В каталоге /proc/sys/kernel находится информация общего плана для ядра. Соответственно в /proc/sys/kernel/{domainname, hostname} находится информация о доменном имени и host имени, которую Вы можете изменить.
3.5 Нити (потоки)
Использования процессов обладает двумя важными ограничениями:
во-первых, некоторым приложениям необходимо выполнять несколько независимых друг от друга задач, при этом используя одно и тоже адресное пространство, и другие ресурсы;
во-вторых, невозможно реализовать преимущества многопроцессорных систем, так как процесс способен использовать только один процессор одновременно.
Но в тоже время существуют методики, позволяющие процессам совместно использовать адресное пространство и др. ресурсы. В разных реализациях UNIX используется различная терминология:
нити ядра;
прикладные нити;
прикладные нити, поддерживаемые ядром;
C-threads;
pthreads и “легковесные” процессы (lightweight process).