1. Это положено в основу

Прежде чем приступить к программированию в среде IBM OS/2 Warp, мы расскажем о структуре операционной системы IBM OS/2 Warp, а также познакомим вас с объектно-ориентированным графическим интерфейсом пользователя WorkPlace Shell, превосходящим по своему удобству все, что вы, возможно, раньше видели в среде Microsoft Windows.

В этой главе мы рассмотрим принципы, положенные в основу IBM OS/2 Warp, понимание которых необходимо для успешной работы и программирования для этой современной операционной системы.

1.1. Состав и особенности IBM OS/2 Warp

Операционная система IBM OS/2 Warp, в отличие от Microsoft Windows и Microsoft Windows for Workgroups, является полнофункциональной, т. е. для ее работы не требуется DOS. Она устанавливается в отдельный раздел жесткого диска или в раздел DOS (по усмотрению пользователя). После загрузки IBM OS/2 Warp получает полный контроль над аппаратным и программным обеспечением компьютера, что значительно повышает надежность системы по сравнению с тандемом "DOS - Microsoft Windows".

Ядро IBM OS/2 Warp, как и ядро всякой другой полнофункциональной операционной системы, содержит весь набор компонент, или систем, необходимых для решения таких задач, как обеспечение доступа к дискам, управление памятью, запуск программ, организация межпрограммного взаимодействия, организация интерфейса с пользователем и т. д.

Рассмотрим кратко особенности основных систем. Более подробное описание вы найдете в соответствующих главах этой и следующих книг серии "Библиотека системного программиста", посвященных операционной системе IBM OS/2 Warp.

Мультизадачность

Операционная система IBM OS/2 Warp по-настоящему является мультизадачной, причем в отличие от Microsoft Windows в OS/2 используется так называемая вытесняющая (preemptive) мультизадачность.

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

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

Переключение программ

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

Такое переключение программ "вручную" (показанное схематически на рис. 1.1) позволяет пользователю легко приступить к работе с другой программой, не завершая текущей, и затем вновь вернуться к прерванной программе.

Рис. 1.1. "Ручное" переключение программ в DOS

В операционную систему MS-DOS версии 5.0 был встроен специальный переключатель программ DOS Shell, который позволял запускать одновременно несколько обычных (не резидентных) программ DOS и переключаться между ними с помощью удобной диалоговой оболочки. Однако переключатель DOS Shell не прижился в MS-DOS, так как был вытеснен Microsoft Windows. MS-DOS версии 6.22 поставляется уже без этого переключателя.

И резидентные программы, и переключатель задач не обеспечивают реальной мультизадачности, так как пока одна из запущенных программ работает, другие находятся в "замороженном" состоянии. Поэтому в среде DOS вы едва ли сможете одновременно редактировать текст и принимать факс либо файл через факс-модем, не говоря уже о том, чтобы продолжать работу одновременно с форматированием дискет. Если вам когда-либо приходилось форматировать большое количество дискет в среде DOS, то вы знаете, что во время этой весьма длительной процедуры пользователь может только беспомощно смотреть на экран и слушать щелканье головок НГМД.

Невытесняющая мультизадачность Microsoft Windows

Операционные системы Microsoft Windows версии 3.1 и Microsoft Windows for Workgroups версии 3.11 в некоторой степени решают проблему одновременного использования нескольких программ, организуя невытесняющую (nonpreemptive) мультизадачность, которую еще называют "добровольной" мультизадачностью.

Суть невытесняющей мультизадачности заключается в том, что операционная система не выполняет принудительного переключения одновременно запущенных приложений Microsoft Windows, например, по прерыванию таймера, но приложения время от времени передают друг другу управление по своей инициативе (рис. 1.2). Это уже лучше чем "переключательная" мультизадачность, но вот вопрос: может ли программист как ни будь вмешаться в этот процесс, правильно распределив приоритеты приложений?

Рис. 1.2. Приложения Microsoft Windows периодически и по своей инициативе передают друг другу управление

К сожалению, ни пользователь, ни программист, создающий приложения для Microsoft Windows, не может изменять приоритет приложений Windows (хотя пользователь может изменить приоритеты программ DOS, работающих в среде Microsoft Windows).

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

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

Чем это плохо?

Потенциально невытесняющая мультизадачность может привести к "зависанию" Microsoft Windows в результате запуска плохо отлаженного приложения, которое не собирается "делиться" ресурсами с другими приложениями. В результате пользователь часто бывает вынужден выполнять перезагрузку компьютера, что не всегда приемлемо.

Вытесняющая мультизадачность IBM OS/2

В ядро операционной системы OS/2 встроена система разделения времени, выделяющая каждой запущенной программе или приложению кванты времени (рис. 1.3).

IMG00003.GIF (3957 bytes)

Рис. 1.3. Программы OS/2 работают под контролем системы разделения времени

Кванты времени выделяются по прерыванию таймера, поэтому вне зависимости от состояния запущенных программ ни одна программа не будет обделена вниманием операционной системы.

Такая мультизадачность называется вытесняющей (preemptive). Она реализована не только в IBM OS/2, но и в Microsoft Windows-95, Microsoft Windows NT, а также в различных версиях UNIX.

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

Самая замечательная возможность, предоставляемая системой разделения времени и системой управления программами IBM OS/2 - возможность создания мультизадачных программ и приложений.

Уточним, что мы имеем в виду под мультизадачной программой. Для этого вначале вспомним однозадачные программы.

Если вы программировали для DOS, то имели дело как раз с линейными однозадачными программами, работающими в однозадачной операционной системе. Программа DOS выполняется линейно, вызывая по мере необходимости различные подпрограммы, функции, а так же прерывания DOS и BIOS (рис. 1.4).

Рис. 1.4. Линейная однозадачная программа

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

Теперь допустим, что обработка данных, выполняемая функцией Calculate - длительный процесс, занимающий, скажем, 10-20 часов. Такие времена - не редкость при решении задач, например, численного моделирования физических процессов (даже при использовании современных компьютеров).

Если эта программа работает в однозадачной операционной системе, компьютер недоступен для решения других задач все время, пока работает функция Calculate.

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

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

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

Операционная система IBM OS/2 позволяет организовать параллельное выполнение многих программ, а также отдельных фрагментов кода одной и той же программы.

Когда пользователь запускает программу в среде IBM OS/2, операционная система создает так называемый процесс (process). Это понятие мы уточним позже, а сейчас достаточно знать, что для процесса выделяется отдельное адресное пространство, изолированное от адресных пространств других процессов. Изоляция выполняется на физическом уровне с использованием схемы адресации памяти защищенного режима (описанной нами в 6 томе "Библиотеки системного программиста").

В рамках процесса создается задача (thread), которая выполняется автономно и асинхронно по отношению ко всем остальным активным задачам. После запуска эта задача может создать в рамках процесса другие задачи.

Что такое задача?

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

Все задачи, созданные в рамках одного процесса, используют общее адресное пространство процесса. Заметим, что операционная система IBM OS/2 присваивает приоритеты не процессам, а задачам. Поэтому программист не может изменить приоритет процесса (такое понятие, как приоритет процесса просто не существует), но может управлять приоритетом отдельных задач.

Синхронизация задач

При использовании параллельно работающих задач возникает проблема синхронизации их выполнения.

Изменим немного программу, показанную на рис. 1.4. С помощью гипотетической функции Start запустим подпрограммы PlayMusic и Calculate как задачи в рамках одного процесса (рис. 1.5). Мы постараемся составить программу так, чтобы одновременно с вычислениями она делала что-нибудь еще, например, играла музыку.

Рис. 1.5. Запуск двух задач, первая из которых играет музыку, а вторая выполняет длительные вычисления

Теперь после получения данных одновременно выполняется проигрывание музыки и сложный расчет. Но вот вопрос - что сделает функция Start, после того как будет запущена задача, имя которой передается ей в качестве параметра?

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

Если же функция Start вернет управление сразу после запуска задачи, то вначале заиграет музыка, а потом на фоне музыки будет запущен расчет. Но тут нас поджидает другая неприятность - сразу после запуска расчета принтер начнет печать, не дожидаясь, пока задача Calculate подготовит необходимые для этого данные.

Операционная система IBM OS/2 допускает оба варианта запуска задач, обеспечивая дополнительно такие средства синхронизации задач, как критические секции и семафоры.

Критические секции

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

Такой фрагмент кода и называется критической секцией. Он ограничен сверху и снизу вызовом, соответственно, функций DosEnterCritSec и DosExitcritSec , не имеющих параметров:

// Начало критической секции
DosEnterCritSec();
...
// Этот фрагмент задачи выполняется в монопольном
// режиме по отношению к другим задачам процесса
...
// Конец критической секции
DosExitcritSec();

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

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

Представьте себе, например, что вы подключили к компьютеру нестандартное печатающее устройство, для печати на котором необходимо обращаться к портам специализированного контроллера. Если несколько задач, принадлежащих одному или разным процессам, начнут одновременную печать, это может привести к повреждению контроллера или принтера (со стандартным принтером ничего подобного произойти не может, так как IBM OS/2 выполняет все необходимые действия по синхронизации доступа).

Семафоры

Семафоры в IBM OS/2 по своему назначению напоминают одноименные сооружения, которые вы видели на железной дороге. Их задача - организация правильной последовательности выполнения задач. Так же как отсутствие семафора на железнодорожном переезде может привести к катастрофе, так и неконтролируемый доступ параллельно работающих задач к тем или иным ресурсам может привести к аварийному завершению работы программы, а то и к выходу из строя всей операционной системы.

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

Не вдаваясь пока в подробности, скажем, что семафор IBM OS/2 можно представить себе как объект, способный находиться в двух состояниях: установленном и сброшенном. При помощи специальных функций задача может переключать семафоры из одного состояния в другое, а также выполнять ожидание момента времени, когда семафор будет переключен другой задачей. Если вам нужна аналогия, представьте себе все тот же железнодорожный переезд и цепочку автомобилей (задач), ожидающих переключения семафора.

Теперь мы опять вернемся к нашему "музыкальному" расчету. Попробуем организовать синхронизацию задач Calculate и PrintAll с использованием семафора.

Для этого в основной задаче, которая получает управление при запуске процесса, создадим семафор и сразу сбросим его. Затем после ввода данных запустим процесс PlayMusic, Calculate и PrintAll.

В самом начале процесса PrintAll вызовем специальную функцию из программного интерфейса IBM OS/2, выполняющую ожидание семафора. Если семафор сброшен (а сразу после запуска задачи PrintAll так оно и есть), задача PrintAll приостановит свое выполнение и перейдет в состояние ожидания. В этом состоянии она не загружает процессор и не мешает работать другим задачам.

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

Как только семафор окажется в установленном состоянии, задача PrintAll выйдет из состояния ожидания и начнет свою работу.

Что же касается задачи PlayMusic, то она все еще работает. Эту задачу можно остановить либо из задачи PrintAll после выполнения печати, либо из основной задачи.

Итак, с помощью семафоров нам удалось организовать синхронизацию нескольких задач. Отметим, что в составе программного интерфейса IBM OS/2 имеется набор удобных в использовании функций, предназначенных для работы с задачами и семафорами.

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

Каналы передачи данных между процессами

Как мы уже говорили, при запуске программы операционная система создает новый процесс, имеющий изолированное адресное пространство. Изоляция повышает надежность системы, так как ни в результате ошибки, ни намеренно один процесс не сможет адресовать память другого процесса.

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

Система управления памятью IBM OS/2 позволяет создавать совместно используемые области памяти (shared memory), которые, в принципе, можно использовать для организации передачи данных между процессами. Однако такой способ требует использования средств синхронизации задач и не пригоден для передачи данных между процессами, запущенными на разных рабочих станциях локальной сети.

В операционной системе IBM OS/2 предусмотрено специальное средство передачи данных между различными процессами - каналы (pipes ).

Канал - это специальная область памяти, созданная операционной системой по запросу процесса специально для передачи данных между процессами. Канал может иметь имя (а может и не иметь).

Работа с каналом больше всего напоминает работу со стандартным потоком ввода или вывода в операционной системе DOS. Процесс создает канал, вызывая специально предназначенную для этого функцию, возвращающую идентификатор канала. Затем процесс может передавать данные в канал или принимать их из канала, вызывая функции, напоминающие функции записи и чтения для стандартных потоков ввода/вывода DOS. Разумеется, в процедуре передачи данных через канал должны участвовать два процесса (рис. 1.6).

IMG00006.GIF (1377 bytes)

Рис. 1.6. Передача данных через канал возможна между двумя различными процессами

Отметим специально, что IBM OS/2 позволяет создать каналы между процессами, запущенными на различных рабочих станциях локальной сети (если установлена сеть с серверами IBM LAN Server). Таким образом, средства передачи данных по локальной сети встроены непосредственно в ядро IBM OS/2, что очень удобно для программиста.

Очереди

Помимо каналов операционная система IBM OS/2 имеет другое, более сложное средство передачи данных между процессами - очереди (queue ).

Очереди позволяют организовать передачу данных от нескольких "передающих" процессов к одному "принимающему". Они также часто используются для передачи данных между различными задачами внутри одного процесса.

Через очередь можно передавать элементы данных размером 32 бит, причем формат этих элементов полностью определяется процессом или задачей, создавшими очередь.

Схема работы очереди отличается от схемы работы канала.

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

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

IMG00007.GIF (3089 bytes)

Рис. 1.7. При использовании очереди данные передаются в одном направлении - от клиентских процессов к серверному процессу

Для синхронизации передачи данных для очереди можно назначить один семафор.

Система управления памятью

Система управления памятью IBM OS/2 Warp представляет собой сложный и совершенный механизм, с помощью которого процессы и задачи могут получать в свое распоряжение сотни Мбайт виртуальной памяти.

Для того чтобы лучше разобраться в том, как выполняется адресация памяти в IBM OS/2 Warp, необходимо совершить краткий экскурс в системы управления памяти DOS и Microsoft Windows. Нужно также изучить особенности адресации памяти в защищенном режиме процессоров i386 и процессоров более старших моделей. Вы найдете подробное описание защищенного режима работы процессоров в 6 томе "Библиотеки системного программиста", который так и называется - "Защищенный режим работы процессоров Intel 80286/80386/80486". Здесь же из-за недостатка места мы рассмотрим только самые основные моменты.

Управление памятью в DOS

Как известно, система DOS изначально была рассчитана на реальный режим работы процессоров i8086 и i8088. Именно эти процессоры были использованы в первом компьютере IBM PC.

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

Для вычисления физического адреса использовалась простая схема: сегментная компонента сдвигалась влево на 4 бита с заполнением младших бит нулями, а затем к 20-разрядному результату добавлялась 16-разрядное смещение (рис. 1.8).

IMG00008.GIF (2485 bytes)

Рис. 1.8. Адресация памяти в реальном режиме

Схема адресации памяти реального режима имеет много недостатков. Прежде всего, любая программа могла обратиться для чтения или записи в любую область оперативной памяти. Например, она могла разрушить таблицу векторов прерываний или операционную систему. Размер сегмента памяти не превышал 64 Кбайт, что создавало дополнительные трудности при адресации объектов данных большого размера.

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

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

Управление памятью в первых версиях IBM OS/2 и в стандартном режиме Microsoft Windows

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

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

Появилось понятие "логический адрес ". Когда программа адресуется к памяти в защищенном режиме, она не указывает сегмент и смещение, вместо этого она пользуется логическим адресом.

Логический адрес состоит из двух компонент - селектора и смещения.

Селектор служит индексом в таблицах дескрипторов, содержащих помимо другой информации 24-разрядные базовые адреса сегментов. Дескриптор описывает сегмент памяти и содержит не только базовый адрес, но и другие характеристики, такие, например, как размер сегмента и поле доступа. Для получения 24-разрядного физического адреса базовый адрес складывается с 16-разрядным смещением (рис. 1.9).

IMG00009.GIF (3591 bytes)

Рис. 1.9. Адресация памяти в защищенном режиме для процессора i80286 (упрощенная схема)

Эта схема адресации памяти была использована в первых версиях операционной системы IBM OS/2 и в стандартном режиме работы Microsoft Windows.

Мы уже говорили, что помимо базового адреса таблица дескрипторов содержит и другую информацию.

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

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

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

Рис. 1.10. Кольца защиты

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

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

Описанная выше схема адресации памяти значительно лучше той, что использовалась в DOS, однако и она не лишена недостатков.

Несмотря на то что общий объем непосредственно адресуемой памяти возрос до 16 Мбайт, максимальный размер сегмента остался равным 64 Кбайт. Поэтому программисты по-прежнему вынуждены использовать различные модели памяти и модификаторы near и far .

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

Глобальная таблица дескрипторов описывает сегменты памяти, принадлежащие операционной системе. Некоторые из содержащихся в ней дескрипторов имеют уровень привилегий, равный 3, поэтому к ним можно обращаться даже из обычных программ.

Для каждого процесса в IBM OS/2 создается своя локальная таблица дескрипторов . Именно поэтому адресные пространства процессов разделены физически. Таким образом, каждый процесс может адресоваться к "разрешенным" сегментам системной памяти и к своим собственным сегментам, но никак не к сегментам других процессов.

Что же касается Microsoft Windows, то здесь используется одна локальная таблица дескрипторов для всех приложений. Кроме того, все приложения работают в одном, третьем, кольце защиты. Поэтому любое приложение может обратиться к сегментам памяти, созданным другими приложениями. Это снижает устойчивость системы к приложениям, содержащим ошибки.

Адресация памяти в IBM OS/2 Warp

Операционная система IBM OS/2 Warp способна работать только на процессоре i386 и процессорах более старших моделей. В отличие от i80286, эти процессоры могут работать в 32-разрядном режиме с использованием так называемой страничной адресации памяти.

Схема страничной адресации на первый взгляд выглядит достаточно сложно.

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

IMG00011.GIF (3555 bytes)

Рис. 1.11. Преобразование логического адреса в линейный адрес

На следующем этапе преобразования 32-разрядный линейный адрес разбивается на компоненты 10-разрядного индекса в таблице страниц, 10-разрядного номера страницы и 12-разрядного смещения.

Операционная система создает в памяти каталог таблиц страниц, а также одну или несколько таблиц страниц. Каждый элемент таблицы страниц описывает один блок памяти размером 4 Кбайта.

Индекс в таблице страниц используется для выбора одной из таблиц страниц. Номер страницы, соответственно, является индексом в таблице страниц.

В таблице страниц среди прочей информации хранится физический базовый адрес страницы. Для получения физического адреса этот базовый адрес складывается с 12-разрядным смещением (рис. 1.12).

IMG00012.GIF (4621 bytes)

Рис. 1.12. Преобразование линейного адреса в физический адрес

Эта сложная схема адресации прозрачна для программиста, так как заполнение таблиц дескрипторов, каталога таблиц страниц и самих таблиц страниц выполняется операционной системой. Программист работает только с логическим адресом, состоящим из 16-разрядного селектора и 32-разрядного смещения.

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

Но самое главное - в процессоре i386 появилась возможность организации так называемой виртуальной памяти (процессор i80286 также мог работать с виртуальной памятью, но соответствующий механизм был не очень совершенен).

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

Для программиста виртуальная память создает иллюзию присутствия в системе оперативной памяти очень большого объема (в IBM OS/2 Warp - немного меньше 512 Мбайт). Операционная система берет на себя всю работу по выгрузке и загрузке страниц в файл виртуальной памяти, так что этот механизм полностью скрыт от программиста и удобен в использовании.

Модель памяти FLAT

Схема преобразования адресов процессора i386 и процессоров старших моделей позволяет работать с сегментами очень большого размера - порядка 4 Гбайт. Это намного больше, чем нужно для программирования в среде IBM OS/2 Warp (хотя, кто знает - может быть скоро программисты будут работать с Гбайтными блоками оперативной памяти, ведь во времена процессора i8080 память размером 1 Мбайт считалась очень большой).

В результате можно полностью отказаться от использования сегментированной модели памяти, навязанной Intel в процессоре 8086 и во всех последующих процессорах этой серии для совместимости с теперь уже музейным экспонатом - процессором 8080.

Как это сделать?

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

Соответствующая модель памяти называется моделью FLAT или сплошной (несегментированной) моделью памяти.

Эта модель памяти чем-то напоминает модели памяти TINY и SMALL , где для адресации данных и подпрограмм было достаточно указать компоненту смещения. Отличие, однако, заключается в том, что при использовании модели памяти FLAT процессор работает в защищенном режиме и размер сегментов может значительно превосходить 64 Кбайт.

Таким образом, составляя 32-разрядные программы для IBM OS/2 Warp программист может забыть про селекторы, сегментные регистры, модификаторы near и far . Содержимым сегментных регистров управляет операционная система, поэтому у программиста нет необходимости их загружать. Более того, ему категорически запрещено это делать.

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

Файловая система

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

Операционная система IBM OS/2 способна работать как с файловой системой DOS, так и со своей собственной файловой системой HPFS , которую мы кратко рассмотрим ниже. Кроме того, в IBM OS/2 есть средства монтирования других файловых систем.

Вы можете установить IBM OS/2 в существующий раздел диска, созданный в стандарте DOS, либо созданный заново раздел HPFS . При этом возможно сделать так, чтобы IBM OS/2 имела доступ как к старому разделу DOS, так и к новому разделу HPFS. Подробности вы узнаете из главы, посвященной установке IBM OS/2 Warp.

Недостатки файловой системы DOS

