Міністерство освіти і науки України
Вінницький технічний коледж
Спеціальність: 5.091504
Програма емуляції роботи командного
процесора операційної системи
Пояснювальна записка
до курсового проекту
з дисципліни: „Системне програмування ”
Виконав: студент групи 4ОК2
Гладкий А.В.
Прийняв:
Кисюк Д.В.
Вінниця 2010
ВСТУП
Мова С була винайдена і реалізована Деннісом Рітчі (Dennis Ritchie) для комп'ютера DEC PDP-11 в операційній системі Unix. Ця мова була розроблена на основі "старішої" мови BCPL, створеної свого часу Мартіном Річардсом (Martin Richards). BCPL зробив певний вплив на мову В, розроблену Кеном Томпсоном (Ken Thompson). У свою чергу розвиток мови В привів до створення в 1970 році мови С.
Впродовж багатьох років стандартом С була фактично версія, що поставляється разом з операційною системою Unix. Ця версія вперше була описана Браяном Керніганом (Brian Kernighan) і Деннісом Рітчі в книзі The С Programming Language (Englewood Cliffs, N.J.: Prentice-Hall, 1978). Влітку 1983 року був утворений комітет із створення для мови С стандарту ANSI (American National Standards Institute — Національний інститут стандартизації США). Треба відзначити, що процес стандартизації зайняв вельми чималий термін — шість років.
Стандарт ANSI був остаточно прийнятий в грудні 1989 року і вперше опублікований на початку 1990 року. Цей стандарт був також прийнятий організацією ISO (International Standards Organization — Міжнародна організація по стандартизації), тому він називається стандартом ANSI/ISO мови С++. У 1995 році була прийнята 1-а поправка до стандарту С++, згідно якої, серед іншого, було додано декілька бібліотечних функцій. У 1989 році стандарт С разом з 1-ю поправкою став базовим документом стандарту C++, що визначає С як підмножина C++. Версію С, визначену стандартом 1989 року, звичайно називають С89.
Впродовж 90-х років увага програмістів була прикована головним чином до розвитку стандарту C++. Тим часом розробка С також продовжувалася, привівши в 1999 році до появи стандарту С, який прийнято називати С99. В цілому С99 зберіг всі основні риси С89, тобто,
можна сказати, що мова С залишилась сама собою! Комісія стандартизації С99 надала основну увагу двом напрямам: додаванню декількох чисельних бібліотек і розвитку нових вузькоспеціальних засобів, таких як масиви змінної довжини і модифікатор покажчика restrict. Завдяки цим нововведенням мова С++ знову виявилась на вістрі розвитку мов програмування.
Версія С стандарту 1989 року в даний час найпоширеніша версія, вона використовується всіма компіляторами С, вона ж є основою для C++.
Мову С++ часто називають мовою програмування середнього рівня. Але це не значить, що С++ менш могутня, менш розвинена або важча у використанні, ніж мови високого рівня, такі як Basic або Pascal. Це також не значить, що С++ така ж громіздка і незручна, як асемблер. Мовою середнього рівня її називають швидше тому, що вона об'єднує в собі кращі риси мов високого рівня з можливостями асемблера.
Як мова середнього рівня С++ дозволяє маніпулювати бітами, байтами і адресами, тобто тими базовими елементами даних, з якими працює комп'ютер. Не дивлячись на це програма, написана на С++, володіє високою переносимістю. Переносимість — це властивість програмного забезпечення, створеного для одного типу комп'ютера або операційної системи, яке дозволяє легко переробити його для іншого типу, тобто перенести в інше обчислювальне середовище. Наприклад, якщо програму, що працює під управлінням DOS, легко переробити так, щоб вона працювала під управлінням Windows 2000, то така програма називається переносимою.
Всі мови високого рівня дотримуються концепції типів даних. Тип даних є набором значень, що зберігаються в змінних, а також набір операцій, виконання яких допускається над цими значеннями. Звичні типи даних — це цілі числа, символи і числа з плаваючою крапкою. Мова С++ має декілька вбудованих типів даних, проте вона не є мовою, що сильно типізується, як Pascal або Ada. У мові С++ допускаються майже всі перетворення типів. Наприклад, у виразах можна вільно змішувати змінні символьного і цілого типів.
На відміну від більшості мов високого рівня, в С++ майже відсутній контроль помилок в процесі виконання програми. Наприклад, не перевіряється порушення меж масивів. Відповідальність за подібні помилки повністю покладається на програміста.
Аналогічно цьому С++ не вимагає строгої сумісності параметрів і аргументів функцій. У мовах програмування високого рівня звичайно необхідно, щоб тип аргументу більш менш відповідав типу параметра. Для С++ це не характерно, тут аргумент може мати майже будь-який тип, якщо його можна розумно перетворити в тип параметра. Більш того, компілятор С++ автоматично здійснює всі види необхідних перетворень.
Відмітною особливістю мови С++ є можливість маніпулювання безпосередньо бітами, байтами, словами і покажчиками. Тому С++ добре пристосована для системного програмування.
Інша важлива особливість С++ — це мала кількість ключових слів, складаючих команди мови. У С89 визначено 32 ключові слова, причому в С99 додано лише 5 слів. Мови високого рівня звичайно мають значно більше ключових слів, наприклад, в більшості версій мови Basic їх кількість перевищує сотню! Із за того, що в мові відсутні засоби введення/виведення й т.п., при програмуванні на ній істотну роль грає бібліотека стандартних програм, що здійснюють взаємодію із системою. У всіх системах, сумісних з ОС UNIX, існує сумісний набір програм для введення/виведення, керування пам'яттю, перетворення даних і виконуючи інші функції, використання яких забезпечує можливість переносу програм на інші ЕОМ.Командний процесор COMMAND.COM розташовується на системному диску як звичайний файл. При завантаженні на згадку частина зазначеного файлу, називається резидентною (оскільки вона постійно розміщається в ОЗП), розташовується за BIO.COM і DOS.COM, інша частина - транзитна, розташовується, починаючи зі старших адрес пам'яті процесора. Резидентна частина разом із двома файлами (DOS.COM і BIO.COM) становлять ядро ОС, що постійно перебуває в оперативній пам'яті. Основними функціями командного процесора є: прийом і розбір команд, отриманих із клавіатури або з командного файлу; виконання вбудованих команд DOS, що перебувають усередині файлу COMMAND.COM; завантаження й виконання зовнішніх програм DOS і прикладних програм (це файли типу COM і EXE); обробку файлу автозапуску (AUTOEXEC.BAT) при завантаженні системи; стандартну обробку переривань.
1. Аналіз технічного завдання
Будь-який процесор повинен сприймати та виконувати команди, які вводить користувач. Нескінченний інтерактивний цикл призначений для того щоб користувач міг вводити команди за допомогою клавіатури. Вихід з даного циклу супроводжується за допомогою появи команди “exit”, яка дає змогу вийти з даного циклу. Якщо в даному циклі не буде передбачений вихід за допомогою команди “exit”, то з нього буде можливо вийти лише аварійно.
Дана програма має такі модулі команд: edit, split, join, ar. Після вибірки команди, яку ввів користувач, за допомогою номеру команди визначається сама команда, яку користувач ввів на виконання після чого визивається модуль команди, який починає виконувати операції. Команда edit виконує функцію створення файлу, після того як користувач ввів команду. Для цього перевірялось правильність введення команди, назви файлу який потрібно створити, потім відкривається цей файл для подальшої роботи з ним. Команда join виконує з’єднання двох текстових файлів в один. В результуючому файлі після склеювання буде міститися інформація двох інших. Команда ar виконує архівування або розархівування вказаних файлів за допомогою зовнішнього архіватора. Команда split повинна розрізати текстовий файл на частини.
Крім вищезазначених команд дана програма повинна містити ще дві команди, а саме help та exit. За допомогою цих команд можна отримати довідку про саму програму або за допомогою команди exit правильно вийти з програми. Дані команди повинні вводитися правильно і в певній послідовності. Для отримання довідки про правильність введення команди можна отримати за допомогою введення параметру /?. Це дозволяє користувачу, який вперше користується даною програмою взнати про правильність користування командами.
2 Теоретична частина
2.1 Операційна система
Операційна система - це програма, яка завантажується при включенні комп'ютера. Вона веде діалог з користувачем, здійснює управління комп'ютером, його ресурсами (оперативною пам'яттю, місцем на дисках і т. д.), запускає інші (прикладні) програми на виконання. Операційна система забезпечує користувачу і прикладним програмам зручний спосіб спілкування (інтерфейс) з пристроями комп'ютера.
Основна причина необхідності операційної системи полягає в тому, що елементарні операції для роботи з пристроями комп'ютера і управління ресурсами комп'ютера - це операції дуже низького рівня, тому дії, які необхідні користувачу і прикладним програмам, складаються з декількох сотень або тисяч таких елементарних операцій.
Операційна система приховує від користувача ці складні і непотрібні подробиці і надає йому зручний інтерфейс для роботи. Вона виконує також різні допоміжні дії, наприклад, копіювання або друк файлів. Операційна система здійснює завантаження в оперативну пам'ять всіх програм, передає їм управління на початку їх роботи, виконує різні дії по запиту виконуваних програм і звільняє займану програмами оперативну пам'ять при їх завершенні.
Командний процесор обробляє команди, що вводяться користувачем. Основні функції командного процесора полягають в організації діалогу з оператором, виконанні команд, що подаються з клавіатури, і інтерпретації командних файлів.
Механізм роботи текст-орієнтованого інтерфейсу краще розглянути на прикладі командного процесора MSDOS, який до речі входить до складу операційної системи Windows.
Вона складається з наступних компонентів: