Файл: Министерство образования и науки российской федерации университет итмо д. А. Зубок, А. В. Маятин.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 314

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Содержание

Введение

Виртуальная среда для выполнения лабораторных работ

Лабораторная работа №1. Основы использования консольного интерфейса ОС GNU/Linux.

Рассматриваемые вопросы:

Методические рекомендации:

Арифметические операторы:

Условный оператор.

Операции сравнения:

Задание на лабораторную работу

Лабораторная работа №2. Обработка текстовых потоков в ОС GNU/Linux

Рассматриваемые вопросы

Методические рекомендации:

Управление вводом-выводом команд (процессов)

0 = stdin

2 = stderr

Работа со строками (внутренние команды bash)

$position.

Работа со строками (внешние команды)

Классы символов POSIX

Задание на лабораторную работу

Лабораторная работа №3. Мониторинг процессов в ОС

Рассматриваемые вопросы

Методические рекомендации:

Идентификация процессов

Получение общих сведений о запущенных процессах

Получение детальных сведений о запущенных процессах

Обработка данных о процессах

Получение данных об оперативной памяти

Задание на лабораторную работу

ProcessID=PID : Parent_ProcessID=PPID : Average_Time=avg_atom.

Лабораторная работа №4. Управление процессами в ОС

Рассматриваемые вопросы

Методические рекомендации:

Директивы (команды) объединения команд

{

Команды для управления процессами

минута час день_месяца месяц день_недели команда

Организация взаимодействия двух процессов

trap action signal Команде нужно передать два параметра: действие при получении сигнала и сигнал, для которого будет выполняться указанное действие. Обычно в качестве действия указывают вызов функции, описанной выше в коде скрипта.С помощью команды trap можно не только задать обработчик для пользовательского сигнала, но и подменить обработчик для некоторых из системных сигналов (кроме тех, перехват которых запрещен). В этом случае обработка сигнала перейдет к указанному в trap обработчику.Для демонстрации передачи управления от одного процесса к другому рассмотрим еще одну пару скриптов.

Задание на лабораторную работу

Лабораторная работа №5. Работа с файлово-каталожной системой в ОС GNU/Linux

Рассматриваемые вопросы

Методические рекомендации

Основные команды для работы с файлами и каталогами

./../../home/user/file будет соответствовать пути к файлу в домашнем каталоге, как и описанный выше пример абсолютного пути.Для того, чтобы перейти к корню файловой системы можно использовать команду cd /Для обозначения домашнего каталога активного пользователя можно использовать символ . Тогда запись cd

Задание на лабораторную работу

Лабораторная работа №6. Консольный интерфейс ОС

Рассматриваемые вопросы

Методические рекомендации

Основные команды, необходимые для выполнения лабораторной работы:

if [not] errorlevel число команда [else команда]

if [not] строка1==строка2 команда [else команда]

if [not] exist имя_файла команда [else команда]

for {%переменная | %%переменная} in (множество) do

Задание на лабораторную работу

LAB6.

LAB6.

Рекомендуемая литература

Кафедра информационных систем

ОПЕРАЦИОННЫЕ СИСТЕМЫ

методические указания

минута час день_месяца месяц день_недели команда


Допустимые значения:

минута

от

0

до

59




час

от

0

до

23

день_месяца

от

1

до

31

месяц

от

1

до

12

(или три буквы от jan до

dec, независимо от регистра)

день_недели

от

0

до

6

(0 это воскресенье или три буквы от sun до sat)


Если в соответствующее поле поместить символ * это будет соответствовать любому возможному значению. Для полей можно указывать диапазоны значений, разделенных дефисом, например:
0 11 6-9 1-3 * echo "Hello World!" – вывод "Hello World!" в 11:00

в 6,7,8,9 дни января, февраля и марта.
0 */2 * * mon echo "Hello World!" вывод "Hello World!" каждый четный час каждого понедельника
tail – не только выводит последние n строк из файла, но и позволяет организовать "слежение" за файлом – обнаруживать и выводить новые строки, появляющиеся в конце файла.
sleep задает паузу в выполнении скрипта.


Организация взаимодействия двух процессов




Существует несколько вариантов организации взаимодействия процессов. Поскольку суть взаимодействия состоит в передаче данных и/или управления от одного процесса к другому, рассмотрим два распространенных варианта

организации такого взаимодействия: передачу данных через файл и передачу управления через сигнал.

Взаимодействие процессов через файл



Для демонстрации передачи информации через файл рассмотрим два скрипта – «Генератор» и «Обработчик». Требуется считывать информацию с консоли с помощью процесса «Генератор» и выводить ее на экран с помощью процесса «Обработчик», причем таким образом, чтобы считывание генератором строки «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

Скрипт «Генератор» в бесконечном цикле считывает строки с консоли и дописывает их в конец файла data.txt.

Скрипт «Обработчик» рассмотрим подробнее.
Команда tail позволяет считывать последние n строк из файла. Но один из наиболее распространенных вариантов ее использования организация

«слежения» за файлом. При использовании конструкции

tail -f считывание из файла будет происходить только в случае добавления информации в этот

файл. При этом ключ -n 0 предотвращает чтение из файла, пока его содержимое не обновилось после запуска команды tail. Поскольку необходимо передавать выход команды tail на вход скрипта «Обработчик», используем конструкцию (команды)| Круглые скобки позволяют запустить независимый подпроцесс (дочерний процесс) внутри родительского процесса

«Обработчик», а оператор конвейера в конце позволит направить выход этого подпроцесса на вход родительского процесса. Таким образом, команда read в этом скрипте читает выход команды tail. Остальная часть скрипта основывается на конструкциях, изученных в предыдущих лабораторных работах, и не требует детального рассмотрения. Исключение составляет только команда killall tail. С ее помощью завершается вызванный в подпроцессе процесс 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 с форматом