Таненбаум Э.- Архитектура компьютера. стр.333

40. Напишите подпрограмму на ассемблере для преобразования целого двоичного числа со знаком в А5СН-код.

41. Напишите подпрограмму на ассемблере для преобразования инфиксной формулы в обратную польскую запись.

42. Процедура для решения задачи «Ханойская башня» — не единственная рекурсивная процедура, любимая многими компьютерщиками. Есть еще одна очень популярная рекурсивная процедура п\у где п\ = п(п - 1)!, которая подчиняется ограничивающему условию 0! = 1. Напишите на вашем любимом ассемблере процедуру для вычисления п\.

43. Если вы не прочь пошевелить мозгами в свободное время, попробуйте написать программу для решения задачи «Ханойская башня» без рекурсии, а путем поддержания стека в массиве. (Имейте в виду, что решения вы по всей вероятности найти не сможете.)

Глава 6

Уровень операционной системы

Как уже отмечалось, современный компьютер организован в виде иерархии уровней, каждый из которых добавляет определенные функции к нижележащему уровню. Мы рассмотрели цифровой логический уровень, уровень микроархитектуры и уровень архитектуры команд. Настало время перейти к следующему уровню — уровню операционной системы.

С точки зрения программиста, операционная система — это программа, добавляющая ряд команд и функций к командам и функциям, предлагаемым уровнем архитектуры команд. Обычно операционная система реализуется программно, но нет никаких веских причин, по которым ее, как микропрограммы, нельзя было бы реализовать аппаратно. Уровень операционной системы показан на рис. 6.1.

Таненбаум Э.- Архитектура компьютера.

Рис. 6.1. Положение уровня операционной системы в иерархии

Хотя и уровень операционной системы, и уровень архитектуры команд абстрактны (в том смысле, что не являются реальными устройствами), между ними есть важное различие. Все команды уровня операционной системы доступны для прикладных программистов. Это — практически все команды более низкого уровня, а также новые команды, добавленные операционной системой. Новые команды называются системными вызовами. Они вызывают предопределенную службу операционной системы, в частности одну из ее команд. Обычный системный вызов считывает какие-нибудь данные из файла.

Уровень операционной системы всегда интерпретируется. Когда пользовательская программа вызывает команду операционной системы, например чтение данных из файла, операционная система выполняет эту команду шаг за шагом, точно так же, как микропрограмма выполняет команду ADD. Однако когда программа вызывает команду уровня архитектуры команд, эта команда выполняется непосредственно уровнем микроархитектуры без участия операционной системы.

В этой книге мы можем рассказать об уровне операционной системы лишь в общих чертах. Мы сосредоточимся на трех важных особенностях. Первая особенность — это виртуальная память. Виртуальная память используется многими операционными системами. Она позволяет создать впечатление, будто у машины больше памяти, чем есть на самом деле. Вторая особенность — файловый ввод-вывод. Это понятие более высокого уровня, чем команды ввода-вывода, которые мы рассматривали в предыдущей главе. Третья особенность — параллельная работа (несколько процессов могут выполняться, обмениваться информацией и синхронизироваться). Понятие процесса является очень важным, и мы подробно рассмотрим его далее в этой главе. Под процессом можно понимать работающую программу и всю информацию о ее состоянии (памяти, регистрах, счетчике команд, вводе-выводе и т. д.). После обсуждения этих основных характеристик мы покажем, как они применяются к операционным системам двух машин из трех наших примеров: Pentium 4 (Windows ХР) и UltraSPARC III (UNIX). Поскольку процессор 8051 обычно используется для встроенных систем, у этой машины нет операционной системы.


⇐ Предыдущая страница| |Следующая страница ⇒