02.ОС.Алгоритми.ppt
- Количество слайдов: 36
Операційні системи. Поняття алгоритму.
Операційна система — це базовий комплекс програмного забезпечення, що виконує управління апаратним забезпеченням комп'ютера або віртуальної машини; забезпечує керування обчислювальним процесом і організує взаємодію з користувачем. Операційна система звичайно складається з ядра операційної системи та базового набору прикладного програмного забезпечення.
n n n Ядро системи — це набір функцій, структур даних і окремих програмних модулів, які завантажуються в пам'ять комп'ютера при завантаженні операційної системи і забезпечують три типи системних сервісів: управління введенням-виведенням інформації (підсистема вводу-виводу ядра ОС); управління оперативною пам'яттю (підсистема управління оперативною пам'яттю ядра ОС); управління процесами (підсистема управління процесами ядра ОС). Багатозадачні операційні системи також включають ще одну обов'язкову складову - механізм підтримки багатозадачності. Ця складова не надається в якості системного сервісу і тому не може бути віднесена до жодної з підсистем.
Перші комп'ютери взагалі не мали ОС. На початку 1960 -х вони лише комплектувались набором інструментів для розробки, планування та виконання завдань. До кінця 1960 -х, проте, було розроблено цілий ряд операційних систем, в котрих були реалізовані всі, або більшість з вищеперелічених фукнцій. У 1969 році співробітники МТІ Кен Томпсон, Деніс Рітчі та Брайан Керніган з колегами розробили та реалізували ОС «Юнікс» ( «Unix» ; первинно «UNICS» ), котра увібрала в себе багато рис попередниць, але на противагу їм мала цілий ряд переваг:
n n n проста метафорика (два ключових поняття — процес та файл); компонентна архітектура (принцип «одна програма — одна функція» , або інакше «кожна програма має робити лише одну роботу, але робити її добре» плюс потужні засоби об'єднання цих програм для вирішення конкретних задач); мінімізація ядра та кількості системних викликів; незалежність від апаратної архітектури і реалізація на машиннонезалежній мові програмування (для цього була розроблена мова програмування «C» ); уніфікація файлів (будь-що у системі є файлом, до котрого можна отримати доступ по спільних для всіх правилах).
Завдяки зручності перш за все в якості інструментального середовища «Юнікс» дуже тепло зустріли в університетах, а потім і в галузі в цілому і незабаром вона стала прототипом єдиної ОС, котру можна було використовувати у найрізноманітніших обчислювальних системах, і — більше того — швидко та з мінімумом зусиль перенести на іншу апаратну архітектуру.
n n n До юнікс-подібних ОС відноситься велика кількість операційних систем, котрі можна умовно поділити на три категорії: System V (базуються на останній версії «Юнікс» , випущеної «Bell Labs» ); BSD (базуються на розробках Університету Берклі); Лінукс (розроблена спільнотою на чолі з Лінусом Торвальдсом в межах проекту «GNU» (рекурсивсне скорочення «GNU's Not Unix» ). Серед різних дистрибутивів Linux, в першу чергу слід відмітити Debian, Fedora, Ubuntu, Mandrake та Suse.
Скріншот робочого столу Linux Mandriva 2010
Linux Mandriva 2010 і запущений у віртуальній машині Windows XP
Родина операційних систем Microsoft Windows Станом на сьогодні Windows утримує монопольне становище світового ринку настільних систем, дещо втрачаючи позиції через зростання популярності систем з відкритими вихідними кодами. Перші версії Windows не були повноцінними операційними системами. З одного боку, при роботі з цими версіями Windows користувачі мали змогу використовувати віконний інтерфейс, керування за допомогою миші та інші візуальні способи взаємодії з комп'ютером. В той самий час ці версії Windows самі не мали змоги взаємодіяти з компонентами комп'ютера безпосередньо і використовували для цього можливості ОС MS-DOS.
n n n n n 1985 листопад — Windows 1. 0 фактично не використовувалась 1987 9 грудня — Windows 2. 0 1992 серпень — Windows 3. 1 1992 жовтень — Windows for Workgroups 3. 1, з'явилась підтримка локальної мережі 1993 листопад — Windows for Workgroups 3. 11 Родина Windows 9 X 1995 24 серпня — Windows 95 1998 25 червня — Windows 98 1999 5 травня — Windows 98 Second Edition 2000 19 червня — Microsoft Windows Me
n n n n n Родина Windows NT 1993 серпень — Windows NT 3. 1 1994 вересень Windows NT 3. 51 1996 29 липня Windows NT 4. 0, Windows NT 4. 0 Server 2000 17 лютого Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, Windows 2000 Datacenter Server 2001 25 жовтня Windows XP Home Edition, Windows XP Professional 2003 Windows Server 2003 2007 30 січня Windows Vista 2009 22 жовтня Windows 7 2012 26 жовтня Windows 8
Типовий робочий простір Windows 3. 1
Робочий стіл Windows 95
Windows XP Service Pack 3
Робочий стіл Windows 7
Стартовий екран Windows 8
OS X (до версии 10. 7 Lion називалась Mac OS X) — це ряд графічних ОС, що розробляються, реалізуються та підтримуються компанією Apple. Mac OS X — це наступниця оригінальної Mac. ОС, що її розробляла Apple з 1984 року. На відміну від попередниці, OS X є Юнікс-системою, що розроблена на основі NEXTSTEP. Випуски Mac OS X називаються іменами великих тварин з родини котячих. Наприклад, версія 10. 6 носить назву Snow Leopard (Сніговий барс), версія 10. 7 - Lion (Лев), версія 10. 8 - Mountain Lion (Гірський лев, або пума)
Загальний вигляд Mac OS X v 10. 6 Snow Leopard
Screenshot OS X 10. 8 Mountain Lion
Поняття алгоритму. Властивості алгоритмів Більшість обчислювальних процесів може бути реалізована на ЕОМ лише після створення алгоритмів розв`язування задач на основі умов цих задач та вимог до кінцевого результату. У тлумачному словнику з інформатики алгоритм визначається як сукупність точних вказівок, що обумовлюють обчислювальний процес і приводить від початкових даних до шуканого результату. Якщо алгоритм створений правильно, то його виконає й такий виконавець, котрий може і не знати всіх нюансів розв`язання задачі, але дотримавшись вказівок, отримає результат. Приклад, кулінарний рецепт.
Стосовно ЕОМ алгоритмом називають систему правил, що визначає послідовність дій, які повинен виконати комп`ютер, щоб знайти результат розв`язання задачі. Іншими словами, алгоритм визначає низку операцій та правил, їх чергування, виконання яких дозволяє розв`язати задачу. На основі алгоритму складається програма розв`язку задачі на комп`ютері. Термін "алгоритм" з`явився внаслідок трансформування імені в латинізованій формі (Algorismus, Algorithmus) відомого математика, астронома, географа, засновника класичної алгебри Хорезмі (аль-Хорезмі) Мухаммеда бен Муса (Хорезм, біля 780 р. -біля 850 р. ).
Послідовність інструкцій є алгоритмом, якщо вона задовольняє таким вимогам: n дискретність: алгоритм являє собою послідовність кроків, на кожному з яких виконується та чи інша інструкція; кожна наступна інструкція виконується після того, як завершиться виконання попередньої; n елементарність кроків: кожна інструкція є елементарною для виконавця і не вимагає від нього ніякої винахідливості; n локальність кроків: процес виконання інструкції не вимагає повернення до попередніх інструкцій або звертання до наступних;
детермінованість: після завершення чергового кроку завжди відомо, що робити на наступному кроці; n результативність: повинно бути визначено, що слід вважати результатом роботи алгоритму; n скінченність: результат повинен досягатися за скінченну кількість кроків; n масовість: алгоритм повинен бути призначений для вирішення не однієї конкретної задачі, а цілого класу однотипних задач. n
Відомо декілька способів запису алгоритмів: словесний, словесноформульний, за допомогою структурних схем і за допомогою програм, написаних на якій-небудь алгоритмічній мові. Блок-схема − наочне графічне зображення алгоритму, в якому окремі етапи алгоритму зображуються за допомогою різних геометричних фігур (блоків), а зв’язки між етапами (послідовність виконання етапів) зображується за допомогою стрілок, що з’єднують ці фігури.
Графічний спосіб подання алгоритмів передбачає, що кожен тип дій (введення вхідних даних, обчислення значень змінних, перевірка умов тощо) описується із застосуванням відповідної геометричної фігури (символу), яку ще називають блоком. Види фігур, їх розміри чітко визначені документом "Єдина система програмної документації", витяг із якого наведений у таблиці далі
Назва блоку (вид дій) Позначення блоку (геометрична фігура) Пояснення (правила застосування) Процес Обчислювальна дія, Послідовність обчислювальних дій Введення – виведення У блоці вказуються імена змінних, що підлягають введенню (виведенню). Частіше цей блок застосовують для введення даних Документ Виведення, Друкування результатів
Вибір або Перевірка умови. Якщо умова виконується, обчислювальний процес буде направлений по "так", інакше – по "ні" Перевірка значення деякого виразу (V) відносно нуля (V<0, V>0, V=0) та відповідний вибір подальшого напрямку обчислювального процесу Модифікація Початок циклу. В блоці вказується ідентифікатор параметра циклу (позначення незалежної змінної, по якій здійснюється цикл); значення початку, кінця та кроку зміни параметра циклу Початок – кінець Початок або кінець обчислювального процесу, вхід або вихід в підпрограмах
Алгоритми поділяють на лінійні, розгалужені і циклічні. Лінійним називають такий обчислювальний процес, в алгоритмі якого використовується лише базова конструкція типу слідування. Це означає, що у процесі реалізації алгоритму лінійної структури дії виконуються один раз, а їх послідовність визначається номером блочного символу.
Розгалуженим називають такий обчислювальний процес, в алгоритмі якого передбачене розгалуження деякої послідовності дій на два (іноді три) напрямки залежно від результату перевірки заданої умови. В алгоритмах розгалуженої структури завжди присутній блочний символ "Вибір", після якого дії виконуються по одній із двох (трьох) гілок. Циклічним називають такий обчислювальний процес, в алгоритмі якого деяка група блочних символів виконується багаторазово. Алгоритм циклічної структури застосовується як самостійно (наприклад, для обчислення значень функцій, для обробки масивів даних), так і в складі більш складних алгоритмів.
n n n Розв’язування будь-якої задачі в програмуванні включає такі етапи: постановка завдання: що треба вирішити, які потрібні результати та інше; вибір методу вирішення: яким методом (методами) можна вирішити поставлене завдання. Вибрати найкращий метод (співвідношення точність-час); складання алгоритму: скласти алгоритм програми природною мовою або у вигляді блок -схем; запис алгоритму мовою програмування: перевести алгоритм на мову програмування, іноді об’єднують зі складанням алгоритму; відлагодження алгоритму: пошук помилок.
Програма, яка повинна виконуватися, записана в машинних кодах, тобто машинною мовою. Машинна мова передбачає запис інструкцій та операндів у вигляді послідовностей нулів та одиниць. Кажуть, що машинна мова є мовою низького рівня. Програма в машинних кодах являє собою послідовність команд, які процесор може сприйняти і виконати безпосередньо. Кожний тип машин має свою машинну мову. Машинний код, написаний для однієї машини, не може бути виконаний на іншій без використання спеціального програмного забезпечення. Програмування в машинних кодах є дуже важкою справою. Важко тримати в пам'яті машинні коди і дуже легко припуститися помилки. Крім того, при переході на іншу машину все програмне забезпечення доводиться переписувати заново.
Але виявилося, що можна програмувати мовою, більш сприйнятною для людини, якщо автоматизувати процес перекладу з цієї мови на машинну. Ця ідея лягла в основу мов високого рівня. Мови програмування високого рівня дозволяють писати програми в формі, більш наближеній до звичайної мови. Програму, написану мовою високого рівня, можна більш легко читати і модифікувати, і вони значно полегшують роботу програміста порівняно з написанням машинного коду. Для перекладу програм, написаних мовою високого рівня, в машинні коди, існують спеціальні програми. Такі програми називаються трансляторами.
Важливою особливістю мов високого рівня є їх відносна незалежність від машини. Це означає, що правила запису програм не залежать або мало залежать від особливостей конкретної машини. Тоді для перенесення програми на іншу машину програму не обов'язково переписувати заново, достатньо лише транслювати її в коди, специфічні для цієї машини. Слід відмітити, що повна незалежність від машини буває не завжди, на практиці програми не завжди можна переносити без змін з машини на машину. Часто доводиться здійснювати доробки, інколи досить значні.
Виділяють два типи трансляторів - компілятори та інтерпретатори. n Компілятором називається програма, яка сприймає програму, написану мовою високого рівня, і генерує відповідний машинний код. Цей машинний код надалі може виконуватися незалежно від компілятора. n Інтерпретатор сприймає кожну інструкцію програми окремо, перетворює її на деякий проміжний код, і негайно виконує цей код. Незалежний машинний код при цьому не створюється.
Програма визначається як "алгоритм, тобто послідовність інструкцій, який записаний мовою, що зрозуміла комп'ютеру". Типова програма реалізує так званий IPO-принцип (Input - Processing - Output). Програма вводить деякі вхідні дані, обробляє їх відповідно до заданого алгоритму і видає вихідні дані, тобто результат. Велике значення мають інтерактивні програми, які в ході своєї роботи можуть сприймати команди від користувача і здійснювати з ним діалог.


