Конспект лекций по дисциплине «Операционные системы и среды»
Вид материала | Конспект |
3.3.Обзор основных понятий Сессия регистрации Подсистемы среды Базовые сервисы Виртуальная память Ввод-вывод и файловые системы |
- Конспект лекций по дисциплине " Операционные системы", 1459.26kb.
- Ые системы", "Операционные системы, среды и оболочки" и "Операционные системы и системное, 1294.27kb.
- Рабочая программа по учебной дисциплине Операционные системы, среды и оболочки наименование, 623.3kb.
- В. Ф. Панин Конспект лекций по учебной дисциплине "Теоретические основы защиты окружающей, 1559.17kb.
- Программа предназначена для изучения учебного курса по дисциплине "Операционные системы,, 53.62kb.
- Методические указания для выполнения Курсовой работы по дисциплине «Операционные системы», 72.86kb.
- Программа по дисциплине «Технологии программирования и операционные системы», 42.87kb.
- Вопросы к экзамену по дисциплине «Операционные системы и среды», 34.81kb.
- Экзаменационные билеты по дисциплине «операционные системы и среды», 429.29kb.
- Конспект лекций по дисциплине «Маркетинг», 487.79kb.
3.3.Обзор основных понятий
Windows 2000 (за малыми исключениями) не кажется пользователю совершенно новой ОС. Она похожа на Windows и может выполнять приложения для нее. Однако то, что скрыто за интерфейсом пользователя, радикально отличается от Windows. В следующих разделах дается беглый обзор того, как разные части Windows 2000 стыкуются друг с другом, начиная с пользовательского интерфейса и двигаясь вниз к исполнительной системе NT.
-
Сессия регистрации
Windows 2000 — это защищенная ОС, требующая, чтобы у каждого пользователя была учетная запись и чтобы пользователь регистрировался в системе, прежде чем получить доступ к ней. Учетная запись каждого пользователя связана с профилем защиты, который представляет собой набор информации, относящейся к контролю доступа и хранящейся в системной базе данных. Подсистема защиты, используя эту информацию, проверяет, действительно ли пользователи являются теми, за кого они себя выдают. Компоненты системы, участвующие в регистрации пользователя, показаны на рис.
П

роцесс системы защиты, называемый процессом регистрации в системе (logon process), ожидает ввода от пользователя. Могут быть активны одновременно несколько таких процессов, каждый из которых работает со своим классом устройств регистрации - например, возможна комбинация мышь/клавиатура или сетевое соединение. Поток этого процесса обнаруживает попытку пользователя войти в систему и предлагает ему ввести идентификатор (имя учетной записи) и пароль.
Затем процесс регистрации посылает эту информацию подсистеме защиты, которая сличает ее с информацией в базе данных защиты. Если аутентификация прошла успешно, то подсистема создает объект, который уникальным образом определяет данного пользователя при всех его последующих действиях. Объект, называемый маркером доступа, (access token), играет ключевую роль в системе защиты Windows 2000: он определяет, к каким системным ресурсам имеют доступ потоки управления, созданные пользователем.
После того, как пользователь идентифицирован, подсистема защиты создает процесс, присоединяет к нему пользовательский маркер доступа и затем передает процесс подсистеме Win32, которая запускает в его адресном пространстве Диспетчер программ (Program Manager) Win32'. Тем самым пользователь устанавливает сессию регистрации. Windows 2000 поддерживает как локальную, так и удаленную регистрацию, и у сетевого сервера, на котором установлена Windows 2000, обычно активны много сессий одновременно.
После того, как интерактивный пользователь успешно зарегистрировался в системе, управление экраном дисплея получает подсистема Win32. В своей первой версии Windows 2000 похожа на Windows 3.1 и совместима с ней, как это изображено на рис. 2-9". В системе Windows 2000 пользователи могут запускать одновременно и одним способом программы Win32 и 16-разрядной Windows. а также программы MS-DOS, OS/2 и POSIX.
Строго говоря, подсистема Win32 запускает не Диспетчер программ, а то приложение, которое указано в реестре в качестве оболочки системы. Так, в Windows 2000 4.0 запускается Explorer, в котором формируется визуальное представление параметров рабочего стола для зарегистрировавшегося пользователя.
Начиная с версии 4.0, система Windows 2000 внешне похожа на Windows 95.
-
Подсистемы среды
Подсистема среды Win32 реализует пользовательский интерфейс Windows 2000. Она управляет не только дисплеем, но и клавиатурой, мышью и другими устройствами ввода, подключенными к машине. Кроме того, это сервер для приложений Win32, реализующий API Win32.
Но не все приложения являются приложениями Win32, и подсистема Win32 не управляет выполнением других приложений, отличных от Win32. Когда пользователь запускает подобное приложение, подсистема определяет его тип и вызывает для его исполнения другую подсистему либо код для инициализации среды MS-DOS, в которой оно будет выполняться (рис. 2-10).
Каждая из подсистем среды предоставляет API для своих клиентских приложений. Например, подсистема Win32 реализует функции API 32-разрядной Windows, а подсистема OS/2 - функции API OS/2. Приложения не могут одновременно использовать функции API разных подсистем, так как каждая подсистема среды работает по-своему. Описатель файла, созданный подсистемой Win32, не может быть преобразован, например, для подсистемы POSIX. Более того, подобные гибридные приложения не будут работать и в ОС MS-DOS/Windows, POSIX или OS/2.
Эмуляция MS-DOS и 16-разрядной Windows обеспечивается подсистемой среды, называемой виртуальной DOS-машиной (virtual DOS-machine, VDM), которая реализует среду машины MS-DOS. Приложения MS-DOS и 16-разрядной Windows работают в контексте процессов VDM, в отличие от других подсистем среды, в которых могут одновременно выполняться несколько процессов VDM.