Операционные системы DOS и Microsoft Windows используют файловую систему, основанную на таблице размещения файлов FAT . Эта файловая система подробно описана нами в 19 томе "Библиотеки системного программиста".

Файловая система DOS обладает многими недостатками.

Вы знаете, что имя файла может содержать только 8 символов плюс три символа расширения, которые обычно используются для указания типа файла. Это очень мало, так как пользователям приходится придумывать короткие имена, отражающие смысл хранящейся в файле информации. Фантазия быстро истощается и дело кончается тем, что пользователь указывает имена типа letter1.doc, letter2.doc, ..., letter234.doc или plandkld.txt.

Другой недостаток схемы FAT сказывается в мультизадачных операционных системах, когда несколько программ одновременно работают с разными файлами. Таблица FAT, каталог и файл находятся в трех различных и, как правило, несмежных областях диска, поэтому для чтения файла нужно выполнить много перемещений головок. Это длительная процедура даже для одного файла, а представьте себе, что пять программ одновременно требуют доступ к десяти файлам!

Файловая система HPFS

Для повышения производительности IBM OS/2 была создана файловая система HPFS (High Performance File System - высокопроизводительная файловая система).

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

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

При использовании HPFS пользователь может указывать имена файлов размером до 254 символов, причем имя может состоять из заглавных и прописных букв, а также пробелов и некоторых других символов, например, символов "." (в произвольном количестве).

В дополнение к таким атрибутам файлов, как "только читаемый", "скрытый", "системный" и "архивированный", IBM OS/2 хранит для каждого файла набор расширенных атрибутов. Это тип файла, комментарий и ключевые слова для поиска, пиктограмма для визуального представления файла и т. д.

В распоряжении программиста имеются многочисленные функции программного интерфейса IBM OS/2, с помощью которых можно выполнять операции с файлами, в том числе и многозадачные. Например, можно запустить операцию чтения или записи фрагмента файла как отдельную задачу, которая будет выполняться автономно от запустившей ее задачи. Есть средства и для работы с расширенными атрибутами файлов, для создания, удаления и переименования файлов и каталогов, а также другие необходимые функции.

Библиотеки динамической компоновки

При компоновке программы DOS в загрузочный exe-файл добавляется программный код функций, взятых из стандартных библиотек транслятора или из дополнительных библиотек. Этот метод компоновки называется статическим. При его использовании файл программы DOS содержит в себе все, необходимое для работы,€ за исключением кода функций DOS и BIOS, вызываемого с помощью программных прерываний.

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

Поясним это. Пусть, например, пользователь запустил несколько разных программ, каждая из которых вызывает стандартную функцию sprintf. Если программы подготовлены методом статической компоновки, в оперативной памяти окажется несколько экземпляров кода функции sprintf, по одному на каждую программу. Причем каждая программа будет пользоваться только своей копией функции (рис. 1.13).

IMG00013.GIF (3496 bytes)

Рис. 1.13. При статической компоновке в памяти может находиться одновременно несколько копий одной и той же функции

В IBM OS/2, как и в других мультизадачных операционных системах, применяется динамическая компоновка, исключающая дублирование кода функций в описанной выше ситуации.

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

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

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

IMG00014.GIF (4149 bytes)

Рис. 1.14. При использовании динамической компоновки в память загружается только одна копия функции

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

Драйверы

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

Однако на этом пути есть много подводных камней.

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

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

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

В составе IBM OS/2 поставляется набор драйверов для всех стандартных устройств компьютера, обладающих прекрасными скоростными характеристиками, что полностью исключает необходимость работы с аппаратурой на уровне портов.

Что же касается видеоадаптеров, принтеров, SCSI -контроллеров, звуковых адаптеров и устройств чтения компакт-дисков, то IBM OS/2 способна работать со многими из них. Подробный список вы найдете в главе, посвященной установке IBM OS/2.

Для тех устройств, которые IBM "забыла", вы можете получить драйверы у производителя аппаратуры. Однако будьте осторожны, приобретая устройства, которые не поддерживаются IBM OS/2. Следует обязательно убедиться, что вместе с ними поставляется драйвер именно для той версии операционной системы, которую вы собираетесь использовать.

1.2. Интерфейс Workplace Shell

До появления версии Warp операционная система IBM OS/2 использовалась главным образом для серверных и почтовых приложений, но не для рабочих станций. Это легко объяснить - типичная в то время конфигурация рабочей станции (IBM PC/AT с 4 Мбайт памяти) слишком слаба для работы IBM OS/2 версий 1.Х и 2.Х.

Внедряясь на рынок операционных систем для настольных рабочих станций, IBM усовершенствовала OS/2. Версия Warp способна работать в 4 Мбайт памяти, что позволяет установить эту операционную систему в типичных офисах, выполняющих обработку текстовых и табличных документов, а также работающих с электронной почтой и факсами (хотя лучше установить 6 - 8 Мбайт оперативной памяти). Входящий в состав IBM OS/2 Warp пакет Bonus Pack включает в себя все программное обеспечение, необходимое для решения этих задач.

Однако есть еще одно существенное новшество, сильно облегчающее работу с этой операционной системой для неподготовленного пользователя - объектно-ориентированный графический интерфейс Workplace Shell .

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

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

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

Модель рабочего стола

Внешний вид интерфейса Workplace Shell моделирует для пользователя поверхность рабочего стола , на которой он может увидеть привычные ему шкафы, папки, документы, приспособления для печати и отправки факсов (рис. 1.15).

IMG00015.GIF (11405 bytes)

Рис. 1.15. Интерфейс Workplace Shell

На первый взгляд может показаться, что Workplace Shell напоминает Microsoft Windows, однако сходство только в том, что для отображения объектов используются окна и пиктограммы (картинки небольшого размера), а главный инструмент пользователя - мышь. Логика работы здесь совершенно другая.

В то время как поверхность экрана (Desktop ) в Microsoft Windows служит лишь для отображения на нем пиктограмм и окон, Workplace Shell использует эту поверхность как рабочую. Именно здесь пользователь работает со своими документами и другими объектами.

На поверхности экрана могут располагаться объекты Workplace Shell , представляющие собой файлы данных, программы или устройства, такие как принтер. Визуально объекты отображаются в виде пиктограмм.

Пользователь может положить объект в папку (folder ), просто переместив его туда мышью, или вынуть его из папки и положить на рабочую поверхность стола (есть даже такое жаргонное выражение - "положить документ на Desktop ", хорошо знакомое пользователям компьютеров фирмы Apple).

Для работы с объектом пользователь выбирает его мышью. После того как пользователь сделал левой кнопкой мыши двойной щелчок по объекту, для него запускается соответствующая программа (указанная по умолчанию), способная с ним работать. Например, для текстового документа запускается текстовый редактор, для базы данных - система управления базами данных. Поэтому пользователь работает с объектами, но не с программами. Нужные программы запускаются при необходимости автоматически.

Основные приемы работы пользователя в Workplace Shell

Подробно о работе пользователя с Workplace Shell мы расскажем в отдельной главе, а сейчас кратко рассмотрим основные приемы работы с документами.

Создание нового документа

Когда вам нужно написать письмо или отчет, вы достаете из папки чистый лист бумаги, берете ручку и начинаете писать. Процедура создания нового документа в Workplace Shell аналогична.

Прежде всего, вам нужно найти на экране папку Templates . Это не просто папка с чистыми листами, в ней вы найдете заготовки для объектов различного типа.

Откройте папку Templates , сделав по ней двойной щелчок левой клавишей мыши. На экране появится окно, озаглавленное "Templates - Icon View" (рис. 1.16).

Рис. 1.16. Содержимое папки Templates

Сразу после установки IBM OS/2 Warp папка Templates содержит меньше заготовок, чем показано на рис. 1.16. При установке новых программных продуктов содержимое этой папки может пополняться.

Обратите внимание на пиктограммы Data File и Folder, расположенные в правом нижнем углу окна. Это заготовки для создания, соответственно, новых текстовых файлов и новых папок.

Для создания нового текстового документа установите курсор мыши на пиктограмму Data File и нажмите правую кнопку. Затем, не отпуская этой кнопки, переместите пиктограмму в область экрана, свободную от других окон и пиктограмм, то есть "на Desktop ". После этого отпустите кнопку. Теперь на рабочем столе появился новый текстовый документ, который пока пуст.

Точно также вы можете создать новую пустую папку, переместив пиктограмму Folder на поверхность рабочего стола.

Переименование документа

После того как вы перенесли пиктограмму Data File из папки Templates на рабочий стол, имеет смысл назвать ее как-нибудь по-другому, чтобы название отражало содержимое документа.

Для того чтобы изменить название объекта (документа, папки или чего-либо еще), расположенное под его пиктограммой, нажмите клавишу <Alt> и сделайте щелчок левой клавишей мыши по нужной пиктограмме. Затем измените название и нажмите клавишу <Enter>.

Работа с документом

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

Попробуйте отредактировать только что созданный вами документ Data File (рис. 1.17).

Рис. 1.17. Редактирование документа

Аналогичное действие (двойной щелчок по пиктограмме) в окне приложения Program Manager операционной системы Microsoft Windows приводит к запуску соответствующей программы. Но в Workplace Shell вы можете "запустить" таким образом, не только программу, но и любой объект, вызвав для него соответствующую программу.

Не осталась без дела и правая кнопка мыши. Если сделать щелчок правой кнопкой мыши по пиктограмме объекта или даже просто по поверхности рабочего стола (который тоже является объектом), на экране появится меню возможных для данного объекта действий.

Раскройте меню для документа Data File (рис. 1.18).

Рис. 1.18. Меню возможных действий для документа Data File

Вы видите, что в верхней части меню есть строка "Open", напротив которой есть кнопка со стрелочкой. Нажав на эту кнопку, можно раскрыть меню второго уровня.

С помощью строки "Open" пользователь может открыть документ. Если открытие документа выполняется двойным щелчком левой клавиши мыши, для обработки документа будет использована программа, отмеченная в меню второго уровня галочкой. В нашем случае это программа OS/2 System Editor - простейший текстовый редактор.

В первой главе книги мы делаем только краткий обзор возможностей IBM OS/2 Warp, поэтому пока мы не будем подробно описывать остальные строки этого меню, отложив это до отдельной главы.

Скажем только, что с помощью строки "Settings" можно изменить свойства объекта, такие как его визуальное представление, тип объекта, само меню и т. д.

С помощью строки "Create another" можно создать новый объект того же или другого типа. Таким образом, если вы уже создали один документ, переместив его пиктограмму из папки Templates , вам не надо открывать эту папку вновь. Вы можете создать новый документ при помощи меню объекта.

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

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

Сохранение документа

Для сохранения документа сделайте двойной щелчок левой клавишей мыши по маленькой пиктограмме (пиктограмма системного меню), расположенной в левом верхнем углу программы OS/2 System Editor (рис. 1.17) или выберите из меню "File" строку "Save". В первом случае работа с документом будет завершена и на экране появится диалоговая панель, предлагающая сохранить изменения (рис. 1.19).

Рис. 1.19. Диалоговая панель с предложением сохранить изменения, внесенные в документ

При сохранении текстового документа в первый раз необходим задать тип файла, соответствующее замечание появится в диалоговой панели "Save notification" (рис. 1.20).

Рис. 1.20. Диалоговая панель "Save notification"

Нажмите кнопку "Type...". Вам будет предложен выбор из трех вариантов (рис. 1.21): обычный текст без форматирования символов (Plain Text), командный файл OS/2 (OS/2 Command File) и командный файл DOS (DOS Command File).

Рис. 1.21. Выбор типа файла

Выберите нужную строку и нажмите кнопку "Set". Документ будет сохранен.

Заметим, что указание типа файла требуется далеко не всегда. Документы и другие объекты, подготовленные с помощью системы IBM Works, входящей в состав пакета Bonus Pack , сохраняются с правильным типом файла без усилий со стороны пользователя.

Удаление документа

Для удаления документа проще всего воспользоваться мусорной корзиной, расположенной на панели ускоренного запуска LaunchPad, о которой мы вам еще расскажем.

Чтобы удалить документ (или вообще любой объект), переместите соответствующую пиктограмму на пиктограмму мусорной корзины (с изображением машинки для уничтожения бумаг).

Никаких файлов, никаких каталогов

Итак, вы только что видели весь "жизненный цикл" документа от папки с чистыми листами бумаги Templates до мусорной корзины.

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

1.3. Совместимость с DOS и Microsoft Windows

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

Поэтому IBM OS/2 Warp содержит специальные средства, предназначенные для запуска программ DOS и приложений Microsoft Windows в своей среде.

Запуск программ DOS

Программы DOS предназначены для реального режима работы процессора, поэтому для них IBM OS/2 создает специальные виртуальные машины, по одной на каждую программу.

Процессор i386 и более старшие модели этой серии способны переключаться в так называемый режим виртуального процессора i8086. В этом режиме используется схема отображения адресов, принятая для реального режима, т. е. адрес состоит из сегмента и смещения. Однако при возникновении прерываний процессор автоматически переключается в защищенный режим. Кроме того, в режиме виртуального процессора (который можно считать разновидностью защищенного режима) действуют все защитные механизмы и используется страничная адресация памяти. Детали вы можете узнать из 6 тома "Библиотеки системного программиста".

Крах виртуальной машины, которая используется для работы программы DOS, никак не сказывается на общей работоспособности системы, так как адресное пространство всех таких машин изолировано друг от друга и от адресного пространства остальных программ (и, разумеется, от адресного пространства самой IBM OS/2).

Это качество имеет особенную ценность для разработчиков программ DOS - если в результате ошибки виртуальная машина DOS оказалась разрушенной, можно просто запустить ее еще раз, не перезагружая IBM OS/2.

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

Виртуальная машина DOS , создаваемая IBM OS/2, способна эмулировать для программ DOS верхнюю, расширенную или дополнительную память (в стандартах EMS и XMS), а также может служить сервером интерфейса защищенного режима DPMI. При помощи меню объекта пользователь может легко подключить или отключить эту возможность, а также выполнить все необходимые настройки. Соответствующая процедура будет описана в главе, посвященной установке IBM OS/2.

Включив эмуляцию верхней памяти и разрешив использование блоков UMB, пользователь сможет выделить для программ DOS, работающих в среде IBM OS/2, примерно 642 Кбайт памяти. Если же нужно еще больше, то можно запускать программы DOS в режиме совместимости с видеоадаптером CGA (или в текстовом режиме). При этом для программы будет доступно 740 Кбайт (!) памяти, что недостижимо в реальной DOS.

