Основні компоненти НД

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Структура та основні компоненти обчислювальної системи

Працюючи на машині, ми взаємодіємо не з апаратною реалізацією, а з програмним забезпеченням.

Обчислювальна система - об'єднання програмних і апаратних засобів, які надають послуги користувачеві.

Структура організації обчислювальної системи (ОС):

Прикладні програми

Системи програмування

Управління логічними пристроями

Управління фізичними пристроями

Апаратні засоби

Апаратні засоби.

Ресурси НД поділяються на два типи:

не беруть участі в управлінні програмою (обсяг вінчестера і т.д.).

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

Ресурси другого типу називаються фізичними ресурсами апаратури.

Управління фізичними пристроями.

Управління фізичними пристроями здійснюють програми, орієнтовані на апаратуру, що взаємодіють з апаратними структурами, які знають "мова" апаратури.

Управління логічними пристроями.

Цей рівень орієнтований на користувача. Команди даного рівня не залежать від фізичних пристроїв, вони звернені до попереднього рівня. На базі цього рівня можуть створюватися нові логічні ресурси.

Системи програмування.

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

Прикладне програмне забезпечення.

Прикладне програмне забезпечення необхідне для вирішення завдань з конкретних галузей.

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

Структура ЕОМ:

Основні компоненти НД

Основною функцією центрального процесора (ЦП) є обробка інформації і взаємодія з пристроями. Обмінюватися даними ЦП може тільки з ОЗУ (Оперативно Запам'ятовуючий Пристрій).

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

ЦП вибирає з ОЗУ послідовність команд для виконання. ЦП складається з двох компонентів:

Пристрій Управління (УУ) приймає чергове слово з ОЗУ і розбирається - команда це або дані. Якщо це команда - то УУ виконує її, інакше передає АУ.

Арифметичне Пристрій (АУ) займається виключно обчисленнями.

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

Лекція № 2

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

Прикладні програми

Системи програмування

Управління логічними пристроями

Управління фізичними пристроями

Апаратні засоби

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

Наступний рівень це програми, але програми, орієнтовані на якість і властивості апаратури. Ці програми і розробники цих програм досконально знають особливості управління кожного типу з апаратних компонентів. Нижній рівень між фізичним рівнем і апаратурою - це інтерфейс цього управління, це є деякі набори команд управління фізичними ресурсами, тобто кожен пристрій має свою мову або свій набір команд керування.

Наступний рівень - це рівень, який орієнтований на згладжування апаратних особливостей. Він цілком і повністю призначений для створення більш комфортних умов у роботі користувача. Якщо припустимо ми працюємо з пристроєм зовнішньої пам'яті "жорсткий магнітний диск", то параметрами, які характерні для конкретного диска, можуть бути, припустимо, скільки зчитують і записуючих голівок має цей пристрій, скільки поверхонь, на яких знаходиться зберігає інформацію шар. І, відповідно, набір команд управління цього пристрою орієнтований на ці параметри. І звичайно, вам, як програмістам, не цікаво працювати в термінах: вважати біт з другої поверхні десятого циліндра такий-то доріжки. Це важко і нецікаво. Цей рівень логічних ресурсів створює деякий узагальнене пристрій одне на всю систему, і користувач працює в термінах цього узагальненого пристрою. А вже програми логічного рівня розбираються до якої з програм управління фізичними пристроями треба звернутися щоб запит користувача до логічного пристрою правильно відтранслювати до конкретного фізичному пристрою.

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

Основні компоненти НД

Це процесорний елемент, тобто пристрій, який переробляє інформацію, це оперативна пам'ять (Оперативне Запам'ятовуючий Пристрій, ОЗУ), і пристрої управління зовнішніми пристроями (УУВУ). Ми визначили основна якість оперативне пам'яті: саме в оперативній пам'яті лежить виконується в даний момент програма, і процесор всі наступні команди виконуваної програми бере з оперативної пам'яті. Якщо чогось не вистачає, йде запит до зовнішніх пристрою, інформація підкачується в оператівноую пам'ять, і знову-таки з оперативної пам'яті команди надходять у процесор на обробку.

У принципі зовнішній пристрій можна реалізувати на оперативній пам'яті. Якщо ви знаєте, є така чудова програма, яка називається MS-DOS. Ця операційна система (хоча вона класично не є операційною системою) має обмеження на розмір використовуваної пам'яті 640Кб. А апаратура реальних машин на сьогоднішній день може мати фізичну оперативну пам'ять істотно великих розмірів. У цій системі можна створювати логічний диск, який розміщується на оперативній пам'яті. Тобто по всіх інтерфейсах робота з ним буде здійснюватися як з жорстким диском, але розташовуватися він буде на оперативній пам'яті. І тут різниця в тому, що з тих 640Кб процесор бере команди на виконання, а з решти, які ми оголосили логічним диском, не бере, тому що він буде працювати з ним як із звичайним жорстким диском або будь-яким іншим носієм.

Ми з вами почали більш детально говорити про процесор і зафіксували одну з основних проблем, яка має місце бути в області обчислювальної техніки. Вона формулюється так - це невідповідність у швидкостях доступу та обробки інформації, різних компонентів обчислювальної системи. Чому - у кожного компонента є своя передісторія. Десь це просто реально повільне пристрій, де якось впливає на цю швидкість вина провідників, які знаходяться між процесорним елементом і конкретним пристроєм. Для кожного випадку причина своя. Але це є проблема. Те, що реальна оперативна пам'ять на порядки більш повільна, ніж швидкість обробки інформації в процесорі. І тут виникає в загальному божевільна проблема: навіщо нам підвищувати продуктивність процесора, якщо доступ до пам'яті (а ми весь час щось беремо з пам'яті, так як робота процесора це обробка інформації, яку він бере з пам'яті) якщо доступ до пам'яті у нас настільки уповільнений. Тобто гарантовано, якщо нічого не буде зроблено конструктивно, то швидкість всієї системи буде дорівнювати швидкості роботи компонента, що має найменшу швидкість.

Регістри. Ми почали дивитися, які конструктивні рішення є в апаратурі обчислювальної системи, які призначені для згладжування цього дисбалансу. І перше про що ми почали говорити - це регістри. У процесорі є пристрої, здатні зберігати деяку інформацію. До цих пристроїв можливий доступ прямим або непрямим способом з програми, що виконується на машині. При цьому є група регістрів, які називаються регістрами загального призначення, які доступні для всіх команд. Ці регістри можуть мати властивість обробки та зберігання і обробки певних типів даних - це можуть бути речові дані, короткі цілі дані, які використовуються, припустимо, для індексування, це можуть бути довгі цілі дані. При цьому швидкість доступу до регістрів загального призначення порівнянна зі швидкістю обробки інформації в процесорі. При вмілому програмуванні, можна використовувати регістри загального призначення з метою скорочення числа звернень до оперативної пам'яті. Це означає, що гальмування на ділянці процесор-оперативна пам'ять скорочується. Розглянемо інші групи регістрів.

Спеціальні регістри. До цієї групи належать дві підгрупи регістрів.

1. Перша підгрупа - це регістри, що відповідають за стан виконуваної програми. До цих регістрів відноситься лічильник команд. Цей реєстр містить адресу виконується в даний момент команди. Це той самий регістр, який можна змінювати тільки побічно, передавши управління кудись. Другий регістр з цієї ж підгрупи - регістр результату (flags), що містить результат виконання останньої команди. За значенням цього регістру можна організовувати ті чи інші дії. До цієї підгрупи відноситься також регістр покажчика стека. Є команди, які працюють зі стеком. Ці команди зазвичай використовуються для програмування переходів з і в функцію. Стік у системі використовується для передачі параметрів і організації автоматичної пам'яті. Це пам'ять, яка займається відносно вершини стека при вході у функцію, і, при виході, вона звільняється. Тому в автоматичних змінних не можна зберігати дані після виходу з функції.

2. Друга підгрупа регістрів - це регістри управління компонентами обчислювальної системи, або керуючі регістри. Практично в будь-обчислювальної системі є регістри, призначені для організації взаємозв'язку процесора з зовнішнім світом. Ці регістри зв'язуються з УУВУ і через ці регістри процесор може організовувати управління зовнішніми пристроями. Наприклад, якщо візьмемо регістр управління жорсткого диска, то в нього можуть бути наступні поля:

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

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

Система переривань. До засобів, керуючим взаємозв'язком із зовнішніми пристроями, можна віднести систему переривань. У кожній обчислювальної машині є зумовлений, заданий при розробці і виробництві, набір деяких подій і апаратних реакцій на виникнення кожного з цих подій. Ці події називаються перериваннями. Апарат переривань використовується для управління зовнішніми пристроями і для отримання можливості асинхронної роботи із зовнішніми пристроями. Синхронна робота, це коли система говорить: "Дай мені блок інформації", і потім стоїть і чекає цього блоку. Асинхронна - це коли система говорить: "Принеси мені, будь ласка, блок інформації", і продовжує свою роботу, а коли приходить блок, вона переривається (по перериванню завершення обміну) та приймає інформацію. Така схема переривань. Одним з переривань, які є в системі, є переривання по завершенню обміну.

У момент виникнення переривання, дії в апаратурі НД наступні:

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

У деякий спеціальний керуючий регістр, умовно будемо його називати регістром переривань, міститься код виник переривання.

Запускається програма обробки переривань операційної системи.