Поскольку подсистема Win32 обрабатывает весь вывод на дисплей, то другие подсистемы должны перенаправлять видеовывод своих приложений системе Win32 для отображения. VDM, исполняющая приложения 16-разрядной Windows, транслирует вызовы видеовывода своих приложений в вызовы Win32 и посылает их в виде сообщения системе Win32. Подсистемы OS/2 и POSIX, равно как и VDM, в которых исполняются приложения MS-DOS, перенаправляют системе Win32 символьный вывод своих приложений, который последняя отображает в окнах символьного режима, называемых консолями (consoles).
Подсистема среды может поддерживать много клиентских приложений. Каждая подсистема отслеживает своих клиентов и поддерживает глобальную информацию, которую они используют совместно. Хотя одновременно могут выполняться несколько подсистем и VDM, Win32 является единственной подсистемой среды, видимой пользователю. С его точки зрения, все приложения выполняются системой Windows.
-
Базовые сервисы
Подсистемы среды реализуют свои API, обращаясь к базовым сервисом (native services) — системным сервисам, предоставляемым компонентами исполнительной системы NT. Например, диспетчер виртуальной памяти обеспечивает сервисы выделения и освобождения памяти, а диспетчер процессов — сервисы создания и завершения процессов и потоков. Как показано на рис. 2-11, когда подсистема вызывает базовый сервис NT, аппаратура детектирует этот вызов и передает управление исполнительной системе NT. После этого выполнение сервиса осуществляется в режиме ядра.
Так как базовые сервисы используются различными подсистемами среды, то они должны быть универсальными — и даже примитивными. Они должны быть гибкими и не иметь лишних ограничений. Наконец, базовые сервисы не должны вызывать побочных эффектов, которые могут конфликтовать с разнообразными потребностями подсистем среды.
Одним из способов достижения гибкости базовых сервисов состоит в том, что они способны работать с любым процессом, заданным вызывающей программой. В вызове задается описатель процесса, и сервис выполняет действия над заданным процессом. Например, подсистема может вызвать базовый сервис для того, чтобы создать поток или выделить память для одного из своих процессов-клиентов. Конечно, большинство обычных процессов не могут выполнять подобные действия с другими процессами. Подсистемы среды обладают мощными маркерами доступа, дающими им власть над их клиентами.
Основными пользователями базовых сервисов являются защищенные подсистемы DLL и компоненты исполнительной системы NT. Приложения, исполняемые под Windows 2000, написаны для одного из программных интерфейсов — Win32, MS-DOS, 16-разрядной Windows, POSIX или OS/2, — которые реализуются подсистемами среды.
Объекты
Многие, возможно, большинство из базовых сервисов NT — это объектные сервисы. Иными словами, они выполняют некоторое действие над объектом в исполнительной системе NT. Поток открывает описатель объекта и затем использует этот описатель при вызове сервисов, работающих с объектом. Ресурсы, поддерживающие совместное использование, включая процессы, потоки, файлы и распределяемую память, реализованы в исполнительной системе NT как объекты. Таким образом, ОС может воспользоваться сходством свойств ресурсов и использовать общий код для работы с разными типами ресурсов, где только возможно. Объектная система NT — это центральная точка выполнения различных задач управления ресурсами, таких как именование ресурсов; установка пределов, так называемых квот (quotas) объема ресурсов, используемых процессом; совместное использование ресурса двумя процессами и защита ресурсов от несанкционированного доступа.
П

