Для взаимодействия с программой (с помощью процессора или сопроцессоров) адаптеры и контроллеры обычно имеют регистры ввода-вывода, управления и состояния, которые могут располагаться либо в адресном пространстве памяти, либо в пространстве портов ввода-вывода. Кроме того, используются механиз­мы аппаратных прерываний для сигнализации программе о событиях, происхо­дящих в периферийных устройствах. Для обмена информацией с устройствами применяют также механизмы прямого доступа к памяти (Direct Memory Acces, DMA) и прямого управления шиной. Контроллер, который способен иницииро­вать транзакции на системной шине, является активным компонентом компью­тера. С помощью транзакций он может обращаться к другим устройствам (точнее, их контроллерам или адаптерам), обеспечивая равноранговое взаимо­действие. Чаще всего ограничиваются взаимодействием контроллера с систем­ной памятью (это проще).

1.7. Программное обеспечение

Ранее в общих чертах было рассмотрено устройство компьютера (естественно, подразумевается наличие корпуса с блоком питания). Однако этот набор «же­лезок» не имеет практической ценности без программного обеспечения (ПО), которое в компьютере имеет многоуровневую организацию.

Неотъемлемой от компьютера частью программного обеспечения является ба­зовая система ввода-вывода (Basic Input-Output System, BIOS), которая хра­нится в постоянной (энергонезависимой) памяти ROM BIOS (ПЗУ базовой системы ввода-вывода). В ROM BIOS находится программа инициализации, на­зываемая POST (PowerOn Self Test — самотестирование по включению), кото­рая обеспечивает тестирование и запуск компьютера при включении, а также загрузку операционной системы. В ROM BIOS содержатся процедуры для ра­боты со стандартными устройствами, реализующие связь операционной систе­мы и прикладных программ с аппаратными средствами компьютера. BIOS пре­доставляет такие сервисы, как ввод символа с клавиатуры, вывод на экран или принтер, чтение-запись сектора на диске и ряд других (см. главу 5). BIOS нахо­дится на самым нижнем уровне ПО, который обеспечивает изоляцию выше­стоящих уровней от подробностей реализации аппаратных средств компьютера. В ROM BIOS имеется также утилита CMOS Setup, обеспечивающая настройку аппаратных средств компьютера.

НЕ нашли? Не то? Что вы ищете?

Следующий уровень — операционная система (ОС), основным назначением ко­торой является загрузка прикладных программ и предоставление им некоторых сервисов. Сервисы ОС функционируют на более высоком уровне — если BIOS работает с физическими устройствами, то ОС предоставляет возможность ра­боты на логическом уровне. Сервисы ОС, обслуживающие стандартные устрой­ства, могут обращаться к соответствующим сервисам BIOS; они расширяют функциональность сервисов BIOS, а также выполняют обработку ошибок фи­зических устройств. ОС может работать с системными устройствами и в обход BIOS, через собственные драйверы. В MS-DOS все сервисы ОС обслуживались через BIOS, что обеспечивало высокий уровень совместимости и переносимо­сти ПО с машины на машину, но ценой невысокой эффективности. Более со­временные ОС работают в обход BIOS — это эффективнее с точки зрения про­изводительности, но осложняет переносимость ПО. ОС ведает распределением системных ресурсов. На устройствах хранения она организует файловую систе­му. Операционная система, как правило, загружается с устройства внешней па­мяти (локального или сетевого диска), хотя для специальных применений (во встроенных компьютерах) встречаются и так называемые резидентные ОС, «за­шитые» в ПЗУ. Для загрузки ОС требуется специально подготовленный сис­темный диск. В самом начале системного диска располагается загрузчик — короткая программа, загружающая несколько файлов ядра операционной сис­темы в память и передающая им управление. Эти файлы находятся на том же системном диске в месте, известном загрузчику (он должен найти файлы еще до того, как будет обеспечена поддержка файловой системы со стороны ОС). Программный код загрузчика привязан к загружаемой ОС и файловой системе диска, но сам загрузчик для любых ОС и дисков запускается единым способом (см. 9.6). Если загрузчик на своем диске находит необходимые файлы опера­ционной системы (например, I0.SYS и MSDOS. SYS), он загружает их в оператив­ную память и передает управление по определенному адресу. С этого момента работой компьютера управляет ОС, она загружает все свои компоненты, вы­полняет нужные настройки и подготавливается для загрузки и исполнения приложений, предоставляя им сервисы файловой системы (см. 9.11). Естест­венно, чем сложнее ОС, тем больший объем памяти ей требуется. Первые ОС помещались на гибких дисках небольшого объема (180 Кбайт) и довольно бы­стро с них загружались. ОС Windows (и другие современные ОС) занимают де­сятки (а то и сотни) мегабайт и загружаются довольно долго (минуты) даже на самых быстрых ПК. Но, к счастью, на гибком диске вполне умещается мини­мальный вариант ОС, достаточный для «понимания» файловой системы Win­dows и запуска приложений и утилит восстановления. Так что на случай ава­рии «большой» ОС можно иметь «спасательную» дискету, достаточную для начала «аварийно-спасательных работ».