Вы можете запустить программу DOS либо в полноэкранном режиме, либо в окне. То же самое относится и к приложению Microsoft Windows.

На рис. 1.22 вы видите три окна. Окно "Memo" относится к программе IBM OS/2, в окне "NC.EXE" работает Norton Commander for DOS, а в окне "Paintbrush - OS2LOGO.BMP" - приложение Paintbrush, которое входит в состав Microsoft Windows.

Рис. 1.22. Операционная системе IBM OS/2 Warp способна запускать наряду с программами, специально разработанными для нее, приложения Microsoft Windows и программы DOS

Еще одна возможность - загрузка виртуальной машины DOS с дискеты или заранее подготовленного образа дискеты, расположенного на диске. Этим способом вы можете загрузить, например, старые версии DOS, если по каким-либо причинам виртуальная машина IBM OS/2 вас не устраивает. В отличие от последней DOS, загруженная с дискеты или образа дискеты, в некоторых случаях может работать с аппаратурой напрямую, в обход виртуальных драйверов IBM OS/2.

Запуск приложений Microsoft Windows

Несмотря на большое разнообразие программ, разработанных специально для IBM OS/2, возможность запуска приложений Microsoft Windows имеет большое значение. Стоимость операционной системы невелика по сравнению со стоимостью остального программного обеспечения, установленного в компьютере, поэтому можно значительно облегчить переход пользователей от Microsoft Windows к IBM OS/2, предусмотрев возможность работы в среде IBM OS/2 с приложениями Microsoft Windows.

Существуют две версии IBM OS/2 Warp 3.0, отличающиеся друг от друга способом установки и составом дистрибутива.

Первая из них называется IBM OS/2 Warp Special Edition for Windows . Она предназначена для тех, кто уже имеет Microsoft Windows. При установке этой версии пользователю необходимо "предъявить" дискеты с Microsoft Windows, так что приготовьте их заранее.

Более поздняя версия IBM OS/2 Warp 3.0 называется "Fullpack " и содержит в себе все необходимое для работы приложений Microsoft Windows. Она удобнее в установке и к тому же содержит более широкий набор драйверов (а также исправления некоторых ошибок предыдущей версии).

И та, и другая версии IBM OS/2 запускают приложения Microsoft Windows на виртуальной машине. Пользователь может изолировать адресные пространства приложений Microsoft Windows, запуская их в разных виртуальных машинах, однако это целесообразно только при объеме памяти, установленной в компьютере, не меньше 16 Мбайт.

Если не использовать изолирование адресных пространств, то все приложения будут работать в рамках одной виртуальной машины DOS. При этом они смогут обмениваться данными при помощи средств DDE и OLE .

Пользователь может выбрать либо полноэкранный режим работы Microsoft Windows, либо отображать окна приложений Microsoft Windows вместе с окнами приложений IBM OS/2 (как это показано на рис. 1.22). В полноэкранном режиме работы в нижней части рабочего стола Microsoft Windows появляется пиктограмма Desktop , с помощью которой можно перейти к работе с приложениями IBM OS/2.

Когда все приложения Microsoft Windows работают в рамках одной виртуальной машины DOS, можно использовать средства, предназначенные для работы с кириллицей, такие как CyrWin , ParaWin и аналогичные.

1.4. Приложения и объекты IBM OS/2 Warp

В этом разделе мы приведем краткое описание наиболее важных приложений и объектов, которые поставляются в составе IBM OS/2 Warp версии 3.0. Ознакомившись с этим описанием, вы сможете убедиться в том, что для "компьютеризации" небольшого офиса вполне достаточно этого набора, хотя есть и другие, более мощные офисные приложения.

Если компьютер не оборудован средствами мультимедиа, то сразу после установки IBM OS/2 Warp на рабочем столе видны всего пять объектов (рис. 1.23).

Рис. 1.23. Внешний вид рабочего стола сразу после установки IBM OS/2 Warp

В верхнем левом углу находится пиктограмма принтера, которая в нашем случае называется HP LaserJet III (если у вас другой принтер, эта пиктограмма будет называться иначе).

Эта пиктограмма предназначена для печати и просмотра очереди печати. Печать выполняется очень просто - достаточно переместить пиктограмму объекта, который нужно распечатать, на пиктограмму принтера. Для просмотра очереди печати следует сделать двойной щелчок левой клавишей мыши по этой пиктограмме.

В папке OS/2 System находятся системные объекты, необходимые для работы с IBM OS/2 Warp. Не ищите здесь приложения, которые можно использовать в офисе - такие приложения поставляются в составе пакета Bonus Pack. Этот пакет, хотя и поставляется вместе с IBM OS/2 Warp, необходимо устанавливать отдельно.

Папка Information содержит различную документацию, отражающую основные аспекты настройки и использования IBM OS/2 Warp.

Что же касается папки Templates , то о ней мы уже говорили - эта папка содержит заготовки для создания новых объектов, таких как папки, программы, текстовые файлы и т. д.

В правом нижнем углу находится окно приложения Launch Pad , предназначенного для запуска наиболее часто используемых приложений. Пусть вас не смущает, что это окно занимает значительную часть рабочего стола - после соответствующей настройки размер окна можно значительно уменьшить, особенно при использовании видеорежимов с повышенной разрешающей способностью и размером экрана 800х600 или 1024х768 пикселов.

Сдвинув в сторону окно приложения Launch Pad , вы обнаружите под ним пиктограмму Launch Pad. Штриховка вокруг нее означает, что соответствующее окно открыто и находится на поверхности рабочего стола. Не удаляйте пиктограмму Launch Pad, так как иначе соответствующее приложение станет недоступно.

Используя Launch Pad , вы можете также завершить работу IBM OS/2 (кнопка Shut Down) или заблокировать экран (кнопка Lockup), отобразить список окон, расположенных на рабочем столе (кнопка Window List) или выполнить поиск файлов (кнопка Find).

Если компьютер оборудован средствами мультимедиа, можно установить приложения, способные работать со звуком, музыкой и видео, а также проигрывать звуковые компакт-диски. При этом после установки IBM OS/2 Warp на рабочем столе появляется папка Multimedia.

Папка OS/2 System

Теперь давайте откроем папку OS/2 System и посмотрим, что в ней есть для работы с операционной системой IBM OS/2 Warp (рис. 1.24).

Рис. 1.24. Содержимое папки OS/2 System

В этой папке находятся другие папки и объекты. Расскажем о них кратко.

Games

Эта папка содержит несколько игр, попробуйте их сами.

Startup

Пользователь может разместить папке Startup приложения, которые необходимо запускать каждый раз при загрузке IBM OS/2, такие, например, как системные часы.

Productivity

В папке, которая называется OS/2 System, есть папка Productivity. Откройте ее и вы увидите несколько полезных приложений, предназначенных для работы с изображениями, универсальным буфером обмена Clipboard, пиктограммами, текстом, а также для поиска текстовых файлов (рис. 1.25).

Рис. 1.25. Папка Productivity

Содержимое этой папки будет описано немного позже.

System Setup