Запущена програма на початку споживає стільки ресурсів (не більше), скільки звільнено при апаратній упрятиваніі інформації. Ця програма робить аналіз причини переривання. Якщо це переривання було фатальним (поділ на нуль, наприклад), то продовжувати виконання програми безглуздо і керування передається частини операційної системи, яка цю програму викине. Якщо це переривання не фатальне, відбувається додатковий аналіз, який призводить до відповіді на питання: чи можна оперативно обробити переривання? Приклад переривання, яке завжди можна обробити оперативно - переривання по таймеру. Наприклад, переривання, пов'язане з приходом інформації по лінії зв'язку не можна обробити оперативно, тому що відбувається розчищення в системі місця для програми операційної системи, яка займеться обробкою цього переривання. Відбувається т.зв. повне упрятиваніе. Тепер ховається не тільки інформація про деякі регістрах виконувалася програми, тепер всі регістри зберігаються в таблицях системи (а не в апаратних регістрах, як раніше) і фіксується те, що простір оперативної пам'яті, займане програмою, може бути перенесено (при необхідності) на зовнішній пристрій . Далі йде обробка переривання і повернення з переривання.

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

Повертаємося до нашої основної проблеми. ВЗП на багато порядків більш повільно, ніж оперативна пам'ять, тобто виникає проблема гальмування НД Якщо б всі обміни з зовнішніми пристроями відбувалися в синхронному режимі, то продуктивність ЗС була б дуже низькою. Однією з причин появи апарату переривань було згладжування швидкостей доступу до зовнішніх пристроїв для процесора і оперативної пам'яті (оперативна пам'ять тут виступає як більш високошвидкісне пристрій). Те, що, використовуючи апарат переривань можна було працювати із зовнішніми пристроями в асинхронному режимі, тобто задати замовлення на обмін і забути про нього до переривання завершення обміну, дозволило в цілому збільшити продуктивність НД

Регістри буферної пам'яті (Cache, КЕШ). Наступна група регістрів - регістри, пов'язані з т.зв. буферної пам'яті. Ми повертаємося до проблеми взаємодії процесора і оперативної пам'яті і згладжувати швидкостей доступу в оперативну пам'ять.

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

Алгоритм читання з оперативної пам'яті наступний:

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

Якщо такий рядки немає, то відбувається обмін з оперативною пам'яттю, і копія отриманого значення міститься в регістровий буфер і позначається виконавчим адресою цього значення в оперативній пам'яті. Вміст операнда надходить у процесор для обробки. При цьому вирішується проблема розміщення нового рядка. Апаратно шукається вільний рядок (але вона може бути тільки на початку роботи машини), і якщо така не знайдена, запускається апаратний процес витіснення з цього буфера найбільш "старої" рядки. Старість визначається по деякому наперед визначена критерієм. Наприклад, ознакою старіння може бути кількість звернень до цього буферу при якому немає звернень до цього рядка. У кожному такому випадку число в третьому стовпці таблиці збільшується на одиницю.

Регістровий буфер

Виконавчий

адреса

Вміст

Ознака

"Старіння"

...

...

...

Коротше кажучи, апаратура вирішує, яку з рядків треба виштовхнути з таблиці, щоб на її місце записати новий вміст. При цьому враховується інформація про те, чи були звернення до даної рядку з використанням команд запису в пам'ять. Якщо такі звернення були, то перед виштовхуванням відбувається запис в ОЗУ за виконавчим адресою вмісту нашої рядки.

Алгоритм запису в оперативну пам'ять симетричний. Коли в програмі зустрічається команда запису операнда в пам'ять, апаратура виконує наступні дії. Перевіряється наявність в буфері рядки із заданим виконавчим адресою. Якщо такий рядок є, то в полі "Вміст" записується нове значення, і апаратно коригується ознака старіння рядків. Якщо такий рядки немає, то запускається описаний вище процес виштовхування, і потім інформація розміщується в звільнилася рядку.

Цей буфер читання / запису служить досить потужним засобом для мінімізації звернень до ОЗП. Найбільший ефект досягається при невеликих циклах, коли всі операнди розміщуються в буфері, і після цього циклічний процес працює без звернень до ОЗП. Іноді, ці буфера називають КЕШ-буферами, а також асоціативної пам'яттю, тому що доступ до цієї пам'яті здійснюється не за адресою (як в ОЗУ), а за значенням поля. Реально, всі механізми можуть бути влаштовані інакше, ніж ми тут вивчаємо, тому що ми вивчаємо деяку узагальнену систему.

Наступним компонентом, який ми з вами розглянемо з точки зору системного підходу, а системний підхід має на увазі те, що ви розглядаємо річ не саму по собі, а в контексті взаємозв'язку з іншими компонентами, це деякі властивості ОЗУ.

Оперативна пам'ять

1-й блок

2-й блок

. . .

k-й блок

0

1

. . .

k-1

k

k +1

. . .

2k-1

. . .

. . .

. . .

. . .

Використання розшарування пам'яті. Фізично ОЗУ представимо у вигляді об'єднання k пристроїв, здатних зберігати однакову кількість інформації і, при цьому, здатні взаємодіяти з процесором незалежно один від одного. При цьому адресний простір НД організоване таким чином, що підряд йдуть адреси, або комірки пам'яті, знаходяться в сусідніх пристроях (блоках) оперативної пам'яті.

Програма складається (більшою мірою) з лінійних ділянок. Якщо використовувати цей паралелізм, то можна організувати в процесорі ще один буфер, який організовано також, але в якому розміщуються машинні команди. За рахунок того, що є паралельно працюють пристрої, то цей буфер автоматично заповнюється вперед. Тобто за одне звернення можна прочитати k машинних слів і розмістити їх у цьому буфері. Далі, дії з буфером команд схожі на дії з буфером читання / запису. Коли потрібна чергова команда (її адреса знаходиться в лічильнику команд) відбувається її пошук (за адресою) в буфері, і якщо така команда є, то вона зчитується. Якщо такої команди немає, то знову-таки працює внутрішній алгоритм виштовхування рядки, і новий рядок зчитується з пам'яті і копіюється в буфер команд. Розшарування пам'яті в ідеалі збільшує швидкість доступу в k разів, плюс буфер команд дозволяє скоротити звернення до ОЗУ.

Лекція № 3

Ми продовжуємо розгляд нашої спрощеної схеми. У сучасних машинах є ще одне апаратний засіб, яке покликане підтримувати роботу обчислювальної системи. Це, так звана, віртуальна пам'ять. На сьогоднішній день всі обчислювальні машини (за винятком особливо раритетних) працюють в мультипрограмному (мультипроцесорної) режимі. Суть його полягає в тому, що є кілька процесів, які одночасно виконуються в обчислювальній системі. Подивимося, як цей мультипрограмний режим впливає на використання оперативної пам'яті.

Операційна

система

Завдання № 1

Завдання № 2

Завдання № 3

.

.

.

Припустимо: у початковий момент часу якусь частину оперативної пам'яті зайняла операційна система (так воно і відбувається). Після цього була завантажена програма № 1, потім програми № 2, № 3 (і т.д.). Операційна система почала виконувати ці програми в мультипрограмному режимі. Виникає питання: чи завжди будь-яку програму можна помістити в довільний діапазон адресного простору оперативної пам'яті? Чи володіє програма властивістю переміщення по пам'яті? Наскільки завдання пов'язана з адресним простором, на яке її запрограмували? Це перша проблема. Друга проблема: цей процес йде, і зрозуміло, що в якісь моменти часу якісь з цих завдань закінчуються (наприклад Завдання № 2). При цьому в пам'яті утворюються вільні фрагменти.

Операційна

Система

Операційна

Система

Завдання № 1

Завдання № 1

Завдання № 6

Завдання № 3

Завдання № 3

.

.

.

.

.

.

Програма операційної системи, яка завантажує завдання в пам'ять, може подивитися, які з завдань чекають обробки, і якщо є завдання, що міститься в один з вільних фрагментів, вона може її завантажити. Але виникає друге питання: а як бути, якщо немає такого завдання, яка поміститься в звільнився фрагмент. При цьому проблема полягає в тому, що навіть якщо знайдеться завдання (№ 6), яка поміститься у вказаному фрагменті, то залишиться ще менший фрагмент пам'яті, в який вже не можна практично нічого записати. Кількість таких, нікому не потрібних, фрагментів поступово збільшується. Це процес фрагментації пам'яті.

Фрагментація може відбуватися і в оперативній пам'яті, і на зовнішньому пристрої зберігання даних. У результаті через деякий час виникає досить цікава і сумна ситуація: вільного адресного простору багато, але при цьому ми не можемо завантажити жодної нової задачі. Це означає, що система в цілому починає деградувати. Наприклад, якщо Ви надішлете замовлення на виконання якоїсь дії, то Вам доведеться невиправдано довго чекати.

Для боротьби з фрагментацією пам'яті, а також для вирішення проблеми переміщення програми з адресного простору, використовується, так звана, віртуальна пам'ять. Суть її роботи полягає в наступному. Нехай є деяка адресний простір програми, тобто те адресний простір, в термінах якого оперує програма. І є адресний простір фізичне, яке залежить від часу. Воно характеризує реальний стан фізичної оперативної пам'яті.

У машинах, які підтримують віртуальну пам'ять, існує механізм перетворення адрес з адресного простору програми у фізичне адресний простір, тобто при завантаженні завдання в пам'ять машини операційна система розміщує реальну задачу в тій оперативної пам'яті, яка є вільною, незалежно від того, чи є цей фрагмент безперервним, або він фрагментований. Це перша дія виконує операційна система. Вона знає про стан своїх фізичних ресурсів: які вільні, які зайняті.

Друге: операційна система заповнює деякі апаратні таблиці, які забезпечують відповідність розміщення програми в реальної оперативної пам'яті з адресним простором, які використовуються програмою. Тобто можна визначити, де у фізичній пам'яті яка частина програми розміщена, і яка частина адресного простору програми поставлена ​​їй у відповідність.

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

Розглянемо найпростіший приклад організації віртуальної пам'яті: обчислювальну систему з, так званої, сторінкової організацією пам'яті. Суть сторінкової пам'яті полягає в тому, що апаратно весь адресний простір оперативної пам'яті розділене на блоки фіксованого обсягу. Зазвичай розмір таких блоків дорівнює ступеню двійки. При цьому зберігається наскрізна нумерація елементів пам'яті. Структура адреси в даній обчислювальної машині така: адреса будь-якої комірки пам'яті представлений у вигляді двох полів; старші його розряди є номером сторінки, а молодші розряди є зміщенням відносно сторінки (тут використовується той факт, що розмір сторінки дорівнює ступеню двійки).

Виконавчий адреса

№ Сторінки

Зсув відносно сторінки

Отже, ми маємо машину з сторінкової організацією пам'яті. Для управління цією сторінкової пам'яттю, процесор містить, так звану, таблицю приписки (ТП). Це апаратний засіб машини, реалізоване за допомогою реєстрової пам'яті. Структура цієї таблиці:

Таблиця приписки

№ Віртуальної

сторінки

№ Фізичної

сторінки

0

25

1

1

2

30

.

.

.

.

.

.

L-1

-1

ТП має L рядків, де L - максимальна кількість сторінок, адресованих в даній машині (тобто адресний простір програми може складатися не більше ніж з L сторінок). Кожний рядок цієї таблиці відповідає віртуальній сторінці програми з номером, що збігається з номером рядка. Рядок містить номер фізичної сторінки, відповідної даної віртуальної сторінки.

При завантаження та запуску програми операційна система розміщує віртуальні сторінки в деяких фізичних сторінках оперативної пам'яті, а їх відповідність встановлюється в ТП. Наприклад, операційна система взяла 0-ую віртуальну сторінку пам'яті і помістила її в двадцять п'ятій сторінку фізичної пам'яті, перший сторінку розмістила в 1-ій сторінці, а 2-у - у 30-ою (і так далі розподілила всі сторінки) . Після цього передається управління на початок програми, а за тим працює той механізм, який був описаний вище: за номером віртуальної сторінки з таблиці апаратно вибирається відповідний рядок, і що міститься в ній номер фізичної сторінки апаратно підставляється у виконавчий адресу замість номера віртуальної сторінки, тобто відбувається просто заміна старших бітів виконавчого адреси.

Насправді, коли операційна система звертається до якоїсь рядку таблиці, то спочатку вона проводить контроль. У дійсності, рядок ТП містить певний код, який є або адресою фізичної сторінки, або деяким спеціальним кодом, на який схеми управління процесора реагують певним чином. Наприклад, якщо цей код більше або дорівнює нулю, це означає, що можна продовжувати роботу. Якщо ж у цьому рядку міститься код менше нуля, наприклад -1, то звернення до неї пристроїв перетворення віртуальної адреси у фізичний, викликає переривання. Це переривання зазвичай називається перериванням по захисту пам'яті. Справа в тому, що операційна система, заповнюючи ТП, вказує, які з віртуальних сторінок адресного простору не належать даній програмі, і якщо відбувається вихід за межі дозволеної пам'яті, генерується переривання по захисту пам'яті.

Для кожної програми потрібна своя таблиця приписки. При переході від однієї програми до іншої вміст ТП зберігається операційною системою в деякій своїй програмній таблиці (масиві) і потім змінюються значення в ТП.

Продовження в темі "Операційні системи"

(Підкачка, або SWAPPING)

Зовнішні пристрої

Зовнішні пристрої можна визначити як все ті пристрої, які відрізняються від процесора і пам'яті. Управління зовнішніми пристроями здійснюється через систему переривань. Зовнішні пристрої можна підрозділити на зовнішні запам'ятовуючі пристрої (ВЗУ) і Пристрої вводу / виводу (УВВ) інформації. ВЗП - це пристрої, здатні зберігати інформацію деякий час, пов'язаний з фізичними властивостями конкретного пристрою, і забезпечувати читання та / або запис цієї інформації в оперативну пам'ять. Якщо розглядати ВЗП з точки зору використання різними компонентами програмного забезпечення, то можна виділити наступні типи пристроїв:

1. Магнітний барабан. Магнітний барабан - це пристрій, який характерний для великих обчислювальних комплексів. Зазвичай воно використовується операційною системою для зберігання системної інформації. Суть роботи цього пристрою полягає в наступному.

Основні компоненти НД

Є металевий циліндр великої ваги (вага тут має значення для підтримки стабільної швидкості обертання), який обертається навколо своєї осі. Поверхня цього циліндра покрита шаром матеріалу, здатного зберігати інформацію (з нього можна читати і на нього можна записувати інформацію). Над поверхнею барабана розміщується p зчитують головок. Їх положення зафіксоване над поверхнями, які називаються треками (track). Кожен трек розділений на рівні частини, які називаються секторами. У кожний момент часу у пристрої може працювати тільки одна головка. Запис інформації відбувається по треках магнітного барабана, починаючи з певних секторів. Координатами інформації служать наступні параметри (№ Трека, № Сектора та Обсяг інформації).

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

Магнітні диски.

Є декілька дисків, розміщених на одній осі, які обертаються з деякою постійною швидкістю. Кожен такий диск може мати дві інформаційно-несучі поверхні (верхню і нижню), покриті шаром, здатним фіксувати інформацію. Диски мають номери; поверхні кожного диска також пронумеровані (0,1). Концентричних колах одного радіуса на кожному диску відповідає умовний циліндр. Диск також розбитий на сектори. Координати інформації на диску (№ Диска, № Поверхні, № Циліндра, № Сектора).

Основні компоненти НД

Механічно керована штанга має щупи, на кінцях яких знаходяться зчитувальні та записуючі головки. Кількість цих щупів може дорівнювати кількості дисків (зчитується або верхня, або нижня поверхня).

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

Лекція № 4

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

Я звертаю вашу увагу на те, що ці лекції не є лекції по UNIX-у, який ми з вами будемо розглядати, це не є лекції з сторінкової організації пам'яті - це лекції, спрямовані на те, щоб ви зрозуміли значення слова "система" в терміні "обчислювальна система". Вже зараз ми торкаємося механізми роботи з кешами, з буферами і переривань. І це досить складно. А якщо ми візьмемо машину, у якої не один, а кілька процесорних елементів, що працюють з одного пам'яттю, то у нас виникають досить складні проблеми з буферизацією роботи з пам'яттю. Те, що ми з вами розглядаємо на лекції - це дуже простий зріз (можна сказати, лекція для колгоспників), щоб у вас склалося хоча б концептуальне розуміння, бо ми не охопимо все.

Ми з вами закінчили минулий лекцію розглядом деяких типів ВЗП: магнітного барабана, магнітних дисків. Ми виявили на концептуальному рівні відмінності цих пристроїв, тому що мета наших лекцій не вивчити їхню роботу, а навчитися порівнювати ті чи інші компоненти обчислювальної системи. Ми з вами з'ясували, що ВЗП, такі як магнітний барабан і магнітні диски, можуть характеризуватися ступенем участі механічних дій в обробці замовлення на обмін. Чим більше механічних дій, тим повільніше відбувається обмін. Існує екзотичний вид зовнішньої пам'яті - пам'ять на магнітних доменах.

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

Основні компоненти НД

Є барабан, у якого так само є треки, і так само над кожним треком розташована головка для обміну, але сам барабан не обертається, а за рахунок деяких магнітно-електричних ефектів здійснюється переміщення по треку ланцюжка доменів. При цьому кожен домен однозначно орієнтований, тобто або він біжить стороною, зарядженої "+", або стороною, зарядженої "-". Так кодуються нуль і одиниця. Ця пам'ять дуже бистродейственна, тому що в ній немає ніяких механічних дій. Ці пристрої зазвичай використовуються у вбудованих обчислювальних системах. (Наприклад, вона використовується в американських шатлах).

Тепер розглянемо ВЗП інакше - за методами доступу. Суть майже будь-якого запам'ятовуючого пристрою полягає в тому, що інформація в ньому записується деякими блоками, або записами. У деяких пристроях розмір блоку фіксований і чимось нагадує сторінкову організацію пам'яті. У деяких пристроях розмір блоку може бути змінним, і визначається деяким початковим і кінцевим маркером, який можна програмно записати на носій цього пристрою. У контексті роботи з блоками, ВЗП можна підрозділити на два типи: пристрої прямого доступу і пристрої послідовного доступу. У побутовому плані можна розглянути компакт диск (CD) і аудіо-касету. Відтворення десятий запису на компакт диску починається майже відразу після відповідної команди, за рахунок своєї системи координат, подібної системі координат магнітного диска. Це пристрій прямого доступу. Пристрій послідовного доступу - це аудіокасета. Якщо вам треба відтворити п'ятого пісню, то доводиться, перемотуючи касету, шукати початок, так чи інакше прослуховуючи попередні чотири. Пристрої послідовного доступу, це ті пристрої, які для читання i-того запису, повинні переглянути попередні (i-1)-ну запис. Прямий доступ позбавлений цього недоліку. Приклади пристроїв прямого доступу - це магнітний барабан, всілякі варіації магнітних дисків, пам'ять на магнітних доменах та інше. Пристрої послідовного доступу - це або магнітна стрічка на великих машинах, або стримерного пристрої, які використовують для організації довготривалого зберігання даних на маленьких машинах.

Ось два погляди на зовнішні пристрої. Тепер розглянемо зовнішні пристрої з точки зору управління. На ранніх стадіях пристрій управління зовнішніми пристроями більшою мірою було деяким інтерфейсом в отриманні всіх керуючих команд від процесора і передачі їх конкретного зовнішнього пристрою. Це означає, що центральний процесор (ЦП) повинен був відпрацьовувати практично всі дії, передбачені системою команд управління конкретного пристрою. Незважаючи на те, що при цьому вже був реалізований і використовувався апарат переривань, що дозволяє проводити обмін асинхронно з роботою центрального процесора, у нас були досить великі втрати за рахунок того, що процесор повинен був часто перериватися на виконання послідовності невеликих за розміром вказівок для управління зовнішнім пристроєм. Тому з'явилися спеціалізовані пристрої, які називаються каналами.

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

Основні компоненти НД

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

Мультипрограмування

Давайте розглянемо ще один внутрішньосистемний аспект, який може продемонструвати взаємний вплив програмного забезпечення та апаратури. Цей аспект пов'язаний з мультипрограмування.

Основні компоненти НД

Намалюємо просту діаграму:

Вісь абсцис пов'язана з часом. На осі ординат відзначені виконувані завдання. Нехай процесор працює над Завданням № 1. У якийсь момент йому потрібні були дані, які знаходяться на ВЗП. Формується замовлення на обмін, але дані з пристрою ще не надійшли (ми знаємо, що швидкість обміну низька). І якийсь час процесор простоює. Потім обмін завершився, і програма почала виконуватися далі. Потім ця ситуація повторюється (знову простий і т.д.). Залежно від типу або класу розв'язуваної на цій машині завдання, таких простоїв може бути від 99% всього часу до одиниць відсотків у тому випадку, якщо програма довго щось обчислює, не звертаючись до зовнішніх пристроїв. Але в будь-якому випадку ця ситуація призводить до неефективної роботи обчислювальної системи, тому було б непогано при наявності асинхронно працюючих пристроїв (тобто тих пристроїв, які працюють під управлінням апарату переривань) в проміжки часу, коли одна програма не може виконуватися (так як вона очікує дані), запускати іншу програму (Завдання № 2). Завдання № 2 буде жити за тими ж правилами (тобто в періоди обміну Завдання № 2 та Задачі № 1 з зовнішніми пристроями буде запускатися третє завдання, і так далі).

Режим робіт програмного забезпечення та апаратури, що забезпечує одночасне виконання декількох програм, називається мультипрограмному режимом. Спочатку мультипрограмування з'явилося з метою максимального завантаження процесора, оскільки колись цей пристрій було найдорожчим. На сьогоднішній день це пристрій одне з найдешевших у комп'ютері. Подивимося, що потрібно від апаратури обчислювальної системи для підтримання режиму мультипрограмування. Давайте перерахуємо ті проблеми, які можуть виникнути, коли, крім деякою керуючої програми (операційної системи) і однієї програми користувача, з'явилася ще одна програма користувача. Тобто, якщо раніше всі помилки і некоректність по відношенню до системи призводили до покарання самого себе, то тепер, при появі чужих програм в пам'яті виникають нові проблеми.

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

На минулій лекції ми з вами розглядали механізм віртуальної пам'яті на прикладі сторінкової організації пам'яті. Якщо в таблиці приписки в якийсь рядку перебував код менше нуля, це означало, що ця віртуальна сторінка недоступна. І при спробі звернутися до цієї сторінки, спрацьовує апарат захисту пам'яті. А спрацьовує він таким чином: у системі виникає переривання по захисту пам'яті, при обробці цього переривання операційна система (ОС) дивиться, а чи дійсно цієї сторінки пам'яті у даної програми немає (тобто це чужа сторінка). Якщо ця сторінка дійсно чужа, то переривання припиняє виконання даного процесу з діагностикою звернення в чужу пам'ять. Можлива й інша ситуація: якщо якісь сторінки ще не завантажені в пам'ять і ОС у своїх внутрішніх програмних таблицях зазначила, що насправді у мене є ця сторінка і що, припустимо, вона знаходиться на зовнішньому пристрої. У цьому випадку переривання ігнорується, так як помилки немає (просто немає ще достатньо інформації для продовження програми). Так влаштована захист пам'яті.

Друга проблема: нехай в обчислювальній системі є принтер, і є два процеси, яким він потрібний. І нехай один з процесів звернувся до зовнішнього пристрою з командою надрукувати рядок (а він друкує, скажімо, відомість на іспит, а інший процес друкує, припустимо, доповідну декану). І перший рядок надрукувалася: "Відомість". Після цього інший процес пише: "Декану факультету ВМК чл. кор. РАН Д.П. Костомарову ", і теж звертається до пристрою друку. Пристрій друку друкує другу сходинку, і так далі. У підсумку виходить документ, який залишається тільки спалити, так як там надруковано марення. Це перший приклад. Другий приклад: ми з вами говорили про віртуальної пам'яті і про те, що таблиці приписки заповнюються оперативною системою програмно (існують команди, які дозволяють записати деяку інформацію в таблицю приписки). І нехай, з'явилися два лихих програміста, які вирішили відвести собі побільше пам'яті, і кожен з них виправив відповідно таблицю приписки, виділивши собі всю пам'ять. Але пам'ять-то одна, і вийшло недобре. І в першому і в другому прикладі програмами користувача були доступні команди управління компонентами обчислювальної системи (у першому випадку - команди управління зовнішнім пристроєм, в другому випадку - оперативною пам'яттю), що й призвело до некоректності в роботі. Це означає, що, поки ці команди доступні, то коректний режим мультипрограмування організувати неможливо, тому що завжди знайдуться два легіні, які чогось небудь та зіпсують (навіть не спеціально, а просто через незнання).

