Студопедия — Що ж таке сигнали?
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Що ж таке сигнали?






Сигналы - це програмні переривання. Сигнали в ОС Linux використовуються як засоби синхронізації і взаємодії процесів і ниток. Сигнал є повідомленням, яке система посилає процесу або один процес посилає іншого. З точки зору користувача процесом отримання сигналу виглядає як виникнення переривання. Процес припиняє своє виконання, пі керування передається механізму обробки сигналу (обробщику). Після закінчення обробки сигналу
Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
Курсова робота 201-ТК
процес може відновити псвое виконання з тієї точки, на якій він був перерваний.

насамперед, кожен сигнал має власне ім ’ я та номер. Імена всіх сигналів починаються з послідовності SIG. пНапример, SIGALRM - генерується, коли таймер, встановленої функцією alarm(), відміряє вказаний проміжок часу. Linux підтримує 31 сигнал (номери від 1 до 31).

Сигнали можуть породжуватися різними умовами:

1. Генеруватися терміналом, при натисканні певної комбінації клавіш, наприклад, натискання Ctrl+C генерує сигнал SIGINT, таким чином можна перервати виконання програми, яка вийшла з під контролю;

2. Апаратні помилки - поділ на 0, помилка доступу до пам'яті та інші - також призводять до генерації сигналів. пЭти помилки зазвичай виявляються апаратним забезпеченням, яка сповіщає ядро про їх появу. ппісля цього ядро генерує відповідний сигнал і передає його процесу, який виконувався в момент появи помилки. пНапример, сигнал SIGSEGV надсилається процесу у разі спроби звернення до неправильного адресою в пам'яті.

3. Іншим процесом (у тому числі і ядром і системним процесом), виконали системний виклик передачі сигналу kill();

4. При виконанні команди kill.

Передачу сигналів процесу у випадках його створення будь-яким іншим процесом, можна розглядати як реалізацію псигнальных засобів зв'язку.

В разі отримання сигналу процес може запросити ядро виконати одну з трьох реакції на сигнал:

1. Примусово проігнорувати сигнал (практично будь-який сигнал може бути проігноровано, крім SIGKILL і SIGSTOP).

2. Провести обробку сигналу за замовчуванням: проігнорувати, зупинити процес, перевести в стан очікування до отримання пдругого спеціального сигналу або завершити роботу.

3. Перехопити сигнал (виконати обробку сигналу, специфіковану користувачем).

Типи сигналів і способи їх виникнення в системі жорстко регламентовані. Типи сигналів прийнято ставити числовими номерами, в діапазоні від 1 до 31 включно, але при програмуванні часто використовуються символьні імена сигналів.

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
Курсова робота 201-ТК
Управління завданнями

До команд управління завданнями відносяться:

  • jobs - Перераховує ваші завдання.
  • & - Виконати завдання у фоновому режимі.
  • Ctrl+Z - Призупинити виконання поточної (інтерактивної) завдання.
  • suspend - Призупинити командний процесор.
  • fg Перевести завдання в інтерактивний режим виконання.
  • bg Перевести припинену завдання у фоновий режим виконання.

Всі командні оболонки Linux мають можливість пуправления завданнями: можливість виконувати програми у фоновому (невидима багатозадачність) і інтерактивному (щоб програма ви- пполнялась як активний процес у сеансі вашого командного ппроцессора) режимах.

Завдання (job) - це просто робоча одиниця пкомандного процесора.

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

  • інтерактивне завдання (foreground job) - що Виконується в пкомандном процесорі, що займає сеанс командного процесора, ptak що ви не можете виконати іншу команду.
  • фонове завдання (background job) - що Виконується в командному процесорі, але не займає сеанс пкомандного процесора, так що ви можете виконати іншу пкоманду в цьому ж командному процесорі.
  • призупинити (suspend) - Тимчасово призупинити інтерактивний процес.
  • відновити (resume) - Повернутися до вьполнению discontinued завдання.

Зручно відправляти завдання, які не потребують втручання користувача. Прикладами таких завдань можуть служити пкомпиляция програмного забезпечення і складні обчислювальні програми. Для цих додатків важливо мінімізувати псуммарное час виконання в системі, завантаженої іншими процесами, породженими, зокрема, інтерактивними завданнями.

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
Курсова робота 201-ТК
якщо ви запустили з командного процесора команду пинтерактивном режимі і хочете негайно припинити виконання команди, введіть Ctrl-З. Командний процесор сприйме Ctrl-З як "зупинити виконання поточної задачі негайно". Тому, пякщо ви виводите дуже довгий файл (скажімо, командою cat) та пхочете зупинити висновок, натисніть Ctrl-З. Насправді поточної задачі ппо натискання Ctrl-З відправиться сигналу SIGINT.

