1.3.2.1. Системное программное обеспечение


Системное программное обеспечение - это набор программ, которые управляют компонентами вычислительной системы, такими как процессор, коммуникационные и периферийные устройства, а также которые предназначены для обеспечения функционирования и работоспособности всей системы.

Большинство из них отвечают непосредственно за контроль и объединение в единое целое различных компонентов аппаратного оборудования вычислительной системы.

Системное программное обеспечение противопоставляется прикладному программному обеспечению, которое напрямую решает проблемы пользователя.

Конкретные виды системного программного обеспечения включают загрузчики, операционные системы (общего назначения, реального времени, сетевые ОС, встраиваемые), драйверы устройств, инструментальные програм-мные средства, компиляторы, ассемблеры, компоновщики, утилиты, програм-мные средства защиты (антивирусные программы, антиспамовые программы, межсетевые экраны).

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

Интерфейсные функции, которые выполняет операционная система, включают в себя управление аппаратными средствами, устройствами ввода/вывода, файловой системой. Операционная система осуществляет поддержку многозадачности (разделение использования памяти, времени выполнения), ограничение доступа, многопользовательский режим работы и  управление сетью. К внутренним функциям операционной системы относятся: обработка прерываний, управление виртуальной памятью компьютера, планировщик задач, буферы ввода-вывода, и обслуживание драйверов устройств.

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

С 1990-х наиболее распространенными операционными системами являются ОС семейства Microsoft Windows и UNIX-подобные системы.

Операционная система состоит из следующих компонентов:

  • Ядро занимается планировкой задач и обеспечивает доступ к оборудованию.
  • Системные библиотеки предоставляют приложениям интерфейс к функциям ядра на более абстрактном уровне.
  • Оболочка представляет пользовательский интерфейс — интерфейс командной строки или графический пользовательский интерфейс.
  • Низкоуровневые системные утилиты для управления ядром и оборудованием (форматирование дисков, включение/выключение и т.д.).

В некоторых операционных системах (напр. UNIX) ядро и оболочка совершенно независимы и могут независимо заменяться.

Немного истории. Операционная система UNIX была разработана группой сотрудников Bell Labs под руководством Денниса Ричи, Кена Томпсона и Брайана Кернигана в 1969 году.

В конце 70-х годов XX века сотрудники Калифорнийского университета в Беркли внесли ряд усовершенствований в исходные коды UNIX, включая работу с протоколами TCP/IP. Их разработка стала известна под именем BSD — «Berkeley Systems Distribution». Она распространялась под лицензией, позволяющей дорабатывать и совершенствовать продукт и передавать результат третьим лицам, с исходными кодами или без них, при условии указания авторства кода, написанного в Беркли.

DOS ведет свою историю от операционных систем CP/M и была разработана фирмой Microsoft по заказу IBM для установки на свои первые персональные компьютеры. 1 августа 1984 IBM объявляет о выпуске нового поколения персональных компьютеров — IBM PC AT. Совместно с Microsoft IBM приступает к разработке новой операционной системы для компьютеров IBM PC AT. Новая ОС должна была преодолеть ограничение DOS на 640Kb памяти для прикладных программ и реализовать поддержку режима многозадачности. Так началась долгая и трудная судьба операционной системы OS/2.

В начале 90-х годов студент Хельсинкского университета Линус Торвальдс начал разработку, ядра UNIX-подобной ОС для IBM-совместимых ПК. Оно стало ядром операционной системы «GNU/Linux».

Типы операционных систем. Операционные системы типа UNIX, в их числе и BSD, изначально разрабатывались для работы на многопользовательских миникомпьютерах. Хотя UNIX-подобные ОС и были портированы на «большие машины» — мэйнфреймы, например, AIX/370, AIX/ESA и др., мэйнфреймы работают под управлением других операционных систем, в первую очередь это zOS, VSE/ESA и zVM, разработка которых началась в середине 1960-х. Но персональные компьютеры постепенно наращивали свою аппаратную мощь, и уже в 1990-х они превзошли по возможностям те компьютеры, для которых в 70-х годах разрабатывалась ОС UNIX.

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

Загрузчик операционной системы:

  • обеспечивает необходимые средства для диалога с пользователем компьютера (например, загрузчик позволяет выбрать ядро операционной системы для загрузки);
  • приводит аппаратуру компьютера в состояние, необходимое для старта ядра операционной системы (например, на не-x86 архитектурах перед запуском ядра загрузчик должен правильно настроить виртуальную память);
  • загружает ядро операционной системы в ОЗУ. Загрузка ядра операционной системы не обязательно происходит с НЖМД. Загрузчик может получать ядро по сети. Ядро может храниться в ПЗУ или загружаться через последовательные интерфейсы (это может пригодиться на ранней стадии отладки создаваемой компьютерной системы);
  • формирует параметры, передаваемые ядру операционной системы (например, ядру Linux передаются параметры, указывающие способ подключения корневой файловой системы);
  • передаёт управление ядру операционной системы.

На компьютерах архитектуры IBM PC запуск загрузчика осуществляется программным обеспечением BIOS, записанной в ПЗУ компьютера, после успешного окончания процедуры POST. Опишем процедуру, с помощью которой происходит загрузка с НЖМД IBM PC: BIOS производит чтение 512 байт первого сектора НЖМД в ОЗУ по адресу 0x07c0:0x0000, затем прочитанному коду передаётся управление. Этот код читает и анализирует таблицу разделов жёсткого диска, а затем, в зависимости от вида загрузчика, либо передаёт управление загрузочному коду активного раздела жёсткого диска, либо самостоятельно загружает ядро с диска в оперативную память и передаёт ему управление.

Наиболее распространённые загрузчики:

  • NTLDR — загрузчик ядра Windows NT;
  • LILO (LInux LOader) — загрузчик, в основном применяемый для загрузки ядра Linux;
  • GRUB (Grand Unified Bootloader) — применяется для загрузки ядра Linux и Hurd. Домашняя страница GRUB;
  • OS/2 BootManager — загрузчик ядра OS/2;
  • RedBoot - загрузчик для встраиваемых систем;
  • SILO (SPARC Improved bootLOader) - загрузчик Linux и Solaris для машин с архитектурой SPARC. Домашняя страница SILO;
  • Loadlin - загружает Linux из под DOS или Windows. Домашняя страница Loadlin.

Драйвер (англ. driver) (множественное число драйверы, вариант драйвера разговорный и профессиональный)— это компьютерная программа, с помощью которой другая программа (обычно операционная система) получает доступ к аппаратному обеспечению стандартным образом. В общем случае для использования каждого устройства, подключённого к компьютеру, необходим специальный драйвер. Обычно с операционными системами поставляются драйверы для ключевых компонентов аппаратного обеспечения, без которых система не сможет работать. Однако для более специфических устройств (таких, как графическая плата или принтер) могут потребоваться специальные драйверы, обычно предоставляемые производителем устройства.

Идеология построения драйверов. Операционная система управляет некоторым «виртуальным устройством», которое понимает стандартный набор команд. Драйвер переводит эти команды в команды, которые понимает непосредственно устройство. Эта идеология называется «абстрагирование от аппаратного обеспечения». Впервые в отечественной вычислительной технике подобный подход появился в серии ЕС ЭВМ, а такого рода управляющие программы назывались канальными программами.

Программные кодеки (англ. codec — сокр. от coder/decoder или compressor/decompressor) — устройство или программа, способная выполнять преобразование потока данных или сигнала. Кодеки могут как кодировать поток/сигнал (часто для передачи, хранения или шифрования), так и раскодировать — для просмотра или изменения в формате, более подходящем для этих операций. Кодеки часто используются при цифровой обработке видео и звука.

Большинство кодеков использует сжатие с потерями, для того чтобы получать приемлемый размер готового файла. Существуют также кодеки, сжимающие без потерь (lossless codecs), но для большинства применений, почти незаметное улучшение качества не стоит значительного увеличения объема данных. Единственное исключение — ситуация когда данные будут подвергаться дальнейшей обработке, в этом случае повторяющиеся потери на кодировании/раскодировании окажут серьезное влияние на качество.

Программные средства защиты — антивирусные программы, антиспа-мовые программы, межсетевые экраны.