Отже, другою умовою для організації мультипрограмному режиму є наявність привілейованого режиму в системі. Привілейований режим - це режим роботи центрального процесора, у якому програмі доступні всі можливі команди. Непривілейований режим (ще його називають користувальницьким) - режим, в якому є лише деяку підмножину команд. У режимі користувача програми користувача не зможуть звернутися безпосередньо до управління компонентами обчислювальної системи.

Може виникнути питання: а якщо все-таки треба друкувати, і працюють декілька програм, як бути? Зазвичай у всіх системах є засоби звернення до ОС (ОС працює в привілейованому режимі і їй є все). Програма користувача може передати замовлення на деякі дії ОС (у різних системах це реалізовано по-різному), наприклад, за допомогою переривань. Повернемося до прикладу з принтером. Тепер процес не викликає конкретну команду, а звертається із замовленням надрукувати рядок до ОС. Вона приймає замовлення і рядок, і буферизует цю інформацію в деяких своїх програмних буферах. Реальною друку при замовленні не відбувається, чергова рядок просто потрапляє в буфер, який відноситься до моїй програмі. Друк цього буфера буде відбуватися тільки при завершенні програми, коли вже зрозуміло, що замовлень на друк більше не буде.

Третя проблема: в одній з програм з'явилася помилка, програма зациклилася і система зависла. Що в цьому випадку може допомогти? Може допомогти деякий засіб, який буде періодично переривати виконання програми. Для нашого прикладу це має бути переривання по таймеру, щоб один раз на якийсь проміжок часу процес переривався, і управління передавалося ОС. Вона ж сама повинна вирішувати, як їй вступити в цьому випадку.

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