одсистемы среды часто вызывают объектные сервисы для создания, открытия описателя, манипулирования или удаления объектов. Так, при запуске пользователем какого-либо приложения Win32, например Microsoft Excel, подсистема Win32 вызывает диспетчер процессов NT для создания процесса (в котором будет исполняться Excel) и получения его описателя. В свою очередь, диспетчер процессов вызывает диспетчер объектов, чтобы создать объект-процесс и объект–поток. Аналогично, при сохранении пользователем новой таблицы Excel подсистема Win32 обращается к диспетчеру ввода-вывода NT, чтобы создать файловый объект, представляющий файл, в котором хранится электронная таблица, и открыть описатель этого объекта. Диспетчер ввода-вывода обращается для выполнения этой задачи к диспетчеру объектов. Данный процесс иллюстрируется рис. 2-12.
Основной объем обработки, связанной с управлением ресурсами, осуществляется в NT тогда, когда некоторый процесс создает объект и/или открывает описатель объекта. Например, когда процесс (в нашем случае подсистема Win32) создает объект, он может (но необязательно) задать имя объекта. Присвоение объекту имени делает возможным совместное использование этого объекта несколькими процессами. Процесс, желающий использовать распределяемый объект, просто выбирает его имя, обращаясь к диспетчеру объектов NT, и затем открывает описатель объекта.
Объекты размещаются в памяти ОС. Чтобы предотвратить захват одним процессом слишком большого объема памяти, с него списывается определенный объем выделенной процессу квоты всякий раз, когда один из его потоков открывает описатель объекта некоторого типа. Если процесс израсходовал всю свою квоту то диспетчер объектов больше не позволит ему открывать описатели объектов.
Помимо управления ресурсами и поддержки их совместного использования, объектная система NT служит центром, в котором обеспечивается защита ресурсов. При открытии процессом описателя объекта активизируется подсистема защиты NT. С каждым объектом связана маленькая база данных, называемая списком контроля доступа (access control list, ACL) и содержащая информацию о том, какие процессы имеют доступ к объекту и какие действия эти процессы могут над ним производить. При открытии описателя объекта процесс указывает, какие действия он собирается производить с объектом. Например, процесс может открыть файл для доступа по чтению. Система защиты проверяет, предоставлен ли процессу доступ по чтению к данному файлу, и если это так, то диспетчер объектов возвращает процессу описатель, имеющий доступ по чтению. Процесс может затем использовать этот описатель для чтения соответствующего файла. Если процессу необходим также доступ по записи, то он может либо запросить оба вида доступа при открытии первого описателя, либо открыть второй описатель с доступом по записи. В силу того, что процесс должен открыть описатель объекта, прежде чем он сможет что-либо с объектом сделать, и того, что в открытии описателя участвует подсистема защиты, ни один процесс не может обойти контроль доступа NT.
-
В
иртуальная память
Разные ОС по-разному представляют физическую память и требуют от своих программ доступа к ней по определенным правилам. В Windows 2000 прикладные программы исполняются в одной из сред, которые ведут себя как некоторая ОС: Windows, MS-DOS, POSIX или OS/2. Задача состоит в том, чтобы приложения всех типов могли выполняться без изменений и без столкновений друг с другом в памяти.
Каждая подсистема среды Windows 2000 представляет память в том виде, который ожидают от нее приложения. Исполнительная система NT, лежащая ниже подсистем среды, имеет свою собственную структуру памяти, к которой подсистемы обращаются, вызывая базовые сервисы NT.
Архитектура памяти NT — это система виртуальной памяти, использующая 32-разрядные адреса в плоском (линейном) адресном пространстве. Виртуальное адресное пространство процесса (virtual address space) — это набор адресов, которые могут использовать потоки процесса. Во время выполнения диспетчер виртуальной памяти при помощи аппаратных средств транслирует, или отображает (map) виртуальные адреса в физические адреса, по которым данные хранятся на самом деле. Посредством контроля над процессом отображения ОС может гарантировать, что процессы не будут пересекаться друг с другом и не повредят ОС.
Виртуальное адресное пространство каждого процесса равно четырем гигабайтам (232 байта), два из которых предназначены для использования программой, а другие два зарезервированы для ОС. Четыре гигабайта (и даже два) — это гораздо больше объема физической памяти, доступного на обычных машинах. Когда физической памяти не хватает, диспетчер виртуальной памяти пересылает, или "откачивает" часть содержимого памяти на диск. Перемещение данных на диск освобождает физическую память, и ее теперь можно использовать для других целей. При обращении потока по виртуальному адресу, соответствующему откачанным на диск данным, диспетчер виртуальной памяти снова загружает информацию с диска в память. Более подробно виртуальная память описана в гл. 6, "Диспетчер виртуальной памяти".
В Windows 2000 ОС располагается в верхней части виртуальной памяти, а пользовательский код и данные — в нижней, как показано на рис. 2-13. Поток пользовательского режима не может производить непосредственную запись и чтение системной памяти.
Часть системной памяти, называемая резидентным пулом (nonpaged pool), никогда не откачивается на диск и используется для хранения некоторых объектов NT и других важных структур данных. Другая часть системной памяти, которая может быть перемещена на диск, называется нерезидентным пулом (paged pool). Всю пользовательскую память можно откачать виртуальной памяти").
-
В
вод-вывод и файловые системы
Как и в случае с памятью, подсистемы среды обеспечивают такие средства ввода-вывода, которых ожидают от них приложения. Эти специфичные средства обеспечивают подсистемы среды при помощи обращений к базовым сервисам NT.
В основе системы ввода-вывода лежит асинхронная модель ввода-вывода, однако подсистемам среды предоставляются системные сервисы, позволяющие им реализовывать как асинхронную, так и синхронную модели. Асинхронный ввод-вывод (asynchronous I/O) позволяет программе запросить выполнение операции ввода-вывода, после чего продолжать выполнение другой работы, пока устройство не закончит пересылку данных. Система ввода-вывода автоматически уведомляет программу о завершении ввода-вывода, так что программа может выполнять последующую обработку. Так как устройства ввода-вывода обычно работают существенно медленнее процессоров, то программа, выполняющая много операций ввода-вывода, в ряде случаев может повысить свою производительность, используя асинхронный ввод-вывод.
Windows 2000 поддерживает несколько файловых систем, включая файловую систему FAT (file allocation table), высокопроизводительную файловую систему (high performance file system, HPFS) и новую файловую систему, под названием файловая система NT (NT file system, NTFS). NTFS расширяет возможности как FAT, так и HPFS, добавляя к ним следующие:
- Средство восстановления файловой системы, позволяющее быстро восстанавливать данные на диске после системного сбоя.
- Способность с легкостью работать с носителями данных большого объема — до 264 байт, или приблизительно 17 миллиардов гигабайт.
- Средства контроля доступа, в том числе файлы "только для исполнения".
- Имена файлов, записанные в стандарте Unicode, что позволяет перемещать документы между компьютерами, находящимися в разных странах, без искажения имен файлов и каталогов (см. разд. 2.3.1).
- Поддержка среды ОС POSIX, включая жесткие связи (hard links), имена, отличающиеся только регистром букв, и информацию о времени последнего открытия файла.
- Средства для будущего расширения, такие как обработка транзакций для поддержки отказоустойчивых приложений, задаваемые пользователем номера версий файла, несколько потоков данных в одном файле, гибкие возможности задавать имена и атрибуты файлов, а также поддержка популярных файл-серверов.
Диспетчер ввода-вывода позволяет драйверам устройств и файловым системам (которые он также рассматривает как драйверы "устройств") динамически загружаться и выгружаться из системы, в зависимости от потребностей пользователя. Драйверы являются модульными и могут располагаться слоями один над другим, что позволяет, например, разным файловым системам использовать для доступа к файлам один и тот же драйвер диска, как показано на рис. 2-14.
Unicode
Самый низкий уровень поддержки локализации — это представление отдельных символов, кодовые наборы. В США для представления информации традиционно используется стандарт ASCII (American Standard Code for Information Interchange — Американский стандартный код для обмена информацией). Однако, для европейских и других стран этот код не является адекватным, так как в нем нет многих символов и знаков. Например, там нет знака британского фунта, а также диакритических символов, используемых во французском, немецком, датском и испанском языках.
Международная организация по стандартизации ISO (International Standards Organization) установила стандартный кодовый набор, называемый Latin 1 (стандарт ISO 8859-1) и определяющий коды для всех европейских символов, которых нет в ASCII. В Microsoft Windows используется несколько измененный вариант Latin 1, который называется кодовым набором Windows ANSI. Windows ANSI является однобайтовой схемой кодирования (single-byte coding scheme), так как для представления каждого символа в нем используется 8 бит. Максимальное число символов, которое можно представить с использованием 8 бит, равно 256 (28).
Алфавит (script) — это набор литер, необходимых для записи текста на некотором языке. Часто один и тот же алфавит используется несколькими языками: например, кириллица применяется как в русском, так и в украинском. Windows ANSI и другие однобайтовые схемы могут закодировать количество символов, достаточное для представления букв любого западного алфавита. Однако восточные алфавиты, такие как японский или китайский, в которых используются тысячи разных символов, не удается закодировать при помощи однобайтовой схемы. В таких случаях используют двухбайтовую схему кодирования, когда для каждого символа требуется 1 б бит, либо многобайтовую, в которой одни символы представляются 8 битами, а другие 16, 24 или 32 битами. Последняя схема требует применения сложных алгоритмов разбора для определения длины данного символа. Более того, большое число кодовых наборов означает, что данному коду могут соответствовать совершенно разные символы на разных компьютерах, в зависимости от используемых на этих компьютерах кодовых наборов.
Для решения проблем множественности схем кодирования и для поддержки более широкого набора алфавитов Windows 2000 использует для представления данных новый стандарт Unicode. Unicode - это 16-разрядная схема кодирования символов, в которой можно представить 65536 (216) символов. Этого достаточно для всех современных, а также нескольких старых или мертвых языков, имеющих ограниченное применение (например, санскрита и, может быть, египетских иероглифов). Unicode также включает знаки препинания, математические символы и набор графических символов, называемых дингбатами5 (dingbats), после чего еще остается много места для расширений.
В Unicode "суть" символа отделена от информации о шрифте или форматировании, используемой для его отображения. Каждому коду соответствует один (и только один) символ; для отображения символов Unicode в различных стилях и формах к ним применяется информация о шрифте. Раскладка алфавитов и символов в Unicode показана на рис. 2-1 б 6.
Хотя подсистема Win32 предоставляет варианты функций API как для строк ANSI, так и для строк Unicode, последний является "родным" кодовым набором Windows 2000. Все строки в системе, включая имена объектов, имена путей, имена файлов и каталогов, представляются 16-разрядными символами Unicode. Даже подсистема Win32 преобразует передаваемые ей символы ANSI в символы Unicode, прежде чем обрабатывать их; перед возвратом управления она, при необходимости, преобразует строки обратно из Unicode в ANSI.
П

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

Под Windows 2000 приложения текстового режима преобразуются, в некотором смысле, в графические, так как их простой, построчный вывод отображается внутри окна. Для получения такого эффекта без необходимости переписывания приложений текстового режима Тереза Стоуэлл (Therese Stowell), ранее работавшая в группе файловых систем OS/2, разработала набор функций Win32 API, которые направляют вывод приложений символьного режима в текстовые окна, управляемые подсистемой Win32. Эти окна называются консолями (consoles). Стандартная библиотека Си, например, вызывает консольные функции, чтобы направить в окно консоли стандартный вывод приложений POSIX. Аналогично, когда приложение OS/2 вызывает функции VIO или приложение MS-DOS вызывает функции INT(IO), подсистема среды OS/2 или MS-DOS, соответственно, вызывает функции консоли Win32 для отображения текстового вывода.
В Windows 2000 консольные окна располагаются среди графических окон, и пользователи могут перемещать текст из одних в другие через буфер обмена. Более того, с использованием новых консольных функций Win32 разработчики могут создавать для Windows 2000 32-разрядные приложения текстового режима. Большинство из утилит командной строки, поставляемых с Windows 2000, — это Win32 приложения.