И наконец, верхний уровень иерархии ПО — прикладное программное обеспече­ние, ради исполнения которого и «городился весь этот огород». Прикладные программы могут пользоваться сервисами ОС, BIOS, а также обращаться к ап­паратным средствам компьютера напрямую, адресуясь к портам и ячейкам па­мяти. Чем ближе прикладная программа к «железу», тем эффективнее она может с ним работать (вызовы сервисов BIOS, а тем более ОС вносят дополнительные накладные расходы на организацию программных интерфейсов). Однако ис­пользование сервисов высокого уровня (BIOS, а тем более ОС) страхует от воз­можных проблем совместимости программного обеспечения с аппаратными средствами компьютера. Прикладные программы, как и ОС как правило, загру­жаются с устройств внешней памяти. Именно возможность загрузки любой прикладной программы в совокупности с неограниченным ассортиментом под­ключаемых устройств и позволяет считать персональный компьютер универ­сальным инструментом с неограниченными возможностями.

Важными компонентами программного обеспечения являются драйверы (dri­ver — буквально, «водитель») — программные модули, содержащие процедуры работы с устройствами. Необходимость выделения драйверов в отдельные мо­дули вполне очевидна: устройство определенного назначения (к примеру, дис­плейный адаптер) может иметь самые разные реализации — от MDA до совре­менных видеокарт с трехмерными акселераторами. Если бы не было драйверов, то программист, разрабатывающий прикладную программу, должен был бы включать в нее множество аппаратно-зависимых процедур, причем для всех из­вестных ему моделей дисплейных адаптеров. На написание этих процедур он потратил бы массу времени, программа неимоверно «распухла» бы, а появление новых дисплейных адаптеров потребовало бы модернизации прикладной про­граммы. К этому добавим еще и богатые возможности для ошибок (надо заме­тить, что ошибки на стыке программ и «железа» довольно трудно «ловить»). Выделение драйверов в отдельные модули избавляет от этих и других не­удобств. Драйвер хорошо «знает» программную модель и особенности эффек­тивной работы со своим устройством. Для прикладных программ или операци­онной системы драйвер представляет набор сервисов с интерфейсом, понятным «потребителю». Для каждого сервиса известны способ вызова (программное прерывание или точка входа в процедуру), а также местоположение входных и выходных данных. Если говорить о дисплейных адаптерах, то базовые серви­сы (например, очистка экрана, вывод символа в определенную позицию в теле­тайпном режиме) вызываются через прерывание Int 10h, которое обслуживает BIOS, а параметры передаются через регистры процессора. В зависимости от типа установленного дисплейного адаптера этот сервис обслуживается либо системной микросхемой BIOS, либо микросхемой ROM BIOS, расположенной на графической карте (см. главу 10). Драйверы, обслуживающие данный сер­вис, специально загружать не требуется — они подставляются автоматически на этапе инициализации BIOS. Однако более сложные сервисы графической кар­ты, которыми, например, пользуется ОС Windows, реализуются отдельными за­гружаемыми драйверами, «предъявляемыми» на этапе установки ОС. Плохой драйвер может быть источником самых разных неприятных эффектов, вплоть до «зависания» компьютера и даже разрушения ОС. А если речь идет о драйве­pax устройств хранения, то под угрозой оказываются и файлы, хранящиеся на этих устройствах. Плохие драйверы часто появляются из-за желания произво­дителей побыстрее выпустить новый продукт, пускай даже в еще «сыром» виде. Качественный драйвер работает без побочных эффектов, а очень качествен­ный — еще и быстро. Хорошим тоном для производителей устройств является поддержка своих изделий для постоянно меняющихся версий операционных систем и прикладных программ. К сожалению, некоторые модели со временем оказываются заброшенными, и их не удается использовать с новыми продукта­ми не потому, что

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5