1   2   3   4   5   6   7   8   9   10
Ім'я файлу: 1-126.pdf
Розширення: pdf
Розмір: 1940кб.
Дата: 12.12.2021
скачати
67. Особливості базової архітектури ОС UNIX.
АрхітектураОС UNIX - багаторівнева. На нижньому рівні, безпосередньо над устаткуванням, працюєядро операційної системи. Функціїядра доступні через
інтерфейс системних викликів, що утворюють другий рівень. На наступному рівні працюють командні інтерпретатори, команди й утиліти системного адміністрування, комунікаційнідрайвери та протоколи, - все те, що зазвичай відносять до системного програмного забезпечення. Нарешті, зовнішній рівень утворюють прикладні програми користувача, мережні та інші комунікаційні служби, СУБДі утиліти.
Функціональні характеристики
До основних функцій ядра ОС UNIX прийнято відносити наступні:
1) Ініціалізація системи - функція запуску й розкручування. Ядро системи забезпечує засіб розкручування (bootstrap), що забезпечує завантаження повного ядра в пам'ять комп'ютера і запускає ядро.
2)
Управління процесами
і нитками - функція створення, завершення та відстеження
існуючих процесів
і ниток ("процесів", виконуваних на загальній віртуальній пам'яті).
Оскільки ОС UNIX є мультипроцессной операційною системою, ядро забезпечує поділ між запущеними процесами часу процесора
(або процесорів у мультипроцесорних системах) і інших ресурсів комп'ютера для створення зовнішнього відчуття того, що процеси реально виконуються в паралель.
3)
Управління пам'яттю - функція відображення практично необмеженої віртуальної пам'яті процесів у фізичну оперативну пам'ять комп'ютера, яка має обмежені розміри.
Відповідний компонент ядра забезпечує поділюване використання одних і тих самих областей оперативної пам'яті декількома процесами з використанням зовнішньої пам'яті.
4)
Управління файлами - функція, що реалізує
абстракцію файлової системи, - ієрархії каталогів і файлів.
Файлові системи
ОС UNIX підтримують кілька типів файлів. Деякі файли можуть містити дані у форматі ASCII, інші будуть відповідати зовнішнім пристроям. У файловій системі зберігаються об'єктні файли, виконувані файли і т.д.
Файли звичайно зберігаються на пристроях зовнішньої пам'яті; доступ до них забезпечується засобами ядра. У світі UNIX існує кілька типів організації файлових систем. Сучасні варіанти ОС UNIX одночасно підтримують більшість типів файлових систем.
5)
Комунікаційні
засоби - функція, що забезпечує можливості обміну даними між процесами, що виконуються всередині одного комп'ютера (IPC - Inter-Process
Communications), між процесами, що виконуються в різних вузлах локальної або глобальної мережі
передачі даних, а також між процесами і драйверами зовнішніх пристроїв.
6) Програмний інтерфейс - функція, що забезпечує доступ до можливостей ядра з боку користувальницьких процесів на основі механізму системних викликів, оформлених у вигляді бібліотеки функцій.

68. Призначення ядра ОС Linux та його особливості.
У ядрі Linux реалізована ціла низка важливих архітектурних елементів. І на найзагальнішому, і на детальніших рівнях ядро можна підрозділити на безліч різних підсистем. З іншого боку, Linux можна розглядати як монолітне ціле, оскільки всі базові сервіси зібрані в ядрі системи. Такий підхід відрізняється від архітектури з мікроядром, коли ядро надає тільки найзагальніші сервіси, такі як обмін інформацією, ввід/вивід, управління пам'яттю і процесами, а конкретніші сервіси реалізуються в модулях, що підключаються до рівня мікроядра.
З часом ядро Linux стало ефективнішим з погляду використання пам'яті і процесорних ресурсів і набуло виняткової стабільності. Важливий аспект Linux, враховуючи розмір
і складність цієї системи — це її переносимість. Linux можна відкомпілювати для величезної кількості різних процесорів і платформ, що мають різні архітектурні обмеження і потреби. Наприклад, Linux може працювати на процесорі як з блоком управління пам'яттю (MMU), так і без MMU. Підтримка процесорів без MMU реалізована у версії ядра uClinux.
69. Концепція модулів ядра в ОС Linux.
На сьогоднішній день Linux — монолітне ядро з підтримкою завантажуваних модулів.
Драйвери пристроїв і розширення ядра зазвичай запускаються на «кільці 0», з повним доступом до устаткування. На відміну від звичайних монолітних ядер, драйвери пристроїв легко збираються у вигляді модулів і завантажуються або вивантажуються під час роботи системи.
Завантажуваний модуль ядра (loadable kernel module чи LKM) — об'єктний файл, який містить код, що розширює працююче ядро, або так сказати базове ядро, операційної системи. LKM-и використовуються в основному для додавання підтримки нового апаратного забезпечення та/чи файлових систем, чи додавання системних викликів.
Завантажувані модулі ядра в Linux — це завантажені (або вивантажені) за допомогою команди modprobe. Вони розміщені в /lib/modulesта мають розширення .ko(«kernel object») з версії 2.6 (в попередніх версіях використовувалося розширення .o).[3]Команда lsmodпоказує список завантажених модулів ядра. В аварійних ситуаціях, коли система не може завантажитися через наприклад зіпсуті модулі, спеціальні модулі можуть бути включені або виключені за допомогою зміни завантажуваних параметрів ядра (наприклад якщо використовується GRUB, натискаєте 'e' в стартовому меню GRUB та редагуєте стрічку параметрів ядра).

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

