Базовое программное обеспечение
Базовое ПО, или BIOS, представляет программа, которая отвечает за управление всеми компонентами, установленными на материнской плате. Фактически BIOS является неотъемлемой составляющей системной платы и поэтому может быть отнесена к особой категории компьютерных компонентов, занимающих промежуточное положение между аппаратурой и программным обеспечением. Аббревиатура BIOS расшифровывается как BasicInput/OutputSystem — базовая система ввода/вывода. Раньше в системе IBM PC основным назначением BIOS была поддержка функций ввода-вывода за счет предоставления ОС интерфейса для взаимодействия с аппаратурой. В последнее время ее назначение и функции значительно расширились. Второй важной функцией BIOS является процедура тестирования (POST — PowerOnSelfTest) всего установленного на материнской плате оборудования, проводимая после каждого включения компьютера.
В процедуру тестирования входят: проверка работоспособности системы управления электропитанием; инициализация системных ресурсов и регистров микросхем; тестирование оперативной памяти; подключение клавиатуры; тестирование портов; инициализация контроллеров, определение и подключение жестких дисков. В процессе инициализации и тестирования оборудования BIOS сравнивает данные системной конфигурации с информацией, хранящейся в CMOS — специальной энергозависимой памяти, расположенной на системной плате. Хранение данных в CMOS поддерживается специальной батарейкой, а информация обновляется всякий раз при изменении каких-либо настроек BIOS. Именно эта память хранит последние сведения о системных компонентах, текущую дату и время, а также пароль на вход в BIOS или загрузку операционной системы (если он установлен). При выходе из строя, повреждении или удалении батарейки все данные в CMOS-памяти обнуляются. Третьей важной функцией, которую BIOS выполняет со времен IBM PC, является загрузка ОС. Современные BIOS позволяют загружать операционную систему не только с гибкого или жесткого диска, но и с приводов CD-ROM, ZIP, LS-120, SCSI-контроллеров. Определив тип устройства загрузки, BIOS приступает к поиску программы — загрузчика ОС на носителе или переадресует запрос на загрузку на BIOS другого устройства. Когда ответ получен, программа загрузки помещается в оперативную память, откуда и происходит загрузка системной конфигурации и драйверов устройств операционной системы. С появлением процессоров Pentium BIOS стала выполнять еще одну функцию — управление потребляемой мощностью, а с появлением материнских плат форм-фактора (стандартизированный размер) ATX (AdvancedTechnologyextended — расширеннаяпродвинутая технология) — и функцию включения и выключения источника питания в соответствии со спецификацией ACPI (AdvancedConfigurationandPowerInterface — продвинутый интерфейсконфигурирования и управления потребляемой мощностью).Существует также спецификация АРМ (AdvancedPowerManagement — продвинутое управление потребляемой мощностью). Отличие их состоит в том, что ACPI выполняется в основном средствами ОС, а АРМ — средствами BIOS. Фирм, занимающихся разработкой программного обеспечения для BIOS, очень мало. Из наиболее известных можно выделить три:
Award Software (Award BIOS), American Megatrends, Inc. (AMI BIOS) иMicroid Research (MR BIOS).Но на подавляющем большинстве компьютеров сегодня применяются различные версии BIOS
компании AwardSoftware. Пользовательский интерфейс разных версий и разных производителей BIOS может сильно отличаться, но системные вызовы строго стандартизированы. Физически BIOS находится в энергонезависимой перепрограммируемой флэш-памяти, которая вставляется в специальную колодку на материнской плате (на этой микросхеме есть яркая голографическая наклейка с логотипом фирмы — разработчика ПО для BIOS).
Операционные системы.
Операционная система предназначена для того, чтобы скрыть от пользователя все эти сложности. Этот уровень АПС является программным обеспечением, управляющим всеми электронными компонентами компьютера, распределяющим его ресурсы, организующим вычислительный процесс и предоставляющим пользователю удобный интерфейс, избавляющий его от необходимости непосредственного общения с аппаратурой. Действие чтения файла в этом случае становится намного более простым, чем когда нужно заботиться о перемещении головок диска, ждать, пока они установятся на нужное место, и т. д. Над ОС в структуре аппаратно-программных средств компьютера расположены остальные системные программы. Здесь находятся интерпретатор команд, системы окон, компиляторы и редакторы кода. Компиляторы — это ПО, переводящее программу с языка программирования высокого уровня на машинный язык. После этого программа записывается в ОЗУ и затем выполняется. Интерпретаторы — это ПО, переводящее операторы программы на машинный язык по очереди и немедленно выполняющее их. Очень важно понимать, что такие программы не являются частью ОС. Под операционной системой обычно понимается то программное обеспечение, которое запускается в режиме ядра и защищается от вмешательства пользователя с помощью аппаратных средств. А компиляторы и редакторы запускаются в пользовательском режиме. Если пользователю не нравится какой-либо компилятор, он может выбрать другой или написать свой собственный, но он не может написать свой собственный обработчик прерываний, являющийся частью операционной системы и защищенный аппаратно от попыток его модифицировать. Во многих ОС есть программы, которые работают в пользовательском режиме. Они помогают операционной системе выполнять специализированные функции. Например, программы, позволяющие пользователям изменять свои пароли. Эти программы не являются частью ОС и запускаются не в режиме ядра, но выполняемые ими функции влияют на работу системы. Такие программы также защищаются от воздействия пользователя.
И, наконец, над системными программами расположены прикладные программы. Обычно они покупаются или пишутся пользователем для решения собственных задач — обработки текста, работы с графикой, технических расчетов или создания системы управления базой данных. Операционные системы выполняют две основные функции — расширение возможностей машины и управление ее ресурсами. Как уже упоминалось, архитектура (система команд, организация памяти, ввод/вывод данных и структура шин) компьютера на уровне машинного языка неудобна для работы с программами, особенно при вводе/выводе данных. Так, процедура ввода/вывода данных с гибкого диска выполняется через микросхемы контроллера. Контроллер имеет 16 команд. Каждая задается передачей от 1 до 9 байт в регистр устройства. Это команды чтения и записи данных, перемещения головки диска, форматирования дорожек, инициализации, распознавания, установки в исходное положение и калибровки контроллера и приводов. Основные команды read и write (чтение и запись). Каждая из них требует 13 параметров, которые определяют адрес блока на диске, количество секторов на дорожке, физический режим записи, расстановку промежутков между секторами. Программист при работе с гибким диском должен также постоянно знать, включен двигатель или нет. Если двигатель выключен, его следует включить прежде, чем данные будут прочитаны или записаны. Двигатель не может оставаться включенным слишком долго, так как гибкий диск изнашивается. Поэтому программист вынужден выбирать между длинными задержками во время загрузки и изнашивающимися гибкими дисками. Отсюда ясно, что обыкновенный пользователь не захочет сталкиваться с такими трудностями во время работы с дискетой или жестким диском, процедуры управления которым еще сложнее. Ему нужны простые высокоуровневые операции. В случае работы с дисками типичной операцией является выбор файла из списка файлов, содержащихся на диске. Каждый файл может быть открыт для чтения или записи, прочитан или записан, а потом закрыт. А детали этих операций должны быть скрыты от пользователя. Программа, скрывающая истину об аппаратном обеспечении и представляющая простой список файлов, которые можно читать и записывать, называется операционной системой. Операционная система не только устраняет необходимость работы непосредственно с дисками и предоставляет простой, ориентированный на работу с файлами интерфейс, но и скрывает множество неприятной работы с прерываниями, счетчиками времени, организацией памяти и другими низкоуровневыми элементами. В каждом случае процедура, предлагаемая ОС, намного проще и удобнее в обращении, чем те действия, которые требует выполнить основное оборудование. С точки зрения пользователя ОС выполняет функцию виртуальной машины, с которой проще и легче работать, чем непосредственно с аппаратным обеспечением, составляющим реальный компьютер. А для программ ОС предоставляет ряд возможностей, которые они могут использовать с помощью специальных команд, называемых системными вызовами. Концепция, рассматривающая ОС прежде всего как удобный интерфейс пользователя, — это взгляд сверху вниз. Альтернативный взгляд снизу вверх дает представление об ОС как о механизме управления всеми частями компьютера. Современные компьютеры состоят из процессоров, памяти, дисков, сетевого оборудования, принтеров и огромного количества других устройств. В соответствии со вторым подходом работа ОС заключается в обеспечении организованного и контролируемого распределения процессоров, памяти и устройств ввода/вывода между различными программами, состязающимися за право их использовать.
14. Ввод-вывод.
Одной из важнейших функций ОС является управление устройствами ввода-вывода компьютера. Операционная система дает этим устройствам команды, перехватывает прерывания и обрабатывает ошибки. Она должна обеспечить простой и удобный интерфейс между устройствами и остальной частью системы. Интерфейс должен быть одинаковым для всех устройств с целью достижения независимости от применяемой аппаратуры. Программное обеспечение ввода-вывода составляет существенную часть операционной системы. Устройства ввода-вывода можно разделить на две категории: блочные устройства и символьные устройства. Блочные устройства хранят информацию в виде блоков фиксированного размера, причем у каждого блока имеется свой адрес. Размеры блоков колеблются от 521 до 32 768 байт. Важное свойство блочного устройства состоит в том, что каждый его блок может быть прочитан независимо от остальных блоков. Наиболее распространенными блочными устройствами являются диски. Другой тип устройств ввода-вывода — символьные устройства. Символьное устройство принимает или предоставляет поток неструктурированных символов. Оно не является адресуемым и не выполняет операцию поиска. Принтеры, сетевые адаптеры, мыши и большинство других устройств, не похожих на диски, можно считать символьными устройствами. Такая классификация является условной. Некоторые устройства не попадают ни в одну из категорий. Например, часы не являются блок-адресуемыми. Они не формируют и не принимают символьных потоков. Вся их работа заключается в инициировании прерываний в строго определенные моменты времени. И все же модель блочных и символьных устройств является настолько общей, что может служить основой для достижения независимости программного обеспечения ОС от устройств ввода-вывода. Например, файловая система имеет дело с абстрактными блочными устройствами, а зависимую от устройств часть оставляет программному обеспечению низкого уровня. Устройства ввода-вывода обычно состоят из механической и электронной частей. Механический компонент находится в самом устройстве. Электронный компонент устройства называется контроллером или адаптером. В современных компьютерах контроллеры встраиваются в материнскую плату или располагаются на самом устройстве ввода-вывода. Многие контроллеры способны управлять несколькими идентичными устройствами. Если интерфейс между контроллером и устройством является официальным стандартом ANSI, IEEE или ISO либо фактическим стандартом, то различные производители могут выпускать отдельно устройства и контроллеры, удовлетворяющие данному интерфейсу. Так производятся жесткие диски, соответствующие интерфейсу IDE (Integrated Drive Electronics— встроенный интерфейс накопителей) или SCSI (Small Computer System Interface — системный интерфейс малых компьютеров). Еще одним аспектом ПО ввода-вывода является буферизация. Часто данные, поступающие с устройства, не могут быть сохранены там, куда они направлены. Например, когда пакет приходит по сети, ОС не знает, куда его поместить, пока не будет проанализировано его содержимое. Буферизация предполагает копирование данных в больших количествах, что часто является основным фактором снижения производительности операций ввода-вывода. И последним понятием, которое связано с вводом-выводом, является понятие выделенных устройств и устройств коллективного использования. С некоторыми устройствами, такими как диски, может одновременно работать большое количество пользователей. При этом не должно возникать проблем при одновременном открытии на одном и том же диске нескольких файлов. Другие устройства, такие как, накопители на магнитной ленте, предоставляются в монопольное пользование. Пока не завершит свою работу один пользователь накопитель не может быть предоставлен другому пользователю. ОС должна уметь управлять как устройствами общего доступа, так и выделенными устройствами. Существуют три различных способа осуществления операций ввода-вывода. Простейший вид ввода-вывода состоит в том, что всю работу выполняет центральный процессор. Этот метод называется программным вводом-выводом. ЦП вводит или выводит каждый байт или слово, находясь в цикле ожидания готовности устройства ввода-вывода. Второй способ представляет собой управляемый прерываниями ввод-вывод, при котором ЦП начинает передачу ввода-вывода для символа или слова, после чего переключается на другой процесс, пока прерывание от устройства не сообщит ему об окончании операции ввода-вывода. Третий способ заключается в использовании прямого доступа к памяти (DMA — Direct Memory Access), при котором отдельная микросхема управляет переносом целого блока данных и инициирует прерывание только после окончания операции переноса блока.
Драйверы устройств.
У контроллера каждого устройства есть набор регистров, используемых для того, чтобы давать управляемому устройству команды и считывать состояние устройства. Число таких регистров и выдаваемые команды зависят от конкретного устройства. Например, программа управления мышью должна получать от мыши информацию о том, насколько далеко она продвинулась по горизонтали и вертикали, а также о нажатых кнопках мыши. Программа управления диском должна знать о секторах, дорожках, цилиндрах, головках, их перемещении и времени установки, двигателях и тому подобных вещах, необходимых для правильной работы диска. Очевидно, что эти программы управления будут сильно различаться. Такая программа управления каждым устройством ввода-вывода, подключенным к компьютеру, называется драйвером устройства. Она обычно пишется производителем и распространяется вместе с устройством. Поскольку для каждой ОС требуются специальные драйверы, производители устройств обычно поставляют драйверы для нескольких наиболее популярных операционных систем. Операционная система обычно классифицирует драйверы по нескольким категориям в соответствии с типами обслуживаемых ими устройств. К наиболее общим категориям относятся блочные устройства, например, диски, содержащие блоки данных, к которым возможна независимая адресация, и символьные устройства, такие как клавиатуры и принтеры, формирующие или принимающие поток символов. В большинстве операционных систем определены два стандартных интерфейса, один из которых должны поддерживать все блочные драйверы, а второй — все символьные драйверы. Эти интерфейсы включают наборы процедур, которые могут вызываться остальной операционной системой для обращения к драйверу. К этим процедурам относятся, например, процедуры чтения блока или записи символьной строки. Драйвер устройства выполняет несколько функций: 1)обработку абстрактных запросов чтения и записи независимого от устройств и расположенного над ними программного обеспечения; 2) инициализацию устройства; 3) управление энергопотреблением устройства и регистрацией событий; 4) проверку входных параметров. Если они не удовлетворяют определенным критериям, драйвер возвращает ошибку. В противном случае драйвер преобразует абстрактные термины в конкретные. Например, дисковый драйвер может преобразовывать линейный номер блока в номера головки, дорожки и секторы; 5) проверку использования устройства в данный момент. Если устройство занято, запрос может быть поставлен в очередь. Если устройство свободно, проверяется его состояние. Возможно, требуется включить устройство или запустить двигатель, прежде чем начнется перенос данных. Как только устройство готово, может начинаться собственно управление устройством. Драйверам не разрешается обращаться к системным вызовам, но им часто бывает необходимо взаимодействовать с остальным ядром. Для этого драйверам можно вызывать некоторые системные процедуры, например, для выделения им аппаратно – фиксированных страниц памяти в качестве буферов, а также для возвращения этих страниц обратно ядру. Кроме того, драйверы пользуются вызовами, управляющими диспетчером памяти, таймерами, контроллером DMA, контроллером прерываний и т. п.
16. Прикладное программное обеспечение.Прикладное программное обеспечение (ППО) составляют программы конечного пользователя. Это самый обширный класс программного обеспечения. В настоящее время в большинстве сфер человеческой деятельности разработаны и применяются прикладные программные продукты. ППО, классифицируя по назначению, можно разделить на прикладные программы общего назначения и прикладные программы специального назначения. Классификация весьма условна потому, что некоторые типы программ (например, программы, обрабатывающие тексты) имеют своих представителей и в классе общего назначения (редакторы и процессоры) и в классе профессиональных программ (издательские системы). Прикладное программное обеспечение общего назначения используется для решения наиболее общих задач информационного характера в любой сфере человеческой деятельности. Оно объединяет в себе широко используемые программы большинством пользователей персональных компьютеров, например, текстовые редакторы, электронные таблицы, графические системы, игры, развлечения.