Среда исполнения Системные вызовы и библиотеки Unix SVR4.

Презентация:



Advertisements
Похожие презентации
Управление процессами. Определение процесса. Основные понятия Процесс совокупность машинных команд и данных, которая обрабатывается в рамках вычислительной.
Advertisements

Управление процессами. Определение процесса. Основные понятия Процесс совокупность машинных команд и данных, которая исполняется в рамках вычислительной.
Системы реального времени Лекция 4: процессы. Понятие процесса Процесс - фундаментальное понятие любой операционной системы С помощью процессов происходит.
Современные операционные системы UNIX UNIX Linux Linux QNX QNX.
Лекция 2 История и основы UNIX – систем. FreeBSD.Запуск и останов системы, привилегии, управление процессами, файловая система, подключение новых пользователей.
Лекция 3 Организация дисков; монтирование и размонтирование файловых систем; даемоны, сигналы, уничтожение процессов; подключение новых пользователей;
Процессы и потоки. Процессы В общем представлении, процесс - это программа, выполняющаяся в оперативной памяти компьютера. Реально, все гораздо сложней.
Основы UNIX-подобных операционных систем на примере Debian GNU/Linux.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
ДОСТУП К ФАЙЛАМ. Доступ к файлам Важным шагом в вопросе ввода-вывода является написание программы, работающей с файлом, который не связан заранее с программой.
Скрипкин Владимир Евгеньевич. Корневой каталог / «слэш». Корневой каталог в linux по аналогии диск C: в WINDOWS Пример содержимого корневого каталога.
Протокол эмуляции удаленного доступа терминала Telnet.
Основы информатики Лекция. Функции Заикин Олег Сергеевич
Лабораторная работа 7. Работа с динамической памятью, строками и файлами.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Защита файлов Права доступа. Смена прав пользователя, группы. Маска файла. Смена владельца и группы
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Текстовые файлы Вербицкая Ольга Владимировна, Заозерная школа 16.
Текстовые файлы. Определение. Файлы символьных данных называются текстовыми файлами (можно также сказать что это «файлы байтов»). Структура текстового.
Демидов А.В г. Операционные системы Лекция 4 Работа с файлами.
Транксрипт:

Среда исполнения Системные вызовы и библиотеки Unix SVR4

ЦЕЛИ РАЗДЕЛА Определить термин процесс Описать среду исполнения процесса Получать и изменять информацию о среде исполнения процесса с помощью системных вызовов и стандартных библиотечных функций.

Процесс Экземпляр исполнения программы в операционной системе с атрибутами, содержащимися в структурах данных операционной системы Новый процесс для каждого запуска программы Каждый процесс имеет свой уникальный идентификатор процесса pid (Process ID)

Основные структуры процесса TEXT (код программы) DATA (инициализированные статические данные) BSS (неинициализированные статические данные) STACK Куча Динамические сегменты User Area (дескриптор процесса в ядре) –Стек процесса в ядре –Дескрипторы открытых файлов –Атрибуты процесса

Адресное пространство процесса x86 * 32-bit Kernel's Virtual memory layout. * * | Кеrnel Context | * 0xC | |- segmap_start (floating) * | Red Zone | * 0xC | |- kernelbase / userlimit (floating) * | | || * | Shared objects | \/ * | | * : : * | user heap | (grows upwards) * | user data | * | | * | user text | * 0x | | * | user stack | * : : * | invalid | * 0x

Адресное пространство процесса x64 * 64-bit Kernel's Virtual memory layout. (assuming 64 bit app) * * | Kernel Context | * 0xFFFFFE | | * | Red Zone | * 0xFFFFFD | |- KERNELBASE (lower if > 1TB) * | User stack |- User space memory * | | * | shared objects, etc | (grows downwards) * : : * | | * 0xFFFF | | * | | * | VA Hole / unused | * | | * 0x | | * | | * : : * | user heap | (grows upwards) * | | * | user data | * | | * | user text | * 0x | | * | invalid | * 0x

Пользовательский стек Переменные среды (environ) Позиционные аргументы (argv) Запись активации main Записи активации функций Ограничен защитной областью

Еще информация о процессах Каждый процесс, кроме init, имеет родителя init – процесс с pid==1, обычно /sbin/init init запускается при старте системы ядром и запускает все остальные процессы В Unix SVR4 init определяет, что запускать, по файлу /etc/inittab

Терминальные сессии Физические терминалы обслуживаются демоном ttymon (в старых юниксах – getty). Виртуальные терминалы (сессии xterm, ssh) создаются динамически соответствующими сервисами, например для сессий ssh – демоном sshd При входе пользователя в систему создается сессия (id сессии равен id процесса, который создал эту сессию), принимается авторизация, устанавливается идентификатор пользователя и запускается шелл. Шелл берется из учетной записи пользователя, например из /etc/passwd, NIS или LDAP У большинства из вас шелл - /bin/bash Шеллы с управлением заданиями (csh, zsh, ksh, bash) создают на каждую команду так называемую группу процессов (будет разбираться в теме «управление терминальными устройствами»).

Атрибуты процесса В пользовательской области (в ядре) процесс –номер –родитель –группа –терминал –сессия –ограничения (например, время ЦП, открытые файлы). пользователь –идентификатор (реальный/эффективный) –группа (реальный/эффективный). файловая система –открытые файлы –текущая директория –ограничения (umask, ulimit) –корневая директория (setroot) обработка сигналов В пользовательском стеке параметры командной строки экспортированные shell-переменные (переменные среды)

Доступ к атрибутам процесса ИнформацияМетод Идентификатор процесса getpid(2) getppid(2) getpgid(2) setpgid(2) getsid(2) setsid(2) Пользователь/группа getuid(2) geteuid(2) getgid(2) getegid(2) setuid(2) setgroups(2)+ getgroups(2) initgroups(3C)+ Ресурсы процесса getrlimit(2) setrlimit(2) Терминал процесса ttyname(3C) + доступно только суперпользователю (uid==0)

Доступ к переменным среды третий аргумент main(): main(int argc, char **argv, char *envp[]) /* or char **envp */ внешняя переменная environ extern char **environ ; библиотечные функции getenv(3C) и putenv(3C)

Переменные среды PATH – список каталогов, где ищутся исполняемые файлы TERM – тип терминала (используется экранными редакторами и рядом других программ) TZ – временная зона HOME – ваш домашний каталог USER – имя пользователя

PATH -bash-3.00$ echo $PATH /opt/SUNWspro/bin:/usr/sfw/bin:/ opt/csw/bin:/usr/bin:/opt/SUNWs pro/bin:/opt/sfw/bin:/home/teac hers/fat/bin Текущий каталог в пути нужно добавлять явно: export PATH=$PATH:. Или =$PATH: Лучше не добавлять, особенно в начало

TZ Asia/Novosibirsk PST8PDT (Pacific Standart Time, 8 часов на запад от Гринвича, с переводом летнего/зимнего времени) QQQ-6 (три любые буквы, 7 часов на восток от Гринвича, перевода летнего/зимнего времени нет) Пустая строка – брать из /etc/TIMEZONE

TZ (продолжение) Каждый процесс живет в своей временной зоне, определяемой его значением TZ Ядро живет по Гринвичу (GMT, UTC). time(2) возвращает время в секундах по Гринвичу Временные штампы (например, даты файлов) тоже отсчитываются по Гринвичу Очень удобно при удаленном входе в систему.

Выделение опций командной строки getopt(3C) ИМЯ getopt - выделить опцию из командной строки СИНТАКСИС #include int getopt (int argc, char *const *argv, const char *optstring); extern char *optarg; extern int optind, opterr, optopt; ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ буква верной опции '?' если обнаружена недопустимая опция -1 если все опции были обработаны.

Использование getopt(3C) Вызывается в цикле, пока не обработает все опции. Опция – аргумент, начинающийся с символа - Getopt(3C) разбирает однобуквенные опции, например, ls –l, ls –lh Опция может иметь аргумент, например cc –o a.out, cc –oa.out В GNU libc есть getopt_long, который понимает опции вида --all стандартный getopt такой формы не имеет

Использование getopt(3C) int argc. Обычно первый аргумент main(). char **argv. Обычно второй аргумент main(). char *optstring. Это строка допустимых опций. Если у опции есть аргументы, то за этой опцией будет стоять двоеточие.

Использование getopt(3C) char *optarg. Когда getopt(3C) обрабатывает опцию, у которой есть аргументы, optarg содержит адрес этого аргумента. int optind. Когда getopt(3C) возвращает -1, argv[optind] указывает на первый аргумент не-опцию. int opterr. Когда getopt(3C) обрабатывает недопустимые опции, сообщение об ошибке выводится на стандартный вывод диагностики. Печать может быть подавлена установкой opterr в ноль. int optopt. Когда getopt(3C) возвращает '?', optopt содержит значение недопустимой опции.

Бит setuid доступ к ресурсам основывается на эффективном идентификаторе пользователя и группы с помощью механизма установки идентификатора пользователь может быть чьим-то "представителем" бит установки идентификатора для a.out устанавливается с помощью chmod(1), chmod(2) и open(2) Установка идентификатора пользователя –04711 восьмеричное число –u+s символьная запись для chmod(1) –rws--x--x выводит ls -l установка идентификатора группы –02711 восьмеричное число –g+s символьная запись для chmod(1) –rws--s--x выводит ls -l. Действует от начала исполнения процесса до конца или до использования setuid(2).