- •«Московский технический университет связи и информатики» (мтуси)
- •1. Знакомство с командной строкой Linux 15
- •7. Ядро Linux 51
- •Цель и задачи курсовой работы
- •Введение
- •Краткая теория
- •Знакомство с командной строкой Linux
- •Работа с файлами и каталогами. Управление пользователями
- •Ядро Linux
- •Управление процессами
- •Управление памятью
- •Диски и файловые системы
- •Основная часть
- •Знакомство с командной строкой Linux
- •Команды top, free, ps
- •Домашний каталог
- •Создание директорий
- •Команда tree
- •Создание скриптов
- •Cкрипт на языке bash c выводом меню, состоящего из пунктов выбора выводимой информации.
- •Работа с файлами и каталогами. Управление пользователями
- •Ядро Linux
- •Анализ системных вызовов при выполнении команд с помощью утилиты strace.
- •Системные вызовы вашей̆ программы.
- •Сборка и загрузка модуля в ядро Linux.
- •Управление процессами
- •Мониторинг производительности системы
- •Создание скрипта для получения статистики
- •Создание автозапускаемой службы
- •Создание таймера
- •Управление памятью
- •Получение карты виртуальной памяти процесса
- •Настройка файла подкачки
- •Тестирование памяти
- •Изучение параметра swappiness
- •Диски и файловые системы
- •Разметка диска, создание файловой системы
- •Создание raid-массива
- •Получение информации о файловой системе
- •Работа с логическими разделами дисков (lvm)
- •Vgextend myvg /dev/sdg Добавлен второй диск в vg
- •Заключение
- •Используемая литература
Ядро Linux
Используя утилиту и одноименную команду strace возможно проверить ее наличие, справку и конкретные параметры вызовов системы или конкретно выбранного процесса для на наблюдения, включая входные данные, вывод, используя дополнительные ключи, возможно опциональное отображение иных свойств: в ходе выполнения лабораторной работы, был использован -T для отображения времени.
Наблюдение состоит из двух этапов: сначала за системной командой, указанной в соответствии с вариантом, а затем за собственной программой. В обоих случаях составлены таблицы с наиболее распрастраненными вызовами, такими как: execve, brk, mmap, mprotect, access, open, fstat, read, close, write, exit_group, wait4, ioctl, clone, rt_sigaction, rt_sigprocmask, rt_sigreturn. Их основные свойства были также описаны в таблицах.
Анализ системных вызовов при выполнении команд с помощью утилиты strace.
Команда top показывает список работающих в данный момент процессов и информацию о них, включая использование ими памяти и процессора.
Рисунок 4-3-1. Проверка наличия утилиты strace.
Рисунок 4-3-2. Справка об использовании утилиты strace
Рисунок 4-3-3. Запуск strace для команды date. Для заполнения таблицы, потребуеится знать время затраченное на выполнение вызова. Обычно в выводе strace нет точного времени выполнения вызова. Это связано с тем, что время выполнения может быть очень маленьким (в микросекундах), и его трудно измерить точно. Кроме того, время выполнения зависит от многих факторов, таких как нагрузка на систему, скорость диска и т.д. Если нужно приблизительно оценить время выполнения, можно попробовать использовать опцию -T в strace, которая будет показывать время, затраченное на каждый вызов.
Таблица 3. Результаты анализа
№ |
Системный вызов |
Описание вызова |
Входные параметры |
Время выполнения, мкс |
Возвращаемое значение |
1. |
execuve |
Запускает новую программу, заменяя текущий процесс. |
date |
0.001669 |
0 |
2. |
mmap |
для выделения памяти |
NULL - Указывает, что ядро должно выбрать адрес для выделения памяти. |
0.000143 |
7c4c0d1e8000 |
3. |
access |
Проверяет доступность файла по указанному пути. mode определяет тип доступа (чтение, запись, выполнение). |
Путь /etc/ld.so.preload |
0.000016 |
-1 ENOENT (No such file or directory) |
4. |
openat |
Открывает файл для чтения, записи или и того и другого. dirfd указывает на директорию, в которой нужно искать файл. flags определяет тип доступа (чтение, запись, создание). |
Путь /etc/ld.so.cache
O_RDONLY|O_CLOEXEC: Флаги, которые указывают на то, что файл нужно открыть только для чтения, а дескриптор файла должен быть автоматически закрыт при выполнении execve |
0.000044 |
3 |
5. |
fstat |
Получает информацию о файле, открытом с помощью дескриптора fd. Информация о файле хранится в структуре stat. |
3: Дескриптор открытого файла (получен в openat). {st_mode=S_IFREG|0644, st_size=63567, ...}: Структура stat, в которую записывается информация о файле. |
0.000009 |
0 |
6. |
close |
Закрывает файл, открытый с помощью дескриптора fd. |
3: Дескриптор открытого файла |
0.000009 |
0 |
7. |
read |
используется для чтения из файла |
3: Дескриптор открытого файла
|
0.000055 |
832 |
Имя вызова: В каждой строчке текста, которая описывает системный вызов, первым идет его имя. Например, execve, brk, mmap, mprotect, access, open, fstat, read, close, write, exit_group.
Параметры: После имени вызова в скобках идут параметры, которые передаются в этот вызов. Например, execve("/bin/date", ["date"], [/ 53 vars /]). Здесь /bin/date – это путь к исполняемому файлу, ["date"] – аргументы, которые передаются программе, а [/ 53 vars /] – это окружение.
Возвращаемое значение: В конце строки часто указывается результат выполнения вызова. Это результат выполнения системного вызова. Он может быть:
0 (ноль): Вызов прошел успешно.
-1 (минус один): Вызов завершился с ошибкой. В этом случае в переменной errno (номер ошибки) хранится код ошибки, который можно расшифровать с помощью perror(errno).
Целое число: Например, в open возвращается дескриптор открытого файла.
Адрес памяти: Например, в mmap возвращается адрес выделенной памяти.
Это может быть число, адрес памяти или специальный символ (например, "?").
Рисунок 4-3-4. Запись вывода команды sudo strace -T date в файл. В активной директории появился новый файл.
Рисунок 4-3-5. В домашнем каталоге выполнение записи в файл недоступно в ОС Ubuntu24.
Рисунок 4-3-6. Получена статистика выполненных системных вызовов.
Рисунок 4-3-7. Для выполнения трассировки системных вызовов для работающего процесса, необходимо узнать его PID. При помощи команды top получен список самых активных процессов с их идентификаторами.
Рисунок 4-3-8. Команда sudo
strace
-p
724
вывела трасировку
процесса NetworkManager.
