Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка.doc
Скачиваний:
20
Добавлен:
08.11.2018
Размер:
1.15 Mб
Скачать

Короткий перелік основних команд утиліти налагоджувача debug, що використовується у лабораторній роботі 5

  • Команда переглядання вмісту пам'яті. - D (від Diplay - показати). Звернення до елементів пам'яті проводиться за адресами. Приклад запису адреси 1234 : 5678 (сегмент : зсув) В команді D необхідно вказати, яку частину пам'яті ми хочемо переглянути: починаючи з якої адреси і скільки елементів пам'яті. Приклади: - D F000:6000 починаючи з адреси F000:6000 показується 128 байт по замовченню. - D F000:6000 6800 показується вміст елементів пам'яті з адреси F000:6000 по адресу F000:6800. - D F000:6000 L 100 починаючи з адреси F000:6000 показується число байт, що задається в команді ( у даному прикладі 100h) (від Length - довжина) Ці три способи завдання області пам'яті називаються завданням діапазону.

  • Команда для перегляду і зміни значень регістрів -R (від Register - регістр) - R Показує вміст всіх регістрів комп'ютера і зміст наступної інструкції. Наприклад - R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=270E ES=270E SS=270E CS=270E IP=0100 NV UP EI PL NZ NA PO NC 270E:0100 8AFF MOV BH,BH - R <им'я регістра> Виводить на екран вміст вказаного регістра і дає можливість ввести нове значення цього регістра. Приклад: - R IP на екрані з'являється вміст регістра IP і запрошення до введення у вигляді ":" IP 0110 :0100 Після запрошення слід набрати нове значення регістра або натиснути клавішу введення, для того, щоб залишити вміст регістра без змін.

  • Команда дизасемблювання - U (Unassemble) транслює шістнадцяткові коди машинних команд в команди мови асемблера.

Приклад: - U 100,105 В даній команді вказані адреса першої команди і адреса, що належить останній з команд, які підлягають дизасемблюванню. Результат виконання команди має такий вигляд: -U 100,105 270E:0100 B82301 MOV AX,0123 270E:0103 052500 ADD AX,0025 Команду, що виконує ті ж дії можна записати інакше: - U 100 L 6 В ній вказана адреса, починаючи з якої проводити дизасемблювання (зсув 100h) і довжина фрагмента (6h).

  • Команда для введення команд асемблера і перетворення їх в машинні коди - A (від Assemble -ассемблювати). Приклад: - A 100 В команді вказана адреса, починаючи з якої команди поміщатимуться в пам'ять (для .COM- файлів зсув 100h в сегменті кодів CS). Введення кожної команди слід завершувати  натисненням клавіші Enter. При повторному натисненні цієї клавіші операція введення команд асемблера буде припинена. Вид екрану буде приблизно таким: - A 100 270E:0100 MOV AL,25 270E:0102 MOV BL,32 270E:0104

  • Команда трасування - T (від Trace - пройти до даної крапки) використовується для виконання програми в покроковому режимі, виконує програму по одній команді за раз, показуючи стан процесора, що відображається його регістрами.

4.6 Еволюція операційних систем

У 1940-1950 рр. однопроцесорні машини були недостатньо гнучкими і ефективними. Запуск кожної програми, що називали завданням (job), проводився окремо.

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

Більшість черг завдань не наслідують в точності принципу FIFO (First In - First out) "Першим увійшов - першим вийшов", оскільки велика частина операційних систем підтримують установку пріоритетів завдань. В результаті виконання завдання, що знаходиться в черзі, може бути відсунуте на пізніший термін завданням з вищим пріоритетом.

У ранніх системах пакетної обробки кожне завдання супроводжувалося набором інструкцій, що описують кроки, які необхідні для підготовки машини до виконання завдання. Інструкції кодувалися на мові управління завданнями (JCL, Job Control Language) і поміщалися разом із завданням в чергу завдань.

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

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

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

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

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

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

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

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