Пиктограмма System Setup соответствует папке, с помощью которой можно выполнять изменение конфигурации системы, а также ее полную или частичную повторную установку (рис. 1.26).

Рис. 1.26. Папка System Setup, предназначенная для настройки IBM OS/2 и изменения ее конфигурации

При помощи приложений Scheme Palette , Solid Color Palette и Mixed Color Palette пользователь может изменить внешний вид и цвета рабочего стола, настроив их на свой вкус.

Среди всего прочего в эту папку попало приложение System Clock - системные часы IBM OS/2 Warp. Странно, что часы находятся в папке средств установки и настройки операционной системы, но это так.

Содержимое этой папки будет описано более подробно в главах, посвященных установке и настройке IBM OS/2.

Shredder

Приложение Shredder ("машинка для уничтожения бумаг") предназначено для уничтожения любых объектов, которые только можно уничтожить. Это самое опасное приложение в IBM OS/2, так как с его помощью за несколько секунд можно разрушить все что угодно.

Command Prompts

В этой папке есть несколько пиктограмм, с помощью которых можно запустить виртуальную машину DOS, сеанс IBM OS/2 или Microsoft Windows в окне или в полноэкранном режиме, а также выполнить двойную загрузку (рис. 1.27).

Рис. 1.27. Папка Command Prompts

Не касаясь пока использования двойной загрузки, выполняемой с помощью пиктограммы Dual Boot (вы узнаете об этом позже), расскажем о других пиктограммах.

С помощью пиктограммы DOS from Drive A: вы можете загрузить в виртуальную машину DOS операционную систему, расположенную на дискете. Такая операционная система будет работать со многими устройствами компьютера в обход виртуальных драйверов IBM OS/2. Это позволит, в частности, использовать такие устройства, для которых пока нет драйверов IBM OS/2.

Пиктограмма WIN-OS/2 Window предназначена для запуска сеанса Microsoft Windows в окне, расположенном на рабочем столе IBM OS/2. В этом случае на экране появляется окно Program Manager, с помощью которого можно запустить другие приложения Microsoft Windows обычным образом.

Полноэкранный сеанс Microsoft Windows доступен при помощи пиктограммы WIN-OS/2 Full Screen .

При помощи пиктограмм DOS Window и DOS Full Screen можно запустить сеанс DOS, соответственно, в окне или на всем экране. Аналогично, пиктограммы OS/2 Window и OS/2 Full Screen предназначены для запуска текстовых сеансов OS/2, соответственно, в окне или в полноэкранном режиме.

Drives

Объект Drives представляет собой папку, содержащую пиктограммы дисковых устройств компьютера (рис. 1.28).

Рис. 1.28. Дисковые устройства компьютера

При помощи этой папки вы можете получить доступ к каталогам дисков, которые отображаются в виде дерева (рис. 1.29) или папок с пиктограммами (рис. 1.30). В последнем случае внешний вид пиктограммы для приложений IBM OS/2 определяется разработчиком приложения, а для прочих файлов отражает их назначение (программа, текстовый файл, файл данных и т. д.).

Рис. 1.29. Отображение содержимого диска в виде дерева каталогов

Рис. 1.30. Отображение содержимого каталога в виде папки с пиктограммами

Minimized Window Viewer

Это приложение предназначено для отображения свернутых (минимизированных) окон. Пользователь может свернуть ненужное ему в данный момент окно, положив его либо "под рабочий стол", либо в специальное окно, доступ к которому возможен с помощью приложения Minimized Window Viewer.

В первом случае приложение или окно исчезает с поверхности рабочего стола, но не завершает свою работу. Доступ к нему возможен через список окон Window List, который можно вызывать на экран, например, при помощи приложения Launch Pad или просто расположив курсор мыши на свободное место стола и нажав на мыши обе клавиши одновременно.

Во втором случае приложение или окно также удаляется с поверхности стола, но если активно приложение Minimized Window Viewer, то пиктограмма свернутого окна или приложения появляется в окне Minimized Window Viewer. В любой момент времени вы можете активизировать свернутое окно, сделав двойной щелчок левой клавишей мыши по соответствующей пиктограмме.

Папка Productivity

Теперь перечислим объекты, расположенные в папке Productivity.

Picture Viewer

С помощью приложения Picture Viewer вы сможете просматривать графические изображения, записанные в метафайлах *.met, в файлах формата Picture Interchange Format *.pif, а также файлы спулинга печати *.spl. Последняя возможность достаточно интересна - вы можете просматривать файлы, отправленные на печать, но еще не распечатанные, причем не только текстовые, но и графические.

Clipboard Viewer

По своему назначению приложение Clipboard Viewer аналогично приложению Clipboard из Microsoft Windows.

Так же как и в Microsoft Windows, в IBM OS/2 реализована концепция универсального буфера обмена Clipboard, с помощью которого пользователи могут переносить данные из одного приложения в другое (при использовании сетевых средств возможен перенос данных между приложениями, запущенными на различных рабочих станциях).

Приложение Clipboard Viewer позволяет просматривать содержимое универсального буфера обмена Clipboard.

Pulse

С помощью этого приложения пользователь может следить за тем, как используются ресурсы компьютера. Степень загрузки системы отображается в виде графика, непрерывно сдвигающегося справа налево (рис. 1.31).

Рис. 1.31. Контроль за использованием ресурсов компьютера

Icon Editor

С помощью приложения Icon Editor можно создавать новые и редактировать уже существующие пиктограммы, записанные в файлах с расширением имени *.ico.

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

Раскрашивая папки и пиктограммы, можно значительно улучшить внешний вид системы. Соответствующие рекомендации вы найдете в главе, посвященной настройке IBM OS/2 Warp.

Seek and Scan Files

Приложение Seek and Scan Files удобно для поиска текстовых файлов по имени и содержимому.

На рис. 1.32 мы показали пример поиска файла с расширением имени .txt, содержащего слово and. В результате поиска на диске C: было найдено 47 подходящих файлов.

Рис. 1.32. Поиск файлов при помощи приложения Seek and Scan Files

Сделав двойной щелчок по имени найденного файла, можно просмотреть его содержимое.

OS/2 System Editor и OS/2 Enchanced Editor

В каждой операционной системе есть те или иные средства редактирования текстовых файлов.

Текстовый редактор OS/2 System Editor по своим возможностям соответствует редактору Notepad из Microsoft Windows и лучше всего подходит для редактирования таких файлов, как config.sys (рис. 1.33).

Рис. 1.33. Редактирование файла config.sys при помощи приложения OS/2 System Editor

Что же касается редактора Enchanced Editor, то, несмотря на возможности шрифтового оформления текста и другие усовершенствования, на наш взгляд он непригоден для создания документов в офисе. Намного лучшие средства предоставляет текстовый редактор из комплекта IBM Works, который поставляется вместе с IBM OS/2 в составе пакета Bonus Pack.

Папка Multimedia

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

Операционная система IBM OS/2 Warp содержит ряд приложений, специально предназначенных для работы с мультимедиа. Эти приложения, а также другие объекты, имеющие отношение к мультимедиа, находятся в папке Multimedia (рис. 1.34).

Рис. 1.34. Папка Multimedia

Посмотрим, что же там есть.

Digital Video

