Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по лекциям.doc
Скачиваний:
25
Добавлен:
20.09.2019
Размер:
1.52 Mб
Скачать

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

«Омский государственный технический университет»

А.Н. ФЛОРЕНСОВ

Операционные системы для программиста

Учебное пособие

ОМСК 2005

УДК 004.4(075)

ББК 32.973. - 018.2я73

Ф 73

Рецензенты: В. Т. Гиль, канд. техн. наук;

М. Ф. Шакиров, канд. техн. наук

Флоренсов А. Н.

Ф 73 Операционные системы для программиста: Учеб. пособие. Омск: Изд-во ОмГТУ, 2005. -240 с.

Рассматривается программирование, зависящее от особенностей конкретных широко используемых операционных систем. Изучаются средства создания и управления программными процессами и нитями внутри них, а также разнообразные средства обеспечения взаимодействия. Ориентировано на понимание роли системных объектов и средств доступа к ним. Изучение ведется параллельно в операционных системах MS Windows и Linux. Содержит множество небольших примеров программ.

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

Печатается по решению редакционно-издательского совета ОмГТУ.

УДК 004.4(075)

БК 32.973. - 018.2я73

Ф 73

Редактор В.А. Маркалева

ИД №06039 от 12.10.2001 г.

Сводный темплан 2005 г.

Подписано в печать 19.09.05. Формат 6084 1/16. Отпечатано на дупликаторе.

Усл. печ. л. 15,0 Уч.-изд. л. 15,0. Тираж 200 экз. Заказ

Издательство ОмГТУ. 644050, г. Омск, пр-т Мира, 11

Типография ОмГТУ

Ó Флоренсов А.Н., 2005

Ó Омский государственный

технический университет, 2005

Введение

С учетом широчайшего использования компьютеров в современной жизни операционные системы (ОС) целесообразно рассматривать с нескольких различных сторон. Во-первых, со стороны пользователя, не умеющего программировать. Таких пользователей – подавляющее большинство, и наиболее употребительные ОС рассчитаны именно на них. Управление компьютером для этих пользователей в значительной степени подобно управлению аппаратурой телевизора с помощью дистанционного пульта. В обоих случаях присутствует множество возможностей, как основных, так и более тонких. Управление компьютером на уровне пользователей можно назвать уровнем домашних хозяек, хотя за ними традиционно закрепилось название “чайников”. Для них выпускается соответствующая литература, иногда использующая указанную терминологию. Пользовательский уровень управления компьютером основан на двух типах средств: действиях с помощью манипулятора мыши и на задании действий в пунктах диалоговых окон. Последние действия обычно выполняются также с помощью мыши или, что реже, набором кратких текстов в полях окон диалога. Для огромного функционального многообразия современной ОС набор таких действий чрезвычайно велик, и практическое освоение их оказывается достаточно трудоемкой задачей. Заметим, что практики, владеющие значительной частью этого набора, пользуются всеобщим уважением среди непрофессиональных пользователей компьютеров.

Другая важная сторона, с которой рассматриваются операционные системы, –это внутреннее строение и разработка ОС. Детальное изучение внутреннего строения нужно в основном только разработчикам таких систем. В предшествующий период (в 70-х и 80-х годах XX века) этой стороне уделялось большое внимание. Оно было частично обусловлено сложностью практического использования ОС предыдущих поколений, когда даже от прикладного программиста требовались не очень элементарные представления о внутреннем функционировании ОС. Последнее было связано с чрезвычайно высокой стоимостью компьютерных систем и вызывало необходимость всеми средствами повысить эффективность использования компьютеров (час времени работы на компьютере стоил порядка 100$.) Практически все книги по операционным системам, написанные в указанные годы, рассматривали операционные системы именно с этой стороны.

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

Наконец, третьей стороной изучения ОС является рассмотрение ее со стороны программных функций, вызываемых как подпрограммы. Причем имеются в виду вызовы подпрограмм, доступные людям, которые не являются разработчиками этой ОС. Совокупность таких программных функций принято называть программным интерфейсом пользователя или API (Application Program Interface). Программный интерфейс пользователя является границей между внутренней частью ОС и программами, использующими средства ОС. Он достаточно подробно описывается в руководствах программисту по операционной системе. Именно этой стороне изучения операционных систем и будет в основном посвящено учебное пособие. При этом для понимания действий отдельных функций API будем частично рассматривать некоторые особенности реализации функций внутри ОС. Такая необходимость появляется, когда функции API используют некоторые внутрисистемные структуры данных, без описания строения и взаимосвязи которых действия функций понять невозможно.

Для содержательного освоения предмета без значительного увеличения числа учебных и демонстрационных задач используется параллельное рассмотрение нескольких ОС. Изложение материала ведется на основе двух типов наиболее распространенных в настоящее время ОС: семействе Windows (Windows 2000, Windows NT, Windows 95 и Windows 98) и Unix. Кроме того, в отдельных примерах будут упоминаться технические решения, использованные в операционной системе OS/2. Это позволяет продемонстрировать, не только то, как следует применять специфические средства конкретной ОС (последнее важнее на этапе совершенствования в программировании), но и то, что требуется отобразить в конструкциях программы для решения простой конкретной задачи, использующего мощные средства многозадачной ОС. В конечном счете такой подход нацелен на формирование понятийной базы для полноценного использования операционных систем при разработке программ.