Наверх Системное программирование
Оглавление Следующий раздел

1. ВВЕДЕНИЕ

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

Операционная система связывает программное обеспечение с аппаратным обеспечением и именно поэтому является основой для функционирования остальных программ.

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

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

При проектировании и разработке операционных систем для них могут задавать различные структуры. Самыми распространенными структурами операционных систем являются: представление системы в виде целого и неделимого объекта — «монолита», представление системы в виде некоторого множества взаимосвязанных уровней, представление системы с использованием клиент-серверной архитектуры, представление системы в виде виртуальной машины, в виде микроядра или экзоядра.

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

В разделе «Программирование в Windows» рассматриваются уровни программирования в последних версиях операционной системы Windows; описывается набор основных системных вызовов Win32 API, доступных разработчикам; рассматривается организация и назначение системного реестра; подробно описывается структура операционной системы Windows; рассматривается вопрос реализации диспетчера объектов; рассматриваются подсистемы и службы пользовательского режима. Кроме этого, рассмотрен также вопрос загрузки операционной системы Windows.

Раздел «Процессы и потоки» посвящен центральным понятиям операционных систем процессам и потокам, вопросам их реализации, взаимодействия и синхронизации. Здесь же рассмотрены основные алгоритмы планирования процессов в различных системах.

В разделе «Управление памятью» рассматривается понятие адресного пространства, вопросы организации и управления оперативной памятью, понятие виртуальной памяти и основные алгоритмы замещения страниц. Рассмотрена также реализация сегментации в памяти операционных систем.

Раздел «Файловые системы» посвящен вопросам структуры, реализации и организации управления файловых систем. В данном разделе рассматриваются также вопросы производительности файловых систем, резервного копирования и дефрагментации дискового пространства.

Оглавление Следующий раздел