
- •Введение
- •1. Основные понятия системного программного обеспечения
- •1.1. Понятия прикладного и системного программного обеспечения
- •1.2. Состав системного программного обеспечения
- •2. Состав и архитектура операционных систем
- •2.1. Состав операционных систем
- •2.2. Архитектура ос
- •3. Управление памятью
- •3.1. Функции ос по управлению памятью
- •3.2. Классификация методов распределения памяти
- •3.3. Распределение памяти без использования внешней памяти
- •3.4. Методы структуризации виртуальной памяти
- •4. Процессы и потоки
- •4.1. Концепция процессов и потоков
- •4.2. Многозадачность. Формы программной работы
- •4.3. Подсистема управления процессами и потоками
- •4.4. Создание процессов
- •4.5. Потоки и их модели
- •5. Планирование и синхронизация процессов и потоков
- •5.1. Виды планирования
- •5.2. Алгоритмы планирования потоков
- •5.3. Алгоритмы приоритетного планирования
- •5.4. Взаимоисключения
- •5.5. Семафоры
- •5.6. Тупики
- •6. Файловые системы
- •6.1. Цели и задачи файловой системы
- •6.2. Организация файлов и доступ к ним
- •6.3. Логическая организация файла
- •6.4. Каталоговые системы
- •6.5. Основные возможности файловой системы ntfs
- •6.6. Структура тома с файловой системой ntfs
- •6.7. Возможности ntfs по ограничению доступа к файлам и каталогам
- •7. Построение операционных систем
- •7.1. Принципы построения операционных систем
- •7.2. Построение интерфейсов операционных систем
- •7.3. Интерфейс прикладного программирования
- •7.4. Классификация системных вызовов
- •7.5. Интерфейс пользователя
- •8. Семейство операционных систем unix
- •8.1. Основные понятия системы unix
- •8.2. Операционная система Linux
- •Заключение
- •Библиографический список
- •Оглавление
1.2. Состав системного программного обеспечения
В англоязычной технической литературе термин System Software (системное программное обеспечение) означает программы и комплексы программ, являющиеся общими для всех, кто совместно использует технические средства компьютера, и применяемые как для автоматизации разработки (создания) новых программ, так и для организации выполнения программ существующих. С этих позиций системное программное обеспечение может быть разделено на следующие пять групп:
1) операционные системы;
2) системы управления файлами;
3) интерфейсные оболочки для взаимодействия пользователя с ОС и программные среды;
4) инструментальные среды программирования;
5) утилиты.
Охарактеризуем кратко вышеперечисленные группы.
Операционная система (ОС) – комплекс управляющих и обрабатывающих программ, который, с одной стороны, выступает как интерфейс между аппаратурой компьютера и пользователем с его задачами, а с другой – предназначен для наиболее эффективного использования ресурсов вычислительной системы и организации надежных вычислений.
Любой из компонентов прикладного программного обеспечения обязательно работает под управлением ОС. Операционная система изолирует аппаратное обеспечение компьютера от прикладных программ пользователей, которые взаимодействуют со своими программами через интерфейс ОС. Любые команды пользователя, прежде чем попасть в прикладную программу, сначала проходят через ОС.
Основными функциями, которые выполняет ОС, являются следующие:
– прием от пользователя (или от оператора системы) заданий или команд, сформулированных на соответствующем языке: в виде директив (команд) оператора или в виде указаний (своеобразных команд) с помощью соответствующего манипулятора (например, с помощью мыши), – и их обработка;
– прием и исполнение программных запросов на запуск, приостановку, остановку других программ;
– загрузка в оперативную память подлежащих исполнению программ;
– распределение памяти, а также организация виртуальной памяти;
– запуск программы (передача ей управления, в результате чего процессор исполняет программу);
– идентификация всех программ и данных;
– прием и исполнение различных запросов от выполняющихся приложений (операционная система умеет выполнять очень большое количество системных функций или сервисов, которые могут быть запрошены из выполняющейся программы). Обращение к подобным сервисам осуществляется по ряду правил, которые и определяют интерфейс прикладного программирования (Application Program Interface, API) этой операционной системы;
– обслуживание всех операций ввода-вывода;
– обеспечение работы систем управлений файлами (СУФ) и/или систем управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения;
– обеспечение режима многозадачности (мультипрограммирования), то есть выполнение двух или более программ на одном процессоре, создающее видимость их одновременного исполнения;
– планирование и диспетчеризация задач в соответствии с заданными стратегией и дисциплинами обслуживания;
– организация механизмов обмена сообщениями и данными между выполняющимися программами;
–обеспечение взаимодействия связанных между собой компьютеров (для сетевых ОС);
– защита одной программы от влияния другой, обеспечение сохранности данных, а также защита самой операционной системы от исполняющихся на компьютере приложений;
– аутентификация и авторизация пользователей (аутентификация – процедура проверки имени пользователя и его пароля на соответствие значениям, которые хранятся в его учетной записи; авторизация – назначение пользователю, прошедшему аутентификацию, определенных прав и привилегий, определяющих его доступ к тем или иным системным ресурсам);
– удовлетворение жестким ограничениям на время ответа в режиме реального времени;
– предоставление услуг на случай частичного сбоя системы;
– обеспечение работы систем программирования, с помощью которых пользователи готовят свои программы.
Назначение системы управления файлами — организация более удобного доступа к данным, организованным как файлы. Именно благодаря системе управления файлами вместо низкоуровневого доступа к данным с указанием конкретных физических адресов нужной нам записи используется логический доступ с указанием имени файла и записи в нем.
Как правило, все современные ОС имеют соответствующие системы управления файлами, а также позволяют работать с несколькими файловыми системами. В этом случае говорят о монтируемых файловых системах (дополнительную систему управления файлами можно установить), и в этом смысле они самостоятельны.
Следует понимать, что любая система управления файлами не существует сама по себе – она разработана для работы в конкретной операционной системе и с конкретной файловой системой. Можно сказать, что известная в прошлом (и сейчас) файловая система FAT (file allocation table) имеет множество реализаций как система управления файлами, например FAT-16 для самой MS-DOS, FAT32 для Windows 9x и NT и т. Д (в целом, подобное можно сказать и о NTFS). Другими словами, для работы с файлами, организованными в соответствии с некоторой файловой системой, для каждой ОС должна быть разработана соответствующая система управления файлами; и эта система управления файлами будет работать только в той ОС, для которой она и создана.
Для удобства взаимодействия с ОС могут использоваться дополнительные интерфейсные оболочки. Их основное назначение – либо расширить возможности по управлению ОС, либо изменить встроенные в систему возможности. В качестве классических примеров интерфейсных оболочек и соответствующих операционных сред выполнения программ можно назвать различные варианты графического интерфейса X Window в системах семейства UNIX, разнообразные варианты интерфейсов для семейства ОС Windows компании Microsoft. Следует отметить, что в семействе ОС компании Microsoft с общим интерфейсом заменяемой является только интерфейсная оболочка, в то время как сама операционная среда остается неизменной – она интегрирована в ОС. Другими словами, операционная среда определяется программными интерфейсами, то есть API (application program interface). Интерфейс прикладного программирования (API) включает в себя управление процессами, памятью и вводом/выводом.
Инструментальная среда программирования может состоять из следующих компонентов:
– система программирования – система, образуемая языком программирования, компиляторами или интерпретаторами программ, представленных на этом языке, соответствующей документацией, а также вспомогательными средствами для подготовки программ к форме, пригодной для выполнения;
– язык программирования высокого уровня – формализованный язык для описания решения алгоритма, решения задачи на ПК, понятия и структура которого удобны для восприятия человеком;
– алгоритмический язык – искусственный язык, предназначенный для выражения алгоритмов;
– проблемно-ориентированный язык – язык программирования, который соответствует понятиям определенного класса прикладных задач. Проблемно-ориентированный язык обычно имеет набор специфических изобразительных средств;
– машинный язык – язык программирования, предназначенный для представления программ в форме, позволяющей выполнять ее непосредственно техническими средствами обработки информации. Для выполнения программы на машинном языке не требуется применение трансляторов, компиляторов и интерпретаторов;
– язык ассемблера – язык программирования, который представляет собой символьную форму машинного языка с рядом возможностей, характерных для языков высокого уровня.
Любая система программирования может работать только в соответствующей ОС, под которую она и создана, однако при этом она может позволять разрабатывать программное обеспечение и под другие ОС.
К утилитами относятся специальные системные программы, с помощью которых можно как обслуживать саму операционную систему, так и подготавливать для работы носители данных, выполнять перекодирование данных, осуществлять оптимизацию размещения данных на носителе и производить некоторые другие работы, связанные с обслуживанием вычислительной системы. К утилитам следует отнести и программу разбиения жестких дисков на логические разделы, и программу форматирования, и программу переноса основных системных файлов самой ОС.