Програма емуляції роботи командного процесора операційної системи

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

±ку файлу автозапуску (AUTOEXEC.BAT) при завантаженні системи; стандартну обробку переривань. Компютер, на якому буде працювати командний процесор повинен мати такі параметри: оперативної памяті 1Mb або більше; мінімум процесор 286DX/66MHz; ОС MS-DOS не нижче версії 5.0. Ще одним важливим елементом є файлова система жорсткого диску. Так як MS-DOS не працює з файловою системою NTFS, тоді дана програма не зможе працювати з даною файловою системою через іншу будову памяті. Тому дана програма буде працювати з файловою системою FAT16 чи FAT32.

 

2.2 Передача параметрів у мові С++

 

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

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

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

У випадку з мовою програмування Асемблера функції можуть звертатися до параметрів, передаючих в стеку, за допомогою звертання до регістру BP.

2.3 Системні ресурси та опис принципів роботи

 

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

Компютер, який необхідний для запуску програми(мінімальна конфігурація):

- процесор 286DX/66MHz або кращий;

- ОС MS-DOS;

- Оперативної памяті 1Mb або більше.

Програма повинна містити:

1.Точку входу в програму;

2.Головну суперпетлю (частина інтерактивної програми, яка містить нескінченний цикл чекання дії користувача);

3. Модуль аналізу команди користувача;

4. Модулі, які відповідають командам, реалізованим в даному варіанті.

Крім того, програма обовязково повинна реагувати на команди exit (або аналогічну), за якою програма повинна коректно завершувати свою роботу, та help (або аналогічну), за якою видається коротка довідка про написану програму. Кожна з команд повинна мати такий параметр (наприклад, “/?”), за яким користувачу повинна надаватись довідка по використанню даної команди.

 

3. Практична частина

 

3.1 Розробка алгоритму програми

 

В даному пункті описується алгоритм по якому буде написана програма емуляції роботи командного процесора ОС. Дані в програму будуть передаватись за допомогою командної стрічки. В тимчасову змінну будуть потрапляти дані введені у командній стрічці. Командна стрічка буде розбиватись на команду і відповідні аргументи, після чого буде проводитись аналіз командної стрічки наступним чином:

Алгоритм основної програми

  1. Створюємо масив command_line довжиною 100 символів та встановлюємо command_number=6 максимальна кількість команд.
  2. Зчитуємо command_line, поки він не перестане бути порожнім.
  3. Ріжемо стрічку по пробілам до кінця. Перше слово команда, яку необхідно виконати, іші аргументи функції.
  4. У структурі CommandLIST шукаємо номер введеної команди і присвоюємо його змінній cmd.
  5. Відповідно до номера команди виконуємо функції. Якщо 0 то виводимо повідомлення, що введена невідома команда, 1 завершуємо виконання програми, 2 виводимо допоміжну інформацію по програмі, 3-6 виконуємо відповідні функуції згідно структури CommandLIST.

 

3.2 Опис системних функцій

 

Join

Для реалізації команди join потрібно відкрити перший файл скопіювати його вміст в буфер, створивши новий файл копіюємо в нього вміст буфера. Після цього відкриваємо другий файл копіюємо його вміст в буфер, після чого копіюємо вміст буфера в створений файл, при цьому продовжуючи інформацію від першого файлу. Для реалізації даної команди використані такі функції як: fopen, fclose, fread, fwrite, fflush.

Ar

В даній команді реалізовано наступний підхід: ми використовуємо функцію мови С++ spawnl або system, які дозволяють запускати на виконання зовнішні програми з нашої. Потім, передаємо архіватору необхідні команди і виконуємо вказану дію, інформуючи користувача.

Edit

Дана команда виконує функцію створення файлу. Для цього їй потрібно відкрити файл із заданою назвою, зчитати його зміст, а якщо він не існує то створити його. Після чого відбувається емуляція текстового редактора і обробляються команди користувача. При натисненні клавіші Tab користувачем, файл зберігається, включаючи зміни. Для реалізації даної команди використані такі функції як: fopen (відкриває потік і звязує з цим потоком визначений файл), fseek ( функція яка виконує операції прямого доступу до файлу), fclose ( закриває потік, відкритий функцією fopen), ftell (повертає поточне значення показника поточній позиції ф файлі), putc (записує символ в файл), getc ( функція зчитує символ з файлу).

Split

Формат команди за техні?/p>