Апарат підкачки

Наступна проблема: у системі, що працює в мультипрограмному режимі, знаходиться багато програм. Нехай є реальна оперативна пам'ять з сторінкової організацією. Якусь частину пам'яті займає ОС, якусь частину займає Завдання № 1, якусь частину - Завдання № 2 і т.д. У найпростішому випадку, в системі може знаходиться стільки програм, скільки може розмістити в собі оперативна пам'ять. Це досить неефективно, тому що виконується в даний проміжок часу код програми локалізований в декількох віртуальних сторінках (наприклад, якийсь цикл або функція, які виконуються в даний момент). Якщо ми будемо розміщувати в оперативній пам'яті весь код і всі дані нашої програми, то більша частина оперативної пам'яті буде простоювати, тому що ми до неї ще повинні дістатися. З'являється природне бажання тримати в оперативній пам'яті тільки ті фрагменти адресного простору, які в даний момент використовуються. Для цього використовується апарат підкачки (або swapping). Це програмно-апаратний засіб.

Суть його полягає в наступному. Ми говорили про віртуальної пам'яті і про те, що в рядку таблиці приписки міститься якийсь код. У цьому рядку може бути ще одне поле, що характеризує частоту звертання до сторінки. Це поле формується апаратно. Апарат підкачки працює приблизно так само, як в буфері читання запису в оперативну пам'ять (також збирається інформація про старіння сторінок). За цими даними ОС може відкачувати рідко вживані, належать конкретному процесу в зовнішню пам'ять (у великих машинах для цих цілей зазвичай використовуються магнітні барабани). При цьому, якщо сторінка відкачується, то в таблицю приписки записується негативний код, який, у разі звернення до неї, викликає переривання (воно визначить, що це не чужа сторінка), і сторінка підкачується назад (а в цей час знову ж таки може почати виконуватися інша задача). Цей механізм підкачки досить ефективний. Він дозволяє тримати в оперативній пам'яті від кожної з виконуваних програм деяку (найважливішу) частину, а коли в пам'яті знаходиться велика кількість програм, то це означає, що завжди буде готова чергу програм на випадок обміну.

З одного боку, підкачка - це функція, яка підтримується апаратурою (старіння сторінок пам'яті без апаратної підтримки складно організувати), а з іншого боку все реальне управління програмне.

Тепер повернемося до нашої піраміді:

Прикладні програми

Системи програмування

Управління логічними пристроями

Управління фізичними пристроями

Апаратні засоби

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

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
97.6кб. | скачати


Схожі роботи:
Основні компоненти їжі
Національна культура і е основні компоненти
Основні функції і компоненти ядра ОС UNIX
Загальні вимоги та основні компоненти СКУД
Основні компоненти педагогічної характеристики соціалізації школяра
Архітектура та основні компоненти персонального комп`ютера
Основні компоненти системи управління документообігом СУД
Основні компоненти загальної компетентності вчителя іноземної мови
Національна економіка та основні компоненти економічної системи Право власності в економіці
© Усі права захищені
написати до нас