Файл: Министерство образования и науки российской федерации университет итмо д. А. Зубок, А. В. Маятин.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 1252
Скачиваний: 2
СОДЕРЖАНИЕ
Виртуальная среда для выполнения лабораторных работ
Лабораторная работа №1. Основы использования консольного интерфейса ОС GNU/Linux.
Задание на лабораторную работу
Лабораторная работа №2. Обработка текстовых потоков в ОС GNU/Linux
Управление вводом-выводом команд (процессов)
Работа со строками (внутренние команды bash)
Работа со строками (внешние команды)
Задание на лабораторную работу
Лабораторная работа №3. Мониторинг процессов в ОС
Получение общих сведений о запущенных процессах
Получение детальных сведений о запущенных процессах
Получение данных об оперативной памяти
Задание на лабораторную работу
ProcessID=PID : Parent_ProcessID=PPID : Average_Time=avg_atom.
Лабораторная работа №4. Управление процессами в ОС
Директивы (команды) объединения команд
Команды для управления процессами
минута час день_месяца месяц день_недели команда
Организация взаимодействия двух процессов
Задание на лабораторную работу
Лабораторная работа №5. Работа с файлово-каталожной системой в ОС GNU/Linux
Основные команды для работы с файлами и каталогами
Задание на лабораторную работу
Лабораторная работа №6. Консольный интерфейс ОС
Основные команды, необходимые для выполнения лабораторной работы:
if [not] errorlevel число команда [else команда]
if [not] строка1==строка2 команда [else команда]
if [not] exist имя_файла команда [else команда]
for {%переменная | %%переменная} in (множество) do
минута час день_месяца месяц день_недели команда
Допустимыезначения:| минута | от | 0 | до | 59 | |
| час | от | 0 | до | 23 | |
| день_месяца | от | 1 | до | 31 | |
| месяц | от | 1 | до | 12 | (или три буквы от jan до dec, независимо от регистра) |
| день_недели | от | 0 | до | 6 | (0 это воскресенье или три буквы от sun до sat) |
Организация взаимодействия двух процессов
Существует несколько вариантов организации взаимодействия процессов.Посколькусутьвзаимодействиясостоитвпередачеданныхи/илиуправленияотодногопроцессакдругому,рассмотримдвараспространенныхвариантаорганизациитакоговзаимодействия:передачуданныхчерезфайлипередачууправлениячерез сигнал.
Взаимодействие процессов через файл
Длядемонстрациипередачиинформациичерезфайлрассмотримдваскрипта – «Генератор» и «Обработчик». Требуется считывать информацию сконсоли с помощью процесса «Генератор» и выводить ее на экран с помощьюпроцесса «Обработчик», причем таким образом, чтобы считывание генераторомстроки «QUIT» приводило к завершению работы обработчика. Каждый скриптзапускаетсявсвоейвиртуальнойконсоли.Переключаясьмеждуконсолями,можноуправлятьскриптами инаблюдатьрезультаты ихработы.| Генератор | Обработчик |
| #!/bin/bash while true; do read LINE echo $LINE >> data.txt done | #!/bin/bash (tail -n 0 -f data.txt) | while true; do read LINE; case $LINE in QUIT) echo "exit" killall tail exit ;; *) echo $LINE ;; esac done |
tail-fсчитываниеизфайлабудетпроисходитьтольковслучаедобавленияинформациивэтотфайл.Приэтомключ-n 0 предотвращаетчтениеизфайла,покаегосодержимоенеобновилосьпослезапускакомандыtail. Посколькунеобходимо передавать выход команды tail на вход скрипта «Обработчик»,используемконструкцию(команды)| Круглыескобкипозволяютзапуститьнезависимыйподпроцесс(дочернийпроцесс)внутриродительскогопроцесса«Обработчик», а оператор конвейера в конце позволит направить выход этогоподпроцесса на вход родительского процесса. Таким образом, команда read вэтомскриптечитаетвыходкомандыtail. Остальнаячастьскриптаосновываетсянаконструкциях,изученныхвпредыдущихлабораторныхработах, и не требует детального рассмотрения. Исключение составляет толькокомандаkillalltail. Сеепомощьюзавершаетсявызванныйвподпроцессепроцессtail передзавершениемродительскогопроцесса.Использование killall в этом случае используется для упрощения кода, ноне всегда является корректным. Лучше определять PID конкретного процессаtail,вызванноговскрипте,и завершатьегоспомощьюкомандыkill.
Взаимодействие процессов с помощью сигналов
Сигналыявляютсяосновнойформойпередачиуправленияотодногопроцессакдругому.Существуют«стандартные»(системные)сигналы,имеющие фиксированные имена и названия (например, SIGTERM, SIGKILL ит.д.), но существует возможность передавать процессу и вновь создаваемый,пользовательский сигнал.Таблица1.Частоиспользуемыесигналы
| № | Имя | Описание | Можно перехватывать | Можно блокировать | Комбинация клавиш |
| 1 | HUP | Hangup. Отбой. Получение этого сигнала как правило означает, что завершил работу терминал из которого был запущен процесс и следовательно процесс тоже должен быть завершен. | Да | Да | |
| 2 | INT | Interrupt. В случае выполнения простых команд вызывает прекращение выполнения, в интерактивных программах - прекращение активного процесса | Да | Да | или |
| 3 | QUIT | Как правило, сильнее сигнала Interrupt | Да | Да | |
| 4 | ILL | Illegal Instruction. Центральный процессор столкнулся с незнакомой командой (в большинстве случаев это означает, что допущена программная ошибка). Сигнал отправляется программе, в которой возникла проблема | Да | Да | |
| 8 | FPE | Floating Point Exception. Вычислительная ошибка, например, деление на ноль | Да | Да | |
| 9 | KILL | Всегда прекращает выполнение процесса | Нет | Нет | |
| 11 | SEGV | Segmentation Violation. Доступ к недозволенной области памяти | Да | Да | |
| 13 | PIPE | Была предпринята попытка передачи данных с помощью конвейера или очереди FIFO, однако не существует процесса, способного принять эти данные | Да | Да | |
| 15 | TERM | Software Termination. Требование закончить процесс (программное завершение) | Да | Да | |
| 17 | CHLD | Изменение статуса порожденного процесса | Да | Да | |
| 18 | CONT | Продолжение выполнения приостановленного процесса | Да | Да | |
| 19 | STOP | Приостановка выполнения процесса | Нет | Нет | |
| 20 | TSTR | Сигнал останова, генерируемый клавиатурой. Переводит процесс в фоновый режим | Да | Да | |
В случае системных сигналов, как правило, процесс имеет обработчикэтого сигнала – код, который выполнится в случае получения процессом этогосигнала. Для использования пользовательских сигналов необходимо написатьсвойобработчик.Дляобработкисигналоввsh(bash)используетсявстроеннаякомандаtrapсформатом