Пятница , Декабрь 6 2019
Главная / Студентам / ОСиС / Лекция № 11. ОПЕРАЦИОННЫЕ СИСТЕМЫ ФИРМЫ MICROSOFT

Лекция № 11. ОПЕРАЦИОННЫЕ СИСТЕМЫ ФИРМЫ MICROSOFT

11.1. Операционная система DOS 

DOS (дисковая операционная система) – одна из первых операционных систем, предназначенных для работы персональных компьютеров. Она состоит из следующих частей. 

  • Базовая система ввода-вывода (BIOS). Находится в ПЗУ компьютера. Ее назначение состоит в выполнении наиболее простых и универсальных услуг операционной системы, связанных с осуществлением ввода-вывода. BIOS содержит также тест функционирования компьютера, проверяющий работу памяти и устройств компьютера при включении электропитания. Кроме того, BIOS содержит также программу вызова загрузчика операционной системы. 
  • Загрузчик операционной системы. Это очень короткая программа, находящаяся в первом секторе каждой дискеты с операционной системой DOS. Функция этой программы заключается в считывании в память еще двух модулей операционной системы. 
  • Системные файлы IO.SYS и MSDOS.SYS. Эти файлы загружаются в оперативную память компьютера загрузчиком операционной системы и остаются там постоянно. Файл IO.SYS представляет собой дополнение к BIOS. Файл MSDOS.SYS реализует основные высокоуровневые услуги DOS. 
  • Командный процессор DOS. Командный процессор обрабатывает команды, вводимые пользователем. Он находится в файле COMMAND.COM на диске, с которого загружается операционная система. Некоторые команды пользователя, например Type, Dir или Copy командный процессор выполняет сам. Такие команды называются внутренними. Для выполнения остальных (внешних) команд пользователя командный процессор ищет на дисках программу с соответствующим именем и, если находит ее, то загружает в память и передает ей управление. По окончании работы программы командный процессор удаляет программу из памяти и выводит сообщение о готовности к выполнению команд (приглашение DOS). 
  • Внешние команды DOS. Это программы, поставляемые вместе с операционной системой в виде отдельных файлов. Эти программы выполняют действия обслуживающего характера, например, форматирование дискет, проверку дисков и т.д. 
  • Драйверы устройств. Это специальные программы, которые дополняют систему ввода-вывода DOS и обеспечивают обслуживание новых или нестандартное использование имеющихся устройств. Например, с помощью драйверов возможна работа с «электронным диском», часть операционной памяти компьютера, с которой можно работать так же, как с диском. Драйверы загружаются в операционную память при загрузке операционной системы, их имена указываются в специальном файле CONFIG.SYS. Такая схема облегчает добавление новых устройств и позволяет делать это, не затрагивая системные файлы DOS.  

11.2. Windows NT 

Windows NT (New Technology) – операционная система корпорации Microsoft для использования на мощных персональных компьютерах и серверах. Windows NT 4 (1996) (и все последующие модификации: Windows 2000 (2000), Windows XP (2002), Windows Server 2003 (2003), Windows Vista (2007)) – это нечто совсем иное, чем DOS. Хотя в этих операционных системах можно открыть окно сеанса DOS, они вовсе не являются оболочкой в традиционном понимании этого слова. Здесь речь может идти, скорее, об эмуляции DOS (для того чтобы все желающие могли поработать с привычным интерфейсом командной строки). В сеансе DOS Windows NT многие DOS-программы работать не будут. И символьного режима экрана, который в Windows 9x предшествует загрузке графической оболочки, вы здесь не увидите. 

Для хранения параметров и загрузки драйверов Windows NT, как и Windows 9x, использует системный реестр. Файлов Config. sys, Autoexec. bat и .ini здесь нет вообще. Более того, модернизировать Windows до Windows NT невозможно. При установке Windows NT все приложения придется устанавливать и настраивать заново.  Windows NT может использовать файловую систему FAT, и поэтому вы можете загружать компьютер с DOS-диска и иметь полный доступ ко всем файлам. Однако некоторые из самых прогрессивных возможностей Windows NT обеспечиваются ее собственной файловой системой NTFS (NT File System). NTFS позволяет создавать на диске разделы объемом до 2 Тбайт (как и FAT 32), но, кроме этого, в нее встроены функции сжатия файлов, безопасности и аудита, необходимые при работе в сетевой среде. Установка операционной системы Windows NT начинается на диске FAT, но по желанию  пользователя в конце установки данные на диске могут быть конвертированы в формат NTFS. Можно сделать это и позже, воспользовавшись утилитой Convert. ехе, поставляемой вместе с операционной системой. Преобразованный к системе NTFS раздел диска становится недоступным для других операционных систем. Чтобы вернуться в DOS, Windows 3.1 или Windows 9x, нужно удалить раздел NTFS, а вместо него создать раздел FAT. Windows 2000 можно устанавливать на диск с файловой системой FAT 32 и NTFS. 

11.3. Windows API 

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

Все API можно разделить на три класса: 

  • API как интерфейс высокого уровня, принадлежащий к библиотекам RTL (Run Time Library – библиотека времени выполнения);  
  • API прикладных и системных программ, входящих в поставку операционной системы; 
  • Прочие интерфейсы API. 

Библиотека RTL включает в себя стандартные подпрограммы, которые система программирования поставляет на этапе компиляции. В общем случае это не только модули системы программирования, но и модули операционной системы. 

В Windows API имеется множество как самых незаметных, так и значительных отличий от других API, таких как POSIX API, с которым знакомы программисты, работающие в UNIX и Linux. Многие системные ресурсы Windows представляются в виде объектов ядра (kernel objects), для идентификации и обращения к которым используются дескрипторы (handles). По смыслу эти дескрипторы аналогичны дескрипторам (descriptors) файлов и идентификаторам (ID) процессов в UNIX. 

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

Любые манипуляции с объектами ядра осуществляются только с использованием Windows API. «Лазеек» для обхода этого правила нет. Подобная организация работы согласуется с принципами абстрагирования данных, используемыми в объектно-ориентированном программировании, хотя сама система Windows объектно-ориентированной не является. 

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

Windows – богатый возможностями и гибкий интерфейс. Во-первых, одни и те же или аналогичные задачи могут решаться с помощью сразу нескольких функций; так, имеются вспомогательные функции (convenience functions), полученные объединением часто встречающихся последовательностей функциональных вызовов в одну функцию (к числу подобных функций принадлежит и функция CopyFile, используемая в одном из примеров далее). Во-вторых, функции часто имеют многочисленные параметры и флаги, многие из которых обычно игнорируются.  

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

Базовой единицей выполнения в Windows является поток (thread). В одном процессе (process) могут выполняться один или несколько потоков. 

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

WaitForSingleObject
WaitForSingleObjectEx
WaitForMultipleObjects
WaitNamedPipe 

Существует также несколько соглашений, регулирующих порядок использования имен типов: 

Имена предопределенных типов данных, необходимых API, также являются описательными, и в них должны использоваться прописные буквы. К числу наиболее распространенных относятся следующие типы данных: 

BOOL (определен как 32-битовый объект, предназначенный для хранения одного логического значения),  

HANDLE

DWORD (вездесущее 32-битовое целое без знака), 

LPTSTR (указатель на строку, состоящую из 8- или 16-битовых символов) LPSECURITY_ATTRIBUTES

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

В именах предопределенных типов указателей операция * не используется, и они отражают дополнительные отличия между указателями различного типа, как,  например, в случае типов LPTSTR   (определен как TCHAR *) и LPCTSTR   (определен как const TCHAR *). Тип TCHAR   может обозначать как обычный символьный тип  char,  так и двухбайтовый тип wchar_t

В отношении использования имен переменных, – по крайней мере, в прототипах функций, – также имеются определенные соглашения. Так, имя lpszFileName соответствует «длинному указателю на строку, завершающуюся нулевым символом», которая содержит имя файла. Этот пример иллюстрирует применение так называемой «венгерской нотации», которой мы, как правило, не стремимся придерживаться. Точно так же, dwAccess – двойное слово (32 бита), содержащее флаги прав доступа к файлу, где «dw» означает «double word» – «двойное слово». 

Наконец, несмотря на то что оригинальный API Win32 с самого начала разрабатывался как совершенно независимый интерфейс, он проектировался с учетом обеспечения обратной совместимости с API Winl6, входившим в состав Windows 3.1. Это привело к некоторым досадным с точки зрения программиста последствиям: 

  • В названиях типов встречаются элементы анахронизма, как, например, в случае типов LPTSTR и LPDWORD, ссылающихся на «длинный указатель», который является простым 32- или 64-битовым указателем. Необходимость в указателях  какого-либо   иного   типа  отсутствует.   Иногда   составляющая «длинный» опускается, и тогда, например, типы LPVOID и PVOID являются эквивалентными. 
  • В имена некоторых символических констант, например WIN32_FIND_DATA, входит компонент «WIN32», хотя те же константы используются и в Win64. 
  • Несмотря на то что упомянутая проблема обратной совместимости в настоящее время потеряла свою актуальность, она оставила после себя множество 16-разрядных функций, ни одна из которых, как правило, не используется, хотя и могло бы показаться, что эти функции играют весьма важную 
    роль. В качестве примера можно привести функцию OpenFile, которая, судя по ее названию, нужна для открытия файлов, тогда как в действительности для открытия существующих файлов всегда следует пользоваться только функцией CreateFile