Главная страница Межпроцессное взаимодействие (состязание) Межпроцессное взаимодействие (состязание) Без программного обеспечения любой компьютер - просто бесполезная груда железа. Именно благодаря программам компьютер может хранить, обрабатывать и искать информацию; отображать мультимедийные документы; вести поиск в Интернете и выполнять множество других важных задач, для которых он и нужен. Программное обеспечение можно грубо разбить на две большие группы: системные программы, управляющие работой самого компьютера, и прикладные программы, выполняющие задачи пользователя. Самая главная системная программа - это операционная система, она управляет всеми системными ресурсами и обеспечивает основу, на которой можно писать прикладные программы. Современная компьютерная система состоит из одного или нескольких процессоров, оперативной памяти (часто называемой RAM - Random Access Memory), дисков, клавиатуры, монитора, принтеров, сетевого интерфейса и других устройств, то есть является сложной комплексной системой. Написание программ, которые следят за всеми компонентами, корректно используют их и при этом работают оптимально, представляет собой крайне трудную задачу. Если бы каждому программисту приходилось задумываться о том, как работают жесткие диски, и помнить десятки различных ситуаций, которые могут случиться при чтении блока данных, то многие программы, скорее всего, вообще не были бы написаны. Много лет спустя стало совершенно ясно, что нужно как-то оградить программистов от сложности работы с аппаратным обеспечением. Постепенно был выработан следующий путь: поверх аппаратуры помещается дополнительная программная прослойка, которая управляет всем оборудованием и предоставляет пользователю интерфейс или виртуальную машину. Операционная система отвечает за управление всеми перечисленными устройствами и обеспечивает пользователя имеющими простой, доступный интерфейс программами для работы с аппаратурой. Эти системы составляют предмет данной книги. Расположение операционной системы в общей структуре компьютера показано на рис. 1.1. Внизу находится аппаратное обеспечение, которое во многих случаях само состоит из двух или более уровней (или слоев). Самый нижний уровень содержит физические устройства, состоящие из интегральных микросхем, проводников, источников питания, электронно-лучевых трубок и т. п. То, как они устроены и как работают, относится к сфере деятельности инженеров, специалистов по электронике. Выше (у некоторых машин) расположен микроархитектурный уровень - примитивная программная прослойка, напрямую работающая с оборудованием и упрощающая интерфейс для программ более высокого уровня. Эта программа, обычно называемая микропрограммой, располагается в ПЗУ. В действительности это просто интерпретатор, который получает машинные команды, такие как MOVE, JUMP или ADD, и выполняет их в несколько маленьких шагов. Например, чтобы выполнить команду ADD, микропрограмма должна определить, где расположены слагаемые, извлечь их, сложить и куда-то поместить результат. Набор интерпретируемых микропрограммой инструкций определяет машинный язык. Этот язык вовсе не является частью аппаратного обеспечения, но производители компьютеров всегда называют его именно так, поэтому многие считают что он действительно машинный . Банковская система Компиляторы Заказ авиабилетов Редакторы Веб-браузер Интерпретаторы команд Операционная система Машинный язык Микроархитектура Физические устройства Программы-приложения Системные программы Оборудование, аппаратура Рис. 1.1. Компьютерная система состоит из аппаратного обеспечения, системных программ и приложений У некоторых машин микропрограммного уровня нет. Такие системы называются RISC (Reduced Instruction Set Computers - компьютеры с упрощенным набором инструкций). В этих машинах инструкции языка выполняются аппаратурой непосредственно. В качестве примеров можно привести Motorola 680x0, у которой есть микропрограммный уровень, и IBM PowerPC, у которого микропрограммы нет. Обычно машинный язык содержит от 50 до 300 команд, служащих преимущественно для перемещения данных по компьютеру, выполнения арифметических операций и сравнения величин. Управление устройствами на этом уровне осуществляется с помощью загрузки определенных величин в специальные регистры устройств. Например, диску можно дать команду чтения, записав в его регистры адрес места на диске, адрес в основной памяти, число байтов для чтения и направление действия (чтение или запись). На практике нужно передавать большее количество параметров, а статус операции, возвращаемый диском, достаточно сложен. Кроме того, при программировании многих устройств ввода/ вывода (I/O - Input/Output) очень важную роль играют временные соотношения. Операционная система предназначена для того, чтобы скрыть от пользователя все эти сложности. Она состоит из уровня программного обеспечения, который частично избавляет от необходимости общения с аппаратурой напрямую, вместо этого предоставляя программисту более удобную систему команд. Действие чтения блока из файла в этом случае представляется намного более простым, чем когда нужно заботиться о перемещении головок диска, ждать, пока они установятся на нужное место и т. д. 1.1. Что такое операционная система? 19 Над операционной системой на нашем рисунке расположены остальные системные программы. Здесь находятся интерпретатор команд (оболочка), системы окон, компиляторы, редакторы и т. д. Важно понимать, что подобные программы не являются частью операционной системы, хотя обычно поставщики компьютеров устанавливают их на машины. Это очень важное замечание. Под операционной системой обычно понимается то программное обеспечение, которое запускается в режиме ядра или, как его еще называют, режиме супервизора. Она защищена от вмешательства пользователя с помощью аппаратных средств (мы не рассматриваем в данный момент некоторые старые микропроцессоры, которые вообще не имеют аппаратной защиты). Компиляторы и редакторы запускаются в пользовательском режиме. Если пользователю не нравится какой-либо компилятор, он при желании может написать свой собственный, но он не может написать собственный обработчик прерываний системных часов, являющийся частью операционной системы и обычно защищенный аппаратно от попыток его модифицировать. Наконец, над системными программами расположены прикладные программы. Обычно они покупаются или пишутся пользователем для решения собственных проблем - обработки текста, электронных таблиц, технических расчетов или игр. 1.1. Что такое операционная система? Большинство пользователей компьютеров имеют некоторый опыт общения с операционной системой, но обычно они испытывают затруднения при попытке дать определение операционной системы. В известной степени проблема связана с тем, что операционные системы выполняют две основные, но практически не связанные между собой функции: расширение возможностей машины и управление ее ресурсами. И в зависимости от того, какому пользователю вы зададите вопрос, вы услышите в ответ больше или об одной функции, или о другой. Давайте рассмотрим обе функции. 1.1.1. Операционная система как расширенная машина Как было упомянуто ранее, архитектура (система команд, организация памяти, ввод/вывод данных и структура шин) большинства компьютеров на уровне машинного языка примитивна и неудобна для работы с программами, особенно в процессе ввода/вывода данных. Чтобы это утверждение не показалось голословным, кратко рассмотрим пример того, как происходит ввод/вывод данных с гибкого диска через совместимые микросхемы контроллера NEC PD765, используемые на большинстве персональных компьютеров с процессором Intel. (В этой книге мы будем использовать и термин гибкий диск , и термин дискета .) Контроллер PD765 имеет 16 команд, каждая задается передачей от 1 до 9 байтов в регистр устройства. Это команды для чтения и записи данных, перемещения
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |