Архітектура ЕОМ
Операційні системи
Перші Операційні системи (ОС) називались моніторами
Перші бізнес комп’ютери IBM360
Перша ОС фірми IBM називається TOS - TapeOpeartingSystem
DOS - дискова ОС, що знаходиться на диску.
MFT – мультизадачна ОС з фіксованою кількістю задач.
MVT - ОС з необмеженою кількістю задач.
IBM370 SVS – ОС з віртуальною пам’яттю.
SVM – система управління ОС.
Мікропроцесори
Після того, як з’явилась система I386, в архітектурі Були закладені основи роботи в віртуальній пам’яті.
ОС – програмно-технічний комплекс, призначений для ефективно3го управління ресурсами обчислювальної системи та надання послуг користувачам.
Критерії ефективності:
максимально завантажити обладнання обчислювального комплексу.
ОС, що задовольняють цьому критерію називають пакетними ОС.
В пакет включаються:–
вимоги до ресурсів;–
програма;–
дані.
Пакети накопичуються в ОС і вона, використовуючи критерій ефективності 1, виконує обробку пакету.
Діалоговий режим - надання послуг користувачам.
Ресурс – це все те, що ОС може розподілити між програмами( задачами ).
Вони бувають:
– фізичні : оперативна пам’ять, НЖМД, CPU(основний обчислювальний пристрій)
– логічні : поіменована пам’ять, файл, каталог, модуль, логічний канал.
Основна одиниця роботи ОС – задача( TASK )
Тривіальна модель виконання задачі
Нехай є множина комірок пам’яті різних типів. Комірка пам’яті певного типу приймає діапазон значень. Як стан програми будемо мати елемент:
[<C1, M1>, <C2, M2>, … ] – простір виконання задачі, де Ci – ім’я комірки, Mi – поточне значення певного типу.
Якщо є дві задачі, адресний простір яких перетинається, то це взаємодія двох задач через пам’ять.
f: простір простір – функція що і є наша програма.
В технологіях ОС для опису ресурсів використовуються дескриптори (таблиці). З
довільною задачею, що функціонує в середовищі ОС, пов’язується дескриптор задачі. Формат дескриптора залежить від типу ОС.
Дескриптор неявно (за рахунок посилок) описує всі ресурси, що виділені в задачі.
Елементи дескриптора задач:
Стан задачі:
Активна
готова до виконання
затримана
„Кругообіг” задачі ( по відношенню до CPU )
Пояснення:
Активна задача переходить в чергу затриманих в зв’язку з виконанням операції вводу/виводу.
По завершенню виконання операції вводу/виводу задача переходить в чергу готових до виконання.
У момент, коли виконується подія (1), з черги готових до виконання процесору призначається наступна задача
У задачі примусово відбирають процесор. Наприклад, по закінчені кванту часу.
Задачі та під задачі
У випадку, коли адресний простір декількох задач співпадає, можна вести мову про дерево задач
.
A- головна задача, C,D,E,F – підзадачі задачі A.
В момент призначення певній задачі процесора, відбувається операція зміна контексту
На рівні ОС існують методи, які дають:–
метод створити задачу
метод знищити задачу
Приклад
Дві задачі функціонують в просторі, простори перетинаються.
Яким буде значення комірки після деякого часу t?
Комірки адресного простору, що належать декільком задачам, можна трактувати як ресурс (критичний ресурс).
Частина коду програми, що взаємодіє з критичним ресурсом називається критичним сегментом.
Правила роботи з критичними ресурсами:
Якщо декілька задач спробують одночасно модифікувати критичний ресурс, то допускається лише одна.
В довільний момент часу в критичному сегменті по відношенню до даного ресурсу, повинно знаходитись не більш однієї задачі.
Нескінчений час очікування виконання критичного сегменту блокується.
Після виконання 2х критичних сегментів .
Програмування критичних сегментів
Розглянемо програму
void f1(){…}
void f2(){…}
main() //f1 та f2 виконуються одночасно.
{parbegin
f1();f2();
parend;}
int count=0; //критичний ресурс
int iter=1 //черга першої задачі
void f1()
{while(iter==2)…;
//критичний сегмент
count++;
iter=2; //тепер черга другої задачі
}
void f2()
{while(iter==1)…;
//критичний сегмент
count++;
iter=1; //тепер черга першої задачі
}
Аналіз:
Наведена програма, якщо за коментуємо f1(), буде працювати у нескінченому циклі. Наведений приклад є помилкове рішення взаємодії двох задач по відношенню до ресурсу.
@ лекція 2 ( 21.02.03 )
Алгоритм Деккера.
(взаємодія через пам’ять)
Ця схема взаємодії враховує наявність двох процесорів CPU і вони мають різну швидкість.
Недоліки алгоритму:
Наведений алгоритм актуальний лише для взаємодії двох задач.(Існує модифікація алгоритму Деккера для багатьох задач)
Процес програмування взаємодії досить складний.
int C1=0, C2=0; // побажання
int queue = 1; // чия черга
void f1 (void) {
C1 = 1; // встановити побажання
while ( C2 = = 1 )
if ( queue = = 2 )
{C1 = 0; // зняти побажання
while ( queue = = 2) ; // цикл
C1 = 1;}
// критичний сегмент
. . .
// кінець критичного сегменту
С1 = 0; // зняти побажання
queue = 2; }
void f2 (void){
C2 = 1; // встановити побажання
while ( C1 = = 1 )
if ( queue = = 1 )
{C2 = 0; // зняти побажання
while ( queue = = 1) ; // цикл
C2 = 1;}
// критичний сегмент
. . .
// кінець критичного сегменту
C2 = 0; // зняти побажання
queue = 1; }
main () { parbegin
f1(); // якщо f1 та f2 працюють разом, то ця схема коректна і враховує
f2(); взаємодію двох потоків на СРU з різними швидкостями.
parend }
Схема:
f1 f2
Апаратні засоби взаємодії.
int global = 0;
void f1(void) {
int local;
while (1) //цикл взаємодії
{ local = 1;
while (local) test_and_set(local, global);
// критичний сегмент
. . .
// кінець критичного сегменту
global = 0;}
}
main () { parbegin
parend }
Схема:
f1 f1 f1
Недоліки:
Потрібно знати специфіку test_and_set
Якщо N потоків, то понижується ефективність обчислювальної установки.
P- ,V- операції Дейкстра.
Семафор – цілочислова змінна, над якою можна виконати 3 операції: INIT, P, V.
Двійковий семафор – семафор з початковим значенням 1.
Ресурс: друкарський
пристрій
А В С
Задача “ постачальник – споживач ”.
Область вводу-виводу називається буферний пул (програмний кеш).
Семафор:
SEMAFOR IN_BUF( N );
SEMAFOR OUT_BUF( N );
DATA BUFFER[ N ]; //буферний пул
void постачальник (void) {
int ind_in_buf = 0;
while (1) { P( IN_BUF );
// критичний сегмент, наповнення елементів даних
. . .
//кінець