Щоб припинити виконання програми, що працює в фоновом режимі, ви можете перевести її в інтерактивний режим з допомогою команди fg і потім натиснути Ctrl-З, або використовувати команду kill.

Механізмами синхронізації є засоби операційної системи, які допомагають розв'язувати основне завдання синхронізації — забезпечувати координацію потоків, які працюють зі спільно використовуваними даними. Якщо такі засоби — це мінімальні блоки для побудови багатопотокових програм, їх називають синхронізаційними примітивами.

 

Синхронізаційні механізми поділяють на такі основні категорії:

універсальні, низького рівня, які можна використовувати різними способами (семафори);

прості, низького рівня, кожен з яких пристосований до розв'язання тільки однієї задачі (м'ютекси та умовні змінні);

універсальні високого рівня, виражені через прості; до цієї групи належить концепція монітора, яка може бути виражена через м'ютекси та умовні змінні;

високого рівня, пристосовані до розв'язання конкретної синхронізаційної задачі (блокування читання-записування і бар'єри).

Семафори є найстарішими синхронізаційними примітивами з числа тих, які застосовуються на практиці.

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
Курсова робота 201-ТК
Семафор — це спільно використовуваний невід'ємний цілочисловий лічильник, для якого задано початкове значення і визначено такі атомарні операції.

Зменшення семафора (down): якщо значення семафора більше від нуля, його зменшують на одиницю, якщо ж значення дорівнює нулю, цей потік переходить у стан очікування доти, поки воно не стане більше від нуля (кажуть, що потік «очікує на семафорі» або «заблокований на семафорі»). Цю операцію називають також очікуванням — wait.

Збільшення семафора (up): значення семафора збільшують на одиницю; коли при цьому є потоки, які очікують на семафорі, один із них виходить із очікування і виконує свою операцію down. Якщо на семафорі очікують кілька потоків, то внаслідок виконання операції up його значення залишається нульовим, але один із потоків продовжує виконання (у більшості реалізацій вибір цього потоку буде випадковим). Цю операцію також називають сигналізацією — post.

Фактично значення семафора визначає кількість потоків, що може пройти через цей семафор без блокування. Коли для семафора задане нульове початкове значення, то він блокуватиме всі потоки доти, поки якийсь потік його не «відкриє», виконавши операцію up. Операції up і down можуть бути виконані будь-якими потоками, що мають доступ до семафора.

Окремий випадок: якщо семафор може приймати лише значення 0 і 1 (двійковий семафор), він фактично є змінною блокування.

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
Курсова робота 201-ТК

Семафор – універсальний засіб, що забезпечує як взаємне виключення, так і очікування події.

М'ютексом називають синхронізаційний примітив, що не допускає виконання деякого фрагмента коду більш як одним потоком. Фактично м'ютекс є реалізацією блокування на рівні ОС.

 

М'ютекс реалізує взаємне виключення. Його основне завдання — блокувати всі потоки, які намагаються отримати доступ до коду, коли цей код уже виконує деякий потік.

М'ютекс може перебувати у двох станах: вільному і зайнятому. Початковим станом є «вільний». Над м'ютексом можливі дві атомарні операції.

1. Зайняти м'ютекс (mutex_lоск): якщо м'ютекс був вільний, він стає зайнятим, і потік продовжує своє виконання (входячи у критичну секцію); якщо м'ютекс був зайнятий, потік переходить у стан очікування (кажуть, що потік «очікує на м'ютексі», або «заблокований на м'ютексі»), виконання продовжує інший потік.

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
Курсова робота 201-ТК
2. Звільнити м'ютекс: м'ютекс стає вільним; якщо на ньому очікують кілька потоків, з них вибирають один, він починає виконуватися, займає м'ютекс і входить у критичну секцію. У більшості реалізацій вибір потоку буде випадковим. Звільнити м'ютекс може тільки його власник.







Дата добавления: 2015-09-04; просмотров: 609. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Огоньки» в основной период В основной период смены могут проводиться три вида «огоньков»: «огонек-анализ», тематический «огонек» и «конфликтный» огонек...

Упражнение Джеффа. Это список вопросов или утверждений, отвечая на которые участник может раскрыть свой внутренний мир перед другими участниками и узнать о других участниках больше...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Краткая психологическая характеристика возрастных периодов.Первый критический период развития ребенка — период новорожденности Психоаналитики говорят, что это первая травма, которую переживает ребенок, и она настолько сильна, что вся последую­щая жизнь проходит под знаком этой травмы...

Studopedia.info - Студопедия - 2014-2024 год . (0.007 сек.) русская версия | украинская версия