71. Особливості нової реалізації багато потоковості в Linux.
Спроби удосконалити реалізацію багатопотоковості у ядрі системи, а також бібліотеку підтримки потоків, яка використовує нові можливості ядра, описані в літературі . Нова реалізація багатопотоковості у ядрі системи має такі особливості.
Підвищилася продуктивність операції створення і завершення потоків. Знято обмеження на загальну кількість потоків у системі. Система залишається ста­ більною за умов одночасного створення і завершення сотень тисяч потоків (за наявності достатнього обсягу оперативної пам'яті).
Усі потоки процесу тепер повертають один і той самий ідентифікатор (pid), крім того, зв'язок «предок-нащадок» між ними не підтримується (у створеного потоку зберігається той самий предок, що й у потоку-творця). Як процес у системі реєструють тільки початковий потік застосування.
Реалізацію виклику cloneO розширено таким чином, щоб зробити непотріб­ ним потік- менеджер.
Сьогодні нові засоби інтегровані у тестову версію ядра. Доступна також оновлена реалізація бібліотеки потоків, яка дістала назву NPTL (Native POSIX Threads Library).
Бібліотека підтримки потоків NPTL
Бібліотека NPTL призначена для того, щоб, спираючись на нові можливості ядра, забезпечити повну й коректну реалізацію стандарту потоків POSIX для використання у прикладних програмах.
Основною особливістю бібліотеки NPTL є те, що в ній збереглася підтримка схеми багатопотоковості 1:1, внаслідок чого досягається простота та надійність реалізації.
При цьому продуктивність і масштабованість забезпечені оновленою підтримкою багатопотоковості у ядрі. Програмний інтерфейс бібліотеки не змі­ нився порівняно з
LinuxThreads.

72. Структури даних для керування процесами в ОС UNIX.
Процес – це програма під час виконання в деякий момент часу довільної програми може відповідати один або декілька процесів, або не відповідати жодний. Процес – це об‘єкт, що враховується в спеціальній таблиці ядра системи.
Найбільш важлива інформація про процес зберігається в двох місцях:
- в таблиці процесів;
- в таблиці користувача (контекст процесу).
Перша – завжди знаходиться в пам‘яті і містить на кожний процес по одному елементу, в якому відображається точний стан процесу:
– розташування процесу (адреса в пам‘яті або адреса свопінгу);
– розмір;
– ідентифікатори процесу;
– ідентифікатори користувача що запустив процес.
Менш актуальна інформація про процес зберігається в таблиці користувача. Така таблиця існує для кожного активного процесу і тільки до неї можуть безпосередньо звертатись програми ядра.

73. Етапи початкового завантаження ОС UNIX.
Завантаження ядра системи в основну пам‘ять та її запуск називають початковим завантаженням. Ця процедура виконується при:
1. Увімкненні комп‘ютера.
2. Якщо відбувся крах системи.
3. Система була свідомо зупинена.
Початкове завантаження відбувається в декілька етапів.
1–й етап. Спочатку з диску апаратно читається в пам‘ять вміст першого блоку.
Перший блок файлової системи резервується для запису спеціальної короткої програми, що виконує початкове завантаження. Після зчитування ця програма виконується. При виконанні ця коротка програма–завантажувач шукає та читає в пам‘яті файл з іменем ―unix‖, що знаходиться в кореневому каталозі (‖/unix‖). Цей файл містить ядро ОС в машинних командах. Він створений шляхом компіляції та зв‘язку файлів, що включають вхідні коди ОС.
2–й етап. Другий етап початкового завершення починається з читання та наступного виконання файлу ―/unix‖. Перша функція ядра – ініціалізація декількох апаратних
інтерфейсів. Це стосується системного годинника та диспетчера пам‘яті. Ядро формує також початкові значення декількох структур даних в тому числі набори буферів блоків, списки символів, буфери індексних дескрипторів та змінну, що показує розмір основної пам‘яті.
Після завершення цих операцій ядро починає ініціалізувати процес 0. Процес 0, на відміну від інших процесів, що ініціалізуються функцією fork, створюється ядром шляхом резервування пам‘яті для його контексту та занесення відповідних посилань в перший елемент таблиці процесів.
Після створення процесу 0 система копіює його і створює процес 1. При цьому виконуються ті ж процедури, що і при виконанні користувачем системного виклику fork. Алгоритм створення процесу 1 в значній степені нагадує стандартну процедуру створення процесів, але дещо спрощену. Спочатку процес 1 є точною копією процесу
0, у нього немає області коду. Після створення процесу 1 відразу збільшується його розмір. Це створюється тими самими підпрограмами, що і при обробці системного виклику break (збільшення розміру виділеної пам‘яті).
До цього моменту обидва процеси: 0 та 1 тільки повинні бути в майбутньому виконані.
Далі процесу 1 надається життєздатність, тобто у тільки що створену область копіюється дуже проста програма. Ця програма складається з машинних кодів, що реалізують системний виклик exec, необхідний для виконання програми ―/etc/init‖.

74. Цикл подій для каналу зв’язку ОС UNIX.
Останній учасник ініціалізації системи програма getty. Кожна з цих програм очікує, коли хтось зайде в систему через визначений канал зв‘язку. При виконанні такої процедури getty виконує декілька налаштувань відповідно до протоколу каналу, а потім за системним викликом exec передає керування програмі login, яка реалізує перевірку паролю. Якщо пароль коректний, то знову за допомогою виклику exec контроль передається shell, що приймає команди користувача. Після завершення роботи активізується єдина ―жива‖ рідна програма init і послідовністю fork–exec створюється новий процес getty, що керує каналом, який очікує нового входу по даному каналу.

75. Ієрархічна структура пам’яті обчислювальних систем.
Означає, що різні види пам'яті утворюють ієрархію, на різних рівнях якої розташовані пам'яті з різними часом доступу, складністю, вартістю та обсягом. Можливість побудови ієрархії пам'яті викликана тим, що більшість алгоритмівзвертаються в кожний проміжок часу до невеликого набору даних, який може бути поміщений у швидшу, але дорожчу і тому невелику, пам'ять (див. locality of reference).
Використання швидшої пам'яті збільшує продуктивність обчислювального комплексу.
Під пам'яттю в даному разі мається на увазі пристрій (пристрої) зберігання даних в обчислювальній техніці або комп'ютерна пам'ять.
Часто виділяють 4 основних (укрупнених) рівня ієрархії:
Внутрішня пам'ять процесора (регістри, організовані в регістровий файл і кеш процесора).
Основний — оперативна пам'ять системи (англ. RAM) і допоміжних карт пам'яті.
Накопичувачі з «гарячим» доступом (англ. On-line mass storage) — або вторинна комп'ютерна пам'ять. Жорсткі диски і твердотільні накопичувачі, які не потребують тривалих (секунди і більше) дій для початку отримання даних.
Накопичувачі, що вимагають переключення носіїв (англ. Off-line bulk storage) — або третинна пам'ять. Сюди відносяться магнітні стрічки, стрічкові і дискові бібліотеки, які потребують тривалого перемотування або механічного (або ручного) перемикання носіїв інформації.
У більшості сучасних обчислювальних системах розглядається наступна ієрархія пам'яті:
1. Регістри процесора, організовані в регістровий файл — найбільш швидкий доступ
(близько 1 такту), але розміром лише в декілька сотень або, рідко, тисяч байт.
2. Кеш процесора 1го рівня (L1) — час доступу порядку декількох тактів, розміром в десятки кілобайт.
3. Кеш процесора 2го рівня (L2) — більший час доступу (від 2 до 10 разів повільніше
L1), близько половини мегабайта або більше.
4. Кеш процесора третього рівня (L3) — час доступу близько сотні тактів, розміром в декілька мегабайт (у масових процесорах використовується з недавнього часу).
5. ОЗП системи — час доступу від сотень до, можливо, тисячі тактів, але величезні розміри в кілька гігабайт, аж до десятків. Час доступу до ОЗУ може змінюватись для різних його частин у випадку комплексів класу NUMA (з неоднорідним доступом в пам'ять).
6. Дискове сховище — багато мільйонів тактів, якщо дані не були закешировані або забуферизовані заздалегідь, розміри до декількох терабайт.

76. Основні задачі, що розв’язуються при побудові пам’яті обчислювальних
систем.
Комп'ютерна пам'ять — частина ЕОМ, фізичний пристрій або середовище для зберігання даних протягом певного часу. В основі роботи запам'ятовуючих пристроїв може лежати будь-який фізичний ефект, що забезпечує приведення системи до двох або кількох стійких станів. У сучасній комп'ютерній техніці часто використовуються фізичні властивості напівпровідників, коли проходження струму через напівпровідник або його відсутність трактується як наявність логічних сигналів 0 або 1. Стійкі стани, що визначаються напрямком намагніченості, дозволяють використовувати для зберігання даних різноманітні магнітні матеріали. Наявність або відсутність заряду в конденсаторі також може бути покладена в основу системи зберігання інформації.
Система зберігання інформації в сучасному цифровому комп'ютері заснована на двійковій системі числення. числа, текстова інформація, зображення, звук, відео та
інші форми даних представляються у вигляді послідовностей бітових рядків або бінарних чисел, кожне з яких складається зі значень 0 і 1. Це дозволяє комп'ютеру легко маніпулювати ними за умови достатньої ємності системи зберігання
Спершу, перед побудовою пам’яті потрібно визначити деякі її характеристики та її призначення. Чи вона буде енергозалежною чи ні, який буде доступ до пам’яті: послідовний чи довільний, чи асоціативний ітд., блоковий чи файловий доступ, тип пам’яті: кеш, оперативна чи зовнішня. Яка ємність пам’яті має бути, розрядність, на який елементах побудована.
Організація та керування основною, або первинною, або фізичною (реальною) пам’яттю комп’ютера — один з найважливіших факторів, що визначає побудову операційних систем.
Також при проектуванні високопродуктивних комп'ютерів і систем необхідно розв'язати багато компромісів, таких як розміри і технології для кожного рівня
ієрархії. Можна розглядати набір різних типів пам'яті (m1,m2,…,mn), які знаходяться в
ієрархії, тобто кожен mi рівень є підлеглим для mi+1 рівня ієрархії. Для зменшення часу очікування на вищих рівнях, нижчі рівні можуть готувати дані укрупненими частинами з буферизацією і, після наповнення буфера, сигналізувати верхньому рівню про можливість отримання даних.

77. Класифікація обчислювальних систем за стратегією розподілу пам’яті.
В перших комп’ютерах було реалізовано зв’язний розподіл пам’яті — в одному неперервному блоці комірок пам’яті. Тільки після того, як з’явилось мультипрограмування з розділами змінного розміру стало зрозумілим, що значно більш ефективним може бути незв’язний розподіл.
При незв’язаному розподілі пам’яті, програми розбиваються на декілька блоків або сегментів, які розміщуються в основній пам’яті в ділянках які не обов’язково розташовані поряд.
ОС набагато складніше забезпечити незв’язаний розподіл пам’яті, але подібний підхід має важливу перевагу: якщо основна пам’ять має декілька невеликих вільних ділянок замість одного великого, то ОС все ж таки може завантажити та виконати програму, якій в іншому випадку треба було б чекати.
Розподіл пам’яті може бути як фізичний так і логічний. Фізичний розподіл пам’яті це коли комп’ютер звертається до фізичної адреси комірки. Логічний розподіл – це коли адреса комірки може складатись з декількох складових(початок блоку + зміщення ітд), а потім на основі цієї інформації визначається фізична адреса.
Крім того пам’ять може бути розподілена на блоки, сторінки та віртуальну пам’ять.
Блоки це частини виділеної пам’яті(для даних, наприклад під масиви чи об’єкти класів), сторінки –це великі блоки пам’яті, що виділяються для роботи ОС, для процесів. 7
Ну і віртуальна пам’ять – це та, яка існує в межах фізичної пам’яті, але до неї можна звертатись по інакших значеннях комірок та може працювати за інакшими принципами ніж фізична, а також має програму-посередника що переводить команди доступу до віртуальної пам’яті на адреси, для доступу до фізичного блоку, що їй відповідає.


1   2   3   4   5   6   7   8   9   10

скачати

© Усі права захищені
написати до нас