С помощью приложения Digital Video можно посмотреть на экране компьютера видеофильм, записанный в файле (рис. 1.35). Можно также записать новый видеофайл, если, разумеется, к компьютеру подключен адаптер для ввода видео, а также источник видеосигнала, такой как видеокамера или видеомагнитофон.

Рис. 1.35. Просмотр видеофильма с помощью приложения Digital Video

Изображение появляется в отдельном окне IBM Ultimotion(TM), которое можно перемещать по экрану. Пользователь может увеличить или уменьшить размер окна, а также свернуть окно. При помощи ползункового регулятора Volume можно изменять громкость звукового сопровождения.

В целом возможности приложения Digital Video не уступают возможностям системы Microsoft Video for Windows, также предназначенной для просмотра видеофильмов.

Compact Disk

С помощью приложения Compact Disk (рис. 1.36) можно проигрывать обычные звуковые компакт-диски.

Рис. 1.36. Приложение Compact Disk, предназначенное для проигрывания звуковых компакт-дисков

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

Movies

Эта папка содержит демонстрационный видеофайл macaw.avi, который можно просмотреть, сделав по соответствующей пиктограмме двойной щелчок левой клавишей мыши.

Volume Control

С помощью приложения пользователь может изменять громкость, "поворачивая" мышью соответствующий регулятор (рис. 1.37). Можно также отключить звук совсем, нажав на кнопку с изображением громкоговорителя.

Рис. 1.37. Регулятор громкости Volume Control

Multimedia Setup

Приложение Multimedia Setup предназначено для изменения параметров системы мультимедиа. Оно будет описано в главах, посвященных установке и настройке IBM OS/2.

Multimedia Data Converter

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

Sound Bites

В папке Sound Bites вы найдете звуковые файлы MIDI и WAV, которые можно проиграть, сделав по нужной пиктограмме двойной щелчок левой клавишей мыши.

Sound

Операционная система IBM OS/2 Warp озвучена намного лучше, чем Microsoft Windows. По умолчанию для многих действий или событий, происходящих в системе, назначен звуковой файл, содержащий короткий музыкальный фрагмент.

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

Multimedia With REXX

В операционной системе IBM OS/2 имеется мощный язык команд, который пришел с больших компьютеров из операционной системы VM. Его можно сравнить с языком пакетных команд DOS, однако REXX обладает неизмеримо большей мощностью.

Объект Multimedia With REXX представляет собой справочное руководство по программированию систем мультимедиа на языке REXX.

Multimedia Application Install

Это приложение, как следует из его названия, предназначено для установки новых приложений мультимедиа.

Digital Audio

С помощью приложения Digital Audio можно записывать и воспроизводить звуковые файлы (рис. 1.38).

Рис. 1.38. Приложение Digital Audio, предназначенное для записи и воспроизведения звуковых файлов

MIDI

С помощью приложения MIDI (рис. 1.39) можно проигрывать и записывать музыкальные MIDI-файлы, которые при той же длительности звучания, что и WAV-файлы, занимают гораздо меньше места на диске, так как содержат только коды инструментов, нот и длительностей.

Рис. 1.39. Приложение MIDI , предназначенное для записи и воспроизведения музыкальных MIDI-файлов

1.5. Пакет программ Bonus Pack

Если вы приобрели IBM OS/2 Warp, то благодаря пакету Bonus Pack , входящему в комплект поставки, у вас есть все, чтобы оборудовать офисную или домашнюю рабочую станцию.

Перечислим основные приложения и системы, входящие в Bonus Pack.

Система IBM Works for OS/2 содержит такие важнейшие средства, как текстовый процессор, электронную таблицу, средства создания персональных баз данных, систему планирования задач, систему управления персональной информацией, записную книжку для хранения телефонов и адресов, календарь, набор шаблонов для создания часто используемых документов. Есть также средства создания диаграмм различного вида (рис. 1.40).

Рис. 1.40. Приложения, которые входят в состав IBM Works for OS/2

Текстовый процессор, входящий в состав IBM Works for OS/2, сравним по своим возможностям с процессором Microsoft Word for Windows версии 2.0. Он позволяет задавать шрифтовое и стилевое оформление текста, а также включать в текст графические изображения (рис.1. 41).

Рис. 1.41. Текстовый процессор, входящий в состав IBM Works for OS/2

Имеется также средство для работы с электронными таблицами, необходимое практически в каждом офисе (рис. 1.42).

Рис. 1.42. Работа с электронными таблицами при помощи IBM Works  for OS/2

Приложение FaxWorks Lite for OS/2 предназначено для отправки и приема факсов любой длины. Для его использования компьютер должен быть оборудован факс-модемом.

Очень интересная система Person to Person/2 представляет из себя средство организации видеоконференций в локальных сетях. Даже если у вас нет дорогостоящей видеоаппаратуры, сжимающей видеоизображение в реальном времени, вы можете использовать систему Person to Person/2 для передачи данных по сети через универсальный буфер обмена Clipboard, для обмена сообщениями, а также для коллективного рисования одного и того же рисунка (полезно при обсуждении "с карандашом в руках").

Приложение HyperACCESS Lite удобно для работы с электронными досками объявлений BBS (рис. 1.43).

Рис. 1.43. Работа с BBS с использованием приложения HyperACCESS Lite (с разрешения московского представительства IBM)

Вы можете легко выбрать нужную вам BBS из записной книжки (рис. 1.44), что очень удобно.

Рис. 1.44. Записная книжка приложения HyperACCESS Lite

Это средство упрощает работу в сети CompuServ, предоставляя пользователю удобный графический интерфейс.

Специально для работы в сети Internet предназначено приложение IBM Internet Connection for OS/2. Оно открывает доступ к таким ресурсам, как Telnet, FTP, Gopher, и Newsreader.

Для получения расширенной информации об оборудовании компьютера и установленном программном обеспечении вы можете воспользоваться приложением System Information Tool.

Система Video IN/2 предназначена для создания видеофайлов. Требуется наличие видеоконтроллера, способного преобразовывать и вводить в компьютер видеосигнал, поступающий от видеокамеры или видеомагнитофона.

Приложение Multimedia Viewer позволяет организовать хранение и отображение файлов изображений, звуковых, музыкальных и видео-файлов в виде папок. Это приложение удобно, например, для организации семейного альбома из фотографий, записанных на компакт-диске Kodak Photo CD.

1.6. Другие приложения для IBM OS/2

Для операционной системы IBM OS/2 составлены сотни различных программ, от простейших, которые распространяются через электронные доски объявлений и FTP-серверы , до сложных комплексов, типа серверов IBM Lan Manager и СУБД IBM DB/2 .

Norton Commander для тех, кто не может без него обойтись

По-видимому, уже невозможно придумать что-либо более удобное для работы с файлами, чем крайне популярная программа Norton Commander, автором которой является John Socha.

В среде IBM OS/2 вы можете запускать Norton Commander for DOS, однако лучше использовать варианты этой программы, специально разработанные для IBM OS/2.

Фирма Symantec подготовила версию программы Norton Commander for OS/2 (рис. 1.45).

Рис. 1.45. Программа Norton Commander for OS/2 версии 1.0 фирмы Symantec

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

Поэтому лучше использовать полные имитации программы Norton Commander for DOS, например, программу File Commander/2 для IBM OS/2 (рис. 1.46).

Рис. 1.46. Программа File Commander/2 для IBM OS/2