Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



Операційна система unix

Операційна система unix




Сторінка7/10
Дата конвертації10.03.2017
Розмір0.74 Mb.
1   2   3   4   5   6   7   8   9   10

Лабораторна робота №5

Тема: «Керування завданнями»

Мета


Оволодіння практичними навичками роботи з процесами — створення і знищення, керування процесами і їхній аналіз

Завдання для самостійної підготовки

1. Вивчити:


  • поняття процесу і його характеристики;

  • вивід на екран списку процесів і його аналіз;

  • фонові й активні процеси;

  • пріоритет процесів і його зміна;

  • відправлення сигналів процесам, організація перехоплення сигналів;

  • виконання завдань у системі в заданий час і з заданою періодичністю.

2. Ознайомитись з такими командами UNIX: ps, kill, fg, bg, jobs, crontab, at. Зверніть увагу на використання параметру командного рядка "&" .

Порядок виконання роботи


По номеру варіанта вибрати завдання і відповідно до методичних вказівок, за матеріалами рекомендованої літератури і конспекту лекцій виконати завдання і оформити звіт по роботі.

Зміст звіту


  1. Початкові дані і постановка задачі.

  2. Текст програми.

  3. Висновки.


Методичні вказівки

Команди, що поступають від користувачів, називають завданнями, щоб відрізнити їх від системних процесів. Багато командних оболонок (включаючи bash) мають функції управління завданнями. Управління завданнями дозволяє запускати одночасно декілька команд або завдань і здійснювати управління ними. Є можливість:



  • запускати команди у фоновому режимі, одночасно виконуючи інші команди;

  • переривати команди;

  • відновлення її роботи з тієї точки, де вона була перервана.

Процеси мають декілька атрибутів, які дозволяють ОС управляти його роботою:

PID – ідентифікатор процесу це його унікальний номер, який присвоюється йому системою при створенні.

Ідентифіка́тор (identifier) - 1. Ознака, яка служить для ідентифікації особи чи предмета, що розпізнається. // Захисна ознака для встановлення справжності банкноти чи цінного папера.

PPID – ідентифікатор батьківського процесу

NI приорітет – відносний пріорітет враховується при створенні черги на виконання планувальником

TTY термінальна лінія – Термінал або псевдотермінал, асоційований з процесом. Процеси – демони його не мають.

EUID – эфективий ідентифікатор служить для визначення прав доступу до системних ресурсів.

USER – ім’я власника процесу;

CPU – частка часу центрального процесоравідсотках), виділеного даному процесу;

Відсо́ток або також проце́нт (лат. «pro centum» - сота частка, на сто). Відсотком якого-небудь числа називають соту частину цього числа.
Центральний процесор, ЦП (англ. Central processing unit, CPU) - функціональна частина комп'ютера, що призначена для інтерпретації команд.

MEM – доля реальної пам’яті (в відсотках), використовувана даним процесом;

VSZ – віртуальний розмір процесу (в кілобайтах);

RSS – розмір резидентного набору (кількість 1K-сторінок в пам’яті);

STIME – час старту процесу;

TTY – вказівка на термінал, з якого запущений процес;

S или STAT – статус процесу;

PRI – пріоритет планування ;

Кілоба́йт (кбайт, кБ) - одиниця вимірювання обсягу даних, що дорівнює 210 стандартним (8-бітним) байтам або 1024 байтам. Застосовується для вказання обсягу пам'яті у різних електронних пристроях.
Пріоритет (рос. приоритет, англ. priority, нім. Priorität f) -

CMD ім’я команди
В полі “Статус процесу”, можуть стояти наступні значення:

R – здійснимий процес, чекаючий тільки моменту, коли планувальник завдань виділить йому черговий квант часу;

S – процес "спить";

D – процес знаходиться в станы підкачки на дискі;

T – зупинений процес;

Z – процес-зомбі.


Команди керування завданнями
Команда ps – список процесів, що протікають в даний час, і інформацію про них

-ax отримати список всіх процесів

-e всі процеси в системі, використовуючи стандартну форму виводу

-o вибір окремих полів для виводу

-f всі процеси в системі, із застосуванням графічного відображення відношення "предок-нащадок":

ps –eo pid,user,cmd

ps -ef

ps -af
& - переводить команду в фоновий режим



Для запуску процесу у фоновому режимі в кінці командного рядка запуску програми додають символ &.
Ді́лення (також діління́)- в математиці, бінарна операція, що обернена множенню.

Тільки пріоритетні процеси дозволяють читання з терміналу або запис на нього. При спробі фонового процесу що-небудь прочитати з терміналу або записати на нього його драйвер посилає сигнал SIGTTIN (SIGTTOU), який, будучи отриманий, зупиняє процес.


Команда jobs - видає список фонових завдань.

Показує завдання, запущені з поточного екземпляра shell. На початку кожного рядка виведення цієї команди вказується порядковий номер завдання у вигляді числа в квадратних дужках. Після номеру вказується стан процесу:

stopped (зупинений),

running (виконується ) або

suspended (призупинений).
fg % - переводить задачу з фонового в пріоритетний режим

bg %- переводить задачу в фоновому режимі зі стану Stoppped в стан Running.

[ctrl z] – перериває задачу і переводить її в фоновий режим в стан “Stopped”

kill % - відміняє завдання, яке виконується в фоновому режимі


Команда top

Команда ps дозволяє зробити як би "миттєвий знімок " процесів, запущених в системі. На відміну від ps команда top відображає стан процесів та їх активність "в реальном режимі часу".

Активність - поняття, яке визначає темп руху і інтенсивність дій речовин, явищ і живих організмів. Активність визначається в порівнянні

Вміст вікна оновлюється кожні 5 секунд. Список процесів може бути відсортований по використовуваному часу ЦПУ (за умовчанням), по використанню пам'яті, по PID, за часом виконань. Перемикати режими відображення можна за допомогою команд, які програма top сприймає. Це наступні команди (просто натискайте відповідні клавіші, тільки з урахуванням регістру, тобто разом з клавішею Shift):

сортування по PID;

— сортувати процеси за віком;


— сортувати процеси по використанню CPU;

— сортувати процеси по використанню пам’яті;

— сортування за часом виконання.
Команда renice

renice <приорітет>

Служить для зміни значення nice для процесів, що вже виконуються. Пріоритет для кожного процесу встановлюється в той момент, коли процес породжується. Пріоритет процесу визначається так званим "значенням nice", яке лежить в межах від 20 (найменший пріоритет, процес виконується тільки тоді, коли ніщо інше не займає процесор), до -20 (найвищий пріоритет)
Команда kill

kill [-сигн] PID [PID..]


Сигнали — це засіб , за допомогою якого процесам можна передати повідомлення про деякі події в системі. Самі процеси
теж можуть генерувати сигнали, за допомогою яких вони передають певні повідомлення ядру і іншим процесам. За допомогою сигналів можна здійснювати такі акції управління процесами, як припинення процесу, запуск припиненого процесу, завершення роботи процесу. Всього в Linux існує 63 різних сигнали, їх перелік можна подивитися по команді.

kill –l
Таблиця 7 – Основні сигнали



Ім’я

Опис

1

HUP

Hangup. Відбій

2

INT

Interrupt. В випадку виконання простих команд визиває

припинення виконання, в інтерактивних програмах –

припинення активного процесу


9

KILL

Завжди припиняє виконання процесу

15

TERM

Software Termination. Вимога закінчити процес

(програмне завершення)



18

CONT

Продовження виконання припиненого процесу

19

STOP

Припинення виконання процесу


Віртуальна файлова система /proc

Unix підтримує файлова система /proc. За допомогою цієї файлової системи можна отримати безліч цінних відомостей про стан різних пристроїв і системних об'єктів (модулів ядра, наприклад) а також про процеси, що виконуються (власне, звідси і відбувається її назва).

Файлова система /proc являється механізмом для ядра і його модулей, які дозволяють надіслати інформацію процесам ( звідси і назва /proc ). За допомогою цієї віртуальної файлової системи Ви можете працювати з внутрішніми структурами ядра, отримувати корисну інформацію про процеси і змінювати установки ( міняючи параметри ядра ) на льоту. Файлова система /proc розташовується в пам'яті на відміну від інших файлових систем, які розташовуються на диску.

Данні про кожен процес зберігаються в спеціальній піддиректорії директорії /proc, з ім’ям, яке відповідає численому значенню ідентифікатора процесу. В директорії процесу знаходяться декілька файлів і піддиректорій, з яких можна черпнути данні про нього:


Таблиця 8 – Файли файлової системи /proc


Элемент

Тип

Зміст

сmdline

файл

Командний рядок, який використовувався при запуску процесу.

сwd

символічна ссилка

Вказує на директорію процесу

environ

файл

Список змінних оточення для данного процесу

exe

символічна ссилка

Вказує на файл, який зберігає образ процесу

fd

директорія

Ссилки на файли,які використовуються процесом

root

гнучка ссилка

Вказує на корінь файлової системи процессу

stat(status)

файл

Різні відомості про процес. змінні оточення цього процесу, а також ідентифікатор користувача ( UID ) і групи ( GID ) того, що запустив процес, ідентифікатор батьківського процесу ( PPID ) і поточний стан процесу (State)( наприклад "Sleeping" або "Running" ).

В директорії /proc є декілько файлів¸ які описують систему взагалі



cpuinfo

файл

інформація про процесор ( модель, сімейство, розмір кеша і т.д. model name cpu MHz cache size )

meminfo

файл

інформація про RAM, розмірі свопа и т.д. (MemTotal – скільки пам'яті всього)

Усередині каталога /proc - каталоги, назви яких складаються з цифр - це і є інформація про процеси - назву каталога відображає ідентифікатор процесу ( PID ). Усередині цих каталогів знаходяться файли, що містять важливу інформацію про процеси, - стан, оточення і т.д.

Якщо ви не root, то доступ до багатьох піддиректорій процесів буде вам заборонено, але до своєї власної піддиректорії процес може отримати доступ завжди.
Приклад запуску фонових завдань

1. Створимо сценарій sc1, який працює довго

Наприклад:

while (true)

do

date >> log



sleep 60

done


2. Запуск на виконання в фоновому режимі

$ sc1 &


3. Команда jobs видає їх список

$ jobs


[1] … sc1 відпрацьовується зараз

4. Переведемо з фонового в пріоритетний:

$ fg %1

5. Переведемо з пріоритетного в фоновий, для цього треба призупинити



[ctrl z]

$ jobs


[1] Stopped

6. Призупинене завдання можна поновити і в придбаному , і в фоновому режимі.

$ bg %1

$ jobs


7. Якщо треба зупинити завдання, що виконується у фоновому режимі, це можна зробити за допомогою команди kill

$ jobs


$ kill %1

$ jobs
Команда at - відкладене виконання.

Замість того, щоб переводити команду у фоновий режим, можна вказати час, коли її потрібно виконати.

$ at <аргумент>



<команда>

ctrl-D
<аргумент>: момент часу.

Момент часу - точка на часовій осі. Про події, що відповідають одному моменту часу, говорять як про одночасні.

am – до півдня

pm - після


Можна вказати дату, а якщо її немає, передбачається поточний день. Наприклад:

1. $ at 11:00 am в 11 ранку виведеться Hello

echo Hello

ctrl-D


2. Можна використовувати скрипт

echo Hello > sc1

$ at 13:15 < sc1

$ at 13:15 -f sc1

$ at noon -f sc1 – о півдні

$ at noon tomorrow -f sc1 – о півдні завтра

$ at noon Friday -f sc1 - о півдні в п’ятницю

$ at 8:15 pm Nov 29 -f sc1 - в 8.15 вечора 29 листопада



Завдання

  1. Створити скрипт, що виводить у файл поточну дату кожну хвилину.
    Листопа́д (падоли́ст) - одинадцятий місяць року в григоріанському календарі, він має 30 днів.


  2. За допомогою команд fg, bg, kill виробити наступні дії:

  • запустити скрипт у фоновому режимі;

  • перевести його з фонового режиму в пріоритетний;

  • перевести скрипт з пріоритетного режиму у фоновий з призупиненням;

  • відновити роботу скрипта у фоновому режимі;

  • завершити роботу скрипта;

  • після кожної виконаної дії перевіряти стан скрипта, занести це в протокол лабораторної роботи.

  1. Запустити скрипт у фоновому режимі. Отримати наступні відомості про нього:

  • ідентифікатор процесу;

  • ідентифікатор батьківського процесу;

  • пріоритет;

  • ефективний ідентифікатор;

  • ім'я власника процесу;

  • доля часу центрального процесора;

  • доля реальної пам'яті;

  • віртуальний розмір процесу;

  • розмір резидентного набору;

  • статус процесу;

  • ім'я команди.

  1. Запустити команду top. По її виводу знайти процеси, які більше всіх використовують процесор і займають пам'ять.

  2. За допомогою команди kill припинити, а потім завершити виконання скрипта, що виконується у фоновому режимі.

  3. Після посилки кожного сигналу за допомогою команди jobs і ps контролювати стан процесу. Занести це в протокол лабораторної роботи.

  4. За допомогою файлової системи /proc з'ясувати

  • розмір оперативної пам'яті;

  • марку і частоту процесора.

  1. Запустити програму mc, визначити її PID і за допомогою /proc взнати як був запущений процес, його PPID, UID і GID користувача, що запустив, поточний статус процесу.


Контрольні запитання

  1. Що такое процес ?

  2. Які атрибути є у процеса ?

  3. В яких станах може знаходитися процес?

  4. Що таке фоновий режим ?

  5. Які команди служать для роботи з задачами в фоновому режимі ?

  6. Які команди дозволяють отримати інформацію про процеси ?

  7. Які сигнали ви знаєте ? Їх призначення ?

  8. Призначення файлової системи /proc?


1   2   3   4   5   6   7   8   9   10



  • Завдання для самостійної підготовки
  • Порядок виконання роботи
  • Зміст звіту