1. Определение ОС.

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

 

2. Эволюция ОС 

1(лампы)1945г – первые ЭВМ без ОС.
2(транзисторы)1955г –нач 60х Усоверш процесс загрузки перфокарт. первый прообраз ОС – системы пакетной обработки.Разделение прогр-тов, польз-лей, проектировщиков, спец-тов по обслуживанию.
3(интегральные микросхемы)1965г Удешевление, появление первых ПК.Появились многозадачные.Появились магн ленты, диски. Возможности: Мультипрограммирование (1врем хранение в памяти разл прог и 1врем их выполнение). Прерывания, реализ-я защитные механизмы, развитие параллелизма в . Появление системы разделения времени. Разраб ФС   Разграничение прав пользователя.ОS 360
4(ПК)1980-ый и до наших дней. Появление БИС и СБИС, совершенствование ПК. Сетевые и распределённые системы.

MS-DOS, UNIX
1985 – 1995 Windows по сути является лишь графической оболочкой MS-DOS

 

3. Классификация ОС.

По режиму обработки задачи:
-однопрограммные(MSDOS, MSX)
-Мультипрограммные(UNIX, OS/2, Windows 95)
Мультипрограммная ОС-сама распараллеливает задачи.
Мультизадачная ос-распараллеливанием занимается программист.
Исп-ся механизм вытесняющих приоритетов для создания иллюзии вып-я нескольких прог 1временно.
По способу взаимодействия систем:
-ОС с пакетной обработкой (ОС ЕС)
- диалоговые системы:
-однопользовательские (однотерминальные) ОС (MS-DOS, Windows до NT)
-мультитерминальные ОС (Linux) (UNIX, Windows NT).
По спос построения:
-Микроядерные                                -многоуровневая
-Макроядерные(монолитные)        -объектно-ориентированная
-распределённая                               -С множественными прикладными средами
По назначению 
-Общего назначения ;
 -Специального назначения:

 - ОС для КПК, - ОС для встроенных систем, - ОС для организации и ведения баз данных - ОС для решения задач реального времени

 

4. Функции ОС.

1) планир-е заданий и исп-е процессора. Разработка программ.
2) обеспечение прог ср-вами коммуникации и синхронизации. Исполнение программ.
3) управление памятью. Доступ к устр-м ввода вывода.
4) управление ФС. Контролируемый доступ к файлам.
5) Системный доступ.
6) обеспечение безопасности. Обнаружение ошибок и их обработка.
7) Учет использования ресурсов.

Предоставление пользователю вместо реальной аппаратуры расширенную виртуальную машину, с αой проще работать.

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

 

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

 

8. ОС как система управления ресурсами.
Ресурсы:  Процессор   Память    Наборы данных    Диски     Принтер    Сетевые устр-ва
Ресурсы распределяются между процессами.
Процесс – программа в стадии выполнения. Программа или приложение  это статистический объект представляющий собой файл с кодами и данными. Процесс это динамический объект, αый возникает в ОС после того как пользователь решит запустить программу на выполнение. ОС должна удовлетворять ресурсами все процессы, но при этом все ресурсы должны эффективно использоваться.
Для каждого вновь созданного процесса ОС формирует специальную структуру – контекст процесса, в αом содержится данные о потребностях процесса в ресурсах.
Распределение памяти включает распределение физической памяти между всеми существующими в данный момент процессами, загрузку кодов и данных процесса, в отведённую им область памяти, а также защиту областей памяти каждого процесса.
Управление ресурсами включает решение следующих задач:
Планирование ресурсов;Удовлетворение запросов на ресурс;Отслеживание состояния и учет использования ресурсов;Разрешение конфликтов между процессами
работа ОС заключается в обесп организованного и контрол-го распр-я процессоров, памяти и устр-тв вв-вывода между разл прогами, состязающимися за право их исп-ть.
Упр-е ресурсами включает в себя их мультиплекс-е (распределение) 2 способами:
1)ресурс распределяется во времени, различные пользователи и программы используют его по очереди. Сначала 1 из них получает доступ к исп-ю ресурса, потом другой и т. д. Определение того, как долго ресурс будет использоваться во времени, кто будет следующим и на какое время ему предоставляется ресурс — это задача ОС.

2)пространственное мультиплексирование. каждый клиент получает часть ресурса. Обычно оперативная память разделяется между нески работающими программами, так что все они 1временно могут постоянно нах-ся в ней. Если предположить, что памяти достаточно для тога, чтобы хранить несколько программ, эффективнее разместить в памяти сразу несколько программ, чем выделить всю 1 программе. при этом возникают проблемы справедливого распр-я, защиты памяти и т. д., и для разрешения подобных вопросов существует ОС.Во многих системах 1 диск в 1 и то же время может содержать файлы нескольких польз-й. Распред-е дискового простр-ва и отслеж-е того, кто какие бло­ки диска использует, является типичной задачей упр-я ресурсами, α выполняет ОС.

 

9. Функциональные компоненты ОС.

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

 

10. Интерфейс прикладного программирова­ния

Интерфейс прикладного программирова­ния (Application Programming Interface Win32 - Win32 API) - это программный интерфейс, αый используется для управления этими операционными сис­темами. Win32 API состоит из набора функций и подпрограмм, предоставляющих программный доступ к возможностям ос.
Программные интерфейсы приложений представляют собой набо­ры функций, αые обеспечивают сервисы данного приложения. Win32 API  содержит более 3000 функции для реализации всех видов сервисов ОС 
API-функции Windows входят в состав динамически подключаемых библио­тек, поэтому необходимо знать определение DLL и понимать осн принципы их работы.
Динамически подключаемая библиотека (Dynamic Link Library - DLL) явля­ется исполняемым файлом, αый содержит несколько экспортируемых функции (exportable functions), т.е. функций, к αым могут обращаться другие ис­полняемые приложения (ЕХЕ или DLL). Файлы DLL намного проще файлов ЕХЕ, например, в них нет кода, αый управлял бы графическим интерфейсом или обрабатывал сообщения Windows.
Для размещения API-функций Windows использует несколько DLL. В дей­ствительности большая часть  функций Win32 API содержится в трех DLL:
KERNEL32.DLL - управления памятью, процессами и потоками;
USER32.DLL – ф-и для управления польз интерфейсом;
GDI.DLL – ф-и для рисования графич образов, отображ текста и работы со шрифтами.
Кроме этих библиотек Windows также содержит несколько других DLL более узкой специализации. Здесь приводятся неαые из них:
COMDLG32.DLL - функц управления стан­дартными диалоговыми окнами Windows;
LZ32.DLL - функций архивирования и разархивирования файлов;
ADVAPI32.DLL - защитой объектов и работой с реестром;
WINMM.DLL - содержит около 200 функций, относящихся к мультимедиа.

 

11. Требования к современным ОС.

Очевидно, что главным требованием, предъявляемым к ОС, является способность выполнения основных функций:
- эффективного управления ресурсами.
- обеспечения удобного интерфейса для пользователя и прикладных программ.
Современная ОС, как правило, должна реализовывать
- мультипрограммную обработку,
 - виртуальную память,
- свопинг,
 - поддерживать многооконный интерфейс, а также придерживаться принципов построения ОС.
Принципы построения:
1. Модульность.
2. Особый режим работы.
3. Виртуализация.
4. Независимость от внешних устройств.
5. Мобильность.
6. Совместимость.
7. Генерируемость.
8. Открытость (расширяемость).
9. Безопасность.
10. Надежность и отказоустойчивость.

11. Производительность.

 

12. Обзор современных ОС. ОС MS-DOS.

DOS - Дисковая Операционная Система
Первая версия операционной системы (ОС) для компьютера IBM PC - MS DOS 1.0 была создана фирмой Microsoft в 1981г. В дальнейшем по мере совершенствования компьютеров IBM PC выпускались новые версии DOS, учитывающие новые возможности компьютеров и предоставляющие дополнительные удобства пользователю.

Последние версии системы имеют средства для эффективного использования оперативной памяти сверх 640 Кбайт, позволяют работать с логическими дисками, большими 32Мбайт, переносить DOS и драйверы устройств в расширенную память, освобождая место в обычной памяти для прикладных программ и т.д. Наиболее популярная версия MS-DOS 6.22 включает средства сжатия информации на дисках (DoubleSpace), программы создания резервных копий, антивирусную программу и другие мелкие усовершенствования. В одной из последних версий DOS - PC-DOS 7.0 решена "проблема 2000" (т.е. проблема с определением даты после 2000 года).

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

Память: 640Кб (4Мб)
Процессор: 80286 (80386) или совместимый

Винчестер: 10Мб (40Мб)

 

13. Обзор современных ОС. ОС UNIX.

UNIX
Операционная система UNIX - одна из самых популярных в мире операционных систем благодаря тому, что ее сопровождает и распространяет большое число компаний. Была разработана Кеном Томпсоном - сотрудником фирмы Bell Laboratories концерна AT&T в 1969 году как многозадачная система для миникомпьютеров и мэйнфреймов. UNIX вобрала в себя целый ряд новых разработок в области операционных систем. В принципе, она создавалась как операционная система для исследователей
В 1970г. Деннис Ритчи вместе с Кеном Томпсоном переписали код системы с машинно-зависимого языка ассемблера (на котором тогда писались все операционные системы) на язык высокого уровня - Си. Что позволило им написать всего одну версию операционной системы UNIX, которую потом можно было компилировать Си-компиляторами на различных машинах.

В 1974г UNIX была передана университетам "для образовательных целей", а несколько лет спустя нашла коммерческое применение. С тех пор она выросла в одну из наиболее распространенных операционных систем. Сейчас существуют версии UNIX для многих систем, начиная от PC (персонального компьютера), до суперкомпьютеров, таких как Cray Y-MP.

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

Кластеризация- многомашинный вычислительный комплекс

Графический интерфейс

Наиболее распространенным менеджером окон в UNIX является Windows Motif Manager.

 

14. Обзор современных ОС. ОC Linux.

Linux
В начале 90-х годов Линус Торвальдс при участии ряда программистов из ряда стран мира разработал операционную систему Linux. Будучи ОС - Linux выполняет многие из функций, характерные для DOS и Windows. Однако она отличается особой мощью и гибкостью. Linux представляет собой PC-версию ОС UNIX, которая десятилетиями используется на мэйнфреймах и мини-ЭВМ и является основной ОС рабочих станций. Linux предоставляет в распоряжение персонального компьютера скорость, эффективность и гибкость UNIX, используя при этом все преимущества современных персональных машин.

Совместимость
Linux многозадачная многопользовательская операционная система (точно также как и другие версии UNIX). Linux достаточно хорошо совместим с рядом стандартов для на уровне исходных текстов, включая POSIX.1, System V и BSD.

Сегодня Linux - это полноценная ОС семейства UNIX, способная работать с X Windows, TCP/IP, Emacs, UUCP, mail и USENET. Практически все важнейшие программные пакеты были поставлены и на Linux, теперь для него доступны и коммерческие пакеты. Сейчас все большее разнообразие оборудования поддерживается по сравнению с первоначальным ядром.

Графический интерфейс
В Linux применяется графический пользовательский интерфейс (GUI) X Window. Менеджеров окон KDE, GNOME
 
Поддерживаемые файловые системы
Linux поддерживает различные типы файловых систем для хранения данных. Некоторые файловые системы, такие как файловая система ext2fs, были созданы специально для Linux. Поддерживаются и другие типы файловых систем, такие как Minix-1, Xenix и файловая система ISO 9660 CD-ROM для работы с дисками CD-ROM. Реализована также файловая система MS-DOS

Сетевые возможности
Linux обеспечивает полный набор протоколов TCP/IP для работы в сети Internet. Поддерживается весь спектр клиентов и услуг TCP/IP, таких как FTP, TELNET, NNTP и SMTP.

Небольшие требования к вычислительным ресурсам
В Linux объединены мощь и гибкость рабочей UNIX-станции, возможность использования полного набора приложений Internet и полнофункциональный графический интерфейс, при незначительных требованиях к вычислительным ресурсам. Все это свободно инсталлируется на любом PC, оснащенном процессором 386, 486 или Pentium.

Память: 4Мб (32Мб)
Процессор: 80386 (IP-166МГц) или совместимый

Винчестер: 100Мб (600Мб)

 

15. Обзор современных ОС. ОC Windows.

Windows for Workgroups 3.11
Следующая версия Microsoft Windows 3.11 была названа Windows for Workgroups 3.11. Основным отличием ее от версии Windows 3.1 является то, что в программный пакет интегрированы сетевые драйверы, позволяющие использовать его не только на отдельно стоящем ПК, но и в сети. Кроме того, в операционную среду включены несколько новых программ, значительно изменен Диспетчер файлов - одно из слабых мест предыдущих версий, расширен диспетчер печати и встроен факс. Разработан новый офисный пакет включающий в себя: текстовый редактор Word, электронные таблицы Excel редактор формул Equation и мн.др. Внешний вид Windows for Workgroups 3.11 представлен на рис.2 и практически не отличается от Windows 3.1.

Сетевые возможности
Само название системы "Windows для рабочих групп" означает то, что программа предназначена для работы на нескольких ПК, причем равноправных пользователей, объединенных в рабочие группы.
Сетевая версия Windows for Workgroups 3.11 позволяет легко связываться с другими участниками сети и пользоваться информацией общего доступа, а также легко изменять конфигурацию сети.
Память: 2Мб (8Мб)
Процессор: 80386 (80486) или совместимый
Винчестер: 40Мб (100Мб)

 

Windows 98

Объектно-ориентированный подход

При создании Windows 95 (рис.3) фирма Microsoft в полной мере реализовала объектно-ориентированный подход. На уровне пользователя объектный подход выражается в том, что интерфейс представляет собой подобие реального мира, а работа с машиной сводится к действиям с привычными объектами. Так, папки можно - открыть, убрать в портфель, документы - просмотреть, исправить, переложить с одного места на другое, выбросить в корзину, факс или письмо - отправить адресату и т. д.

"Drag & Drop "перетащить и бросить
стандарт Plug & Play ("включи и работай
32-разрядная ОС защищенного режима и ее многозадачность

Память: 16Мб (32Мб)
Процессор: IP-200МГц (IP-233МГц) или совместимый
Винчестер: 250Мб (500Мб)

 

Windows NT
Стремясь обеспечить совместимость (compatible) новой операционной системы, разработчики Windows NT сохранили привычный интерфейс Windows и реализовали поддержку существующих файловых систем (таких, как FAT) и различных приложений (написанных для MS-DOS, OS/2 1.x, Windows 3.x и POSIX). Разработчики также включили в состав Windows NT средства работы с различными сетевыми средствами.

Переносимость работать как на CISC и  RISC-процессорах
Масштабируемость (несколько ядер)
Система безопасности
Сетевые возможности поддерживается TCP/IP, таких кFTP, SMTP, NNTP и др.
Надежность и отказоустойчивость
Многоязыковая поддержка
Расширяемость

Память: 32Мб (64Мб)
Процессор: IP-166МГц (IP-200МГц) или совместимый
Винчестер: 300Мб (500Мб)

 

Общие характеристики Windows NT 2000.
Windows NT 2000 является дальнейшим развитием ранее существовавших программных продуктов фирмы Microsoft - Windows NT и сочетает в себе неотразимый интерфейс Windows 98 и высокий уровень защиты присущий Windows NT 4.0. Также в ней реализована поддержка устройств Plug & Play и расширенное управление питанием, добавлены новые драйвера устройств, обеспечена поддержка FAT32 и совместимость с Windows 98.

Имеется расширенная поддержка альтернативной загрузки нескольких ОС. Возможность установить на одном жестком диске NT5.0, Windows 95, Windows 98 и NT4.0 (они должны быть расположены на разных разделах диска).

Реализована многоязыковая поддержка. Обнаружение и установка шрифтов, символов и др. компонентов для работы с 69 иностранными языками.

Windows NT 2000 имеет возможность удаленной инсталляции, а также содержит драйвер мультимедийной архитектуры DirectX 6.0.

Windows NT 2000 является одним из последних продуктов фирмы Microsoft и ориентирована как на серверные, офисные, так и на домашние системы.

Аппаратные требования для Windows NT 2000: минимальные (рекомендуемые)

Память: 32Мб (64Мб)

Процессор: IP-200МГц (IP-233МГц) или совместимый

Винчестер: 300Мб (500Мб)

 

Windows Vista
Первое, что бросается в глаза при знакомстве с Windows Vista, это то, что работа ОС стала более быстрой и безопасной. После четырехлетней разработки, в конце этого года появится принципиально новая версия Windows. Но уже сейчас, возможности Beta 2 весьма впечатляют. Безопасность – вот основное улучшение, из-за которого многие пользователи перейдут на использование Windows Vista. Устаревающая Windows XP, как не прискорбно об этом говорить, уже практически не может выстоять под натиском вирусных атак 21 века. Выход в конце этого года Service Pack 3 (SP3) для Windows XP способен удержать на плаву ОС еще какое-то время, но все же появление Windows Vista продиктовано временем. Среди прочих достоинств новой ОС есть расширенная система распознавания голоса и управления компьютером с помощью голоса.

 

16. Обзор современных ОС. ОC QNX.

QNX (произносится как «кью-эн-икс» или «кьюникс») — POSIX-совместимая операционная система реального времени, предназначенная преимущественно для встраиваемых систем. Считается одной из лучших реализаций концепции микроядерных операционных систем.Содержание

Описание
Как микроядерная операционная система, QNX основана на идее работы основной части своих компонентов как небольших задач, называемых сервисами. Это отличает её от традиционных монолитных ядер, в которых ядро операционной системы — одна большая программа, состоящая из большого количества «частей», каждая со своими особенностями. Использование микроядра в QNX позволяет пользователям (разработчикам) отключить любую ненужную им функциональность, не изменяя ядро. Вместо этого можно просто не запускать определённый процесс.
Система достаточно небольшая, чтобы в минимальной комплектации уместиться на одну дискету, вместе с этим она считается очень быстрой и должным образом «законченной» (практически не содержащей ошибок).
QNX Neutrino, выпущенная в 2001 году, перенесена на многие платформы, и сейчас способна работать практически на любом современном процессоре, используемом на рынке встраиваемых систем. Среди этих платформ присутствуют семейства x86, MIPS, PowerPC, а также специализированные семейства процессоров, такие, как SH-4, ARM, StrongARM и xScale.
Версия для некоммерческого использования доступна для скачивания на веб-сайте разработчика.

История
В 1980 году студенты канадского Университета Ватерлоо Гордон Белл и Дэн Додж закончили изучение базового курса по разработке операционных систем, в ходе которого они создали основу ядра, способного работать в реальном времени. Разработчики были убеждены, что в их продукте была коммерческая потребность, и переехали в город Каната в провинции Онтарио (город высоких технологий, иногда это место называют северной Силиконовой долиной Канады) и основали компанию Quantum Software Systems. В 1982 году была выпущена первая версия QNX, работающая на платформе Intel 8088.
Одно из первых применений QNX, получивших широкое распространение, не относилось к встраиваемым системам — она была выбрана для собственного компьютерного проекта Министерства образования Онтарио, Unisys ICON. В те годы QNX использовалось в основном только для «больших» проектов, так как ядро, имеющее размер 44 килобайта, было слишком большим, чтобы работать на однокристальных чипах того времени. В середине 1980-х годов была выпущена QNX2. Система имела завидную репутацию за надёжность и получила широкое распространение для управления промышленными машинами. QNX2 и сейчас иногда применяется в ответственных системах.
В середине 1990-х в Quantum поняли, что на рынке быстро завоёвывает популярность POSIX, и решили переписать ядро, чтобы оно было более совместимым на низком уровне. Так появилась QNX4. Она была доступна со встраиваемой графической подсистемой, названной Photon microGUI, и портированной под QNX версией X Window System. Перенесение программ в QNX4 из операционных систем, основанных на Unix, стало намного проще, также были убраны многие из «причуд» более ранних версий. Также, в начале 1990-х компания была переименована в QNX Software Systems (QSS), чтобы избежать путаницы с другими компаниями, в первую очередь с производителем жёстких дисков, имеющим такое же имя.

В конце 1990-х было решено создать операционную систему, соответствующую свежей редакции POSIX и в максимальной степени совместимую с NetBSD и GNU/Linux, в то же время сохранив предсказуемое поведение и микроядерную архитектуру. Результатом этих разработок стала QNX Neutrino, выпущенная в 2001 году. Эта версия поставляется вместе с QNX Momentics Tool Suite, средой разработки программного обеспечения (IDE), основанной на Eclipse IDE, различными утилитами GNU и программным обеспечением, ориентированным на Интернет: веб-браузерами Voyager и Mozilla, а также веб-сервером. В отличие от предшествующих версий, работавших только в PC-совместимых архитектурах, QNX6 легко адаптируется практически к любой аппаратной конфигурации. Кроме того, особое внимание было уделено проработке архитектуры с тем, чтобы её можно было эффективно масштабировать: как «вверх» (добавляя новые сервисы и расширяя функциональность), так и «вниз» (урезая функциональность, чтобы «втиснуться» в ограниченные ресурсы). Иными словами, QNX6 можно установить там, где QNX4 не уместилась бы. Также, в QNX6 все драйверы были приведены к единой модели и все интерфейсы стали открытыми.

 

16. Обзор современных ОС. ОC OS/2.
Операционная система OS/2 стоит особняком: будучи полноправной многозадачной операционной системой со своим оригинальным графическим пользовательским и программным интерфейсами, она сохраняет совместимость с MS-DOS, PC-DOS и Microsoft Windows (начиная с версии WARP 3.0).

Графический интерфейс
Фирма IBM вместе с операционной системой OS/2 выпустила свой вариант графического интерфейса пользователя (GUI - Graphics User Interface) - Presentation Manager.
Система OS/2 имеет развитый объектно-ориентированный программный интерфейс. Все графические и программные примитивы представляются в ней в виде объектов (память, дисплей, принтер, папка, звуковая карта, дисковод

 Файловая система
Операционная система OS/2, кроме того, поддерживает свою файловую систему - HPFS (High Performance File System - высокопроизводительная файловая система), характеризующуюся хранением имен файлов и каталогов в виде B-дерева. Эта файловая система оптимизирована для мультизадачной среды и ускоряет одновременную работу программ с файлами, расположенными на дисках большего объема. Используя виртуальную память на диске, программа может адресовать до 1Гб памяти.

Многозадачность
В ОС OS/2 реализована возможность запуска двух или более программ одновременно, а планировщик задач определяет, какой из этих задач предоставить время процессора.
Многозадачная и многопоточная архитектура ОС OS/2 обеспечивает прочную платформу сетевым клиентам. OS/2 поддерживает прикладные программы отдельно от функций сети, таким образом, возникновение проблемы с программным обеспечением в одной области памяти не ведет к зависанию всей операционной системы и прерыванию работы. Это дает ОС OS/2 значительное преимущество перед Windows 3.1 и Windows for Workgroups 3.11. Так как эти продукты не поддерживают технологию Intel Virtual Machine Technology, которая надежно управляет прикладными программами.

Сетевые возможности
Операционная система OS/2 поддерживает полный набор протоколов для работы, как в локальной сети, так и в глобальной сети Internet. Это такие протоколы так: NetBIOS, IPX/SPX, TCP/IP и др.

Совместимость
ОС OS/2 позволяет запускать MS-DOS и Windows программы, посредством "блока

Память: 4Мб (8Мб)
Процессор: 80386 (80486) или совместимый
Винчестер: 80Мб (150Мб)

 

18. Архитектура ОС.
Наиболее общим подходом к структурированию ОС является разбиение на две группы:
Ядро – модули, выполняющие основные функции ОС
Модули вспомогательных функций
Модули ядра выполняют базовые задачи ОС, реализуют внутрисистемные задачи организации вычислительного процесса. Эти функции недоступны для приложений.
Вспомогательные модули оформляются в виде приложения программы реализующие отдельные задачи по управлению компьютером обрабатывающие программы (Paint, WordPad).Программы предоставляющие пользователю услуги Все эти приложения являются транзитными – загружаются в ОП только на время выполнения своей функции.
1) Первые операционные системы были монолитными, те есть неструктурированными. Они работали без разделения на привилегированный и непривилегированный код и допускали произвольные вызовы процедур, операции чтения и записи. Операционные системы, построенные по такому принципу также называют макроядерными. Такая стр-ра у большинства Unix-подобных ос. Обычно монолитное ядро реализуется как единый процесс, все элементы которого используют одно и то же адресное пространство.
2)многослойная(многоуровневая) разраб Дейкстра в 68 г
Пользовательский Ур
Уровень управленя ВВ
Уровень драйверов
Уровень упр памятью
Планир-е задач и процессов
Аппаратный уровень HARDWare
3)Виртуальные машины


польз

польз

польз

msDOS

Windows

Unix

Вирт hard

Вирт hard

Вирт hard

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

hardware

4) микроядерная архитектура
+ огромный плюс-высокая степень модульности, что позволяет легко добавлять и модифицировать модули ос
+повышае6тся надёжность функц-я ос за счёт модульности
+драйвера нах-ся не в ядре
Микроядро обеспеч взаимодействие между программами, планирует исп-е процессора, занимается первичной обработкой прерываний, также обраб-ся операции ввода-вывода и осущ-ся  базовое упр-е памятью в ядре.
5)гибридные
Исп-е преимуществ разл архитектур. WindowsNT имеет микроядерную арх-ру с Эл-ми монолитного ядра. Ядро linux- монолитная с Эл-ми микроядра.

 

19. Режим ядра и пользовательский режим.
Если поток работает в кольце 0, говорят, что он выпол­няется в режиме ядра. Если поток выполняется в кольце 3, говорят, что он работает в пользовательском режиме. Низкоуровневый код ОС  действует в режиме ядра, тогда как пользовательские при­ложения выполняются в основном в пользовательском режиме.
Прикладной поток может переключаться из польз режима в режим ядра при вызове неα API-функций, α требуют бо­лее высокого ур привилегий, например, связанных с доступом к файлам или с вып-м функций, ориентированных на графические операции. В действительности неαые пользовательские потоки могут работать в режиме ядра даже больше времени, чем в пользовательском режиме.
Но как только завершается выполнение части кода, относ к режиму ядра, польз поток автоматически переключается обратно в пользовательский режим. Такой подход лишает возможности писать код, пред­назначенный для работы в режиме ядра, программист может только вызывать вып-ся в режиме ядра системные ф-и. При работе с Windows NT можно определить, когда поток вып-ся в польз режиме, а когда - в режиме ядра.
Режим ядра: Аппаратное обеспечение->HAL уровень аппаратной абстракции->Драйвера->ФС  >Системные службы

Режим пользователя: Системный интерфейс->Подсистемы Win32, POSIX, OS/2 ->                                                                                            Приложение пользователя.

 

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

  1. Привилегированный режим ядра
  2. Пользовательский режим

Режим ядра: Аппаратное обеспечение->HAL уровень аппаратной абстракции->Драйвера->ФС  >Системные службы
драйверы устройств работают в режиме ядра. Во-первых, неправильно работающий драйвер устройства может нарушить работу всей системы, так как он имеет доступ и ко всему сист коду, и ко всей памяти. Во-вторых, прикладной программист может получить доступ к защищенным ресурсам, написав драйвер псевдоустр-ва.
Сервисы
внутренний сервис – ф-я или подпрограмма, α может вызываться только из кода, выполняемого в режиме ядра. Эти функции от­носятся к низкоуровневой части кода Windows: к исполн-й системе Windows NT, к ядру или к слою абстрагир от аппаратуры.
Системные процессы.- это особые процессы, обслуживающие ос. В системе Windows постоянно задействованы следующие (все, кроме system, вып-ся в польз режиме):
-процесс idle, α состоит из одного потока, управляющего временем простоя процессора;
-процесс system - спец про­цесс, вып только в режиме ядра. Его потоки -системными потоками (system threads); состоит из системных потоков (system threads), являющих­ся потоками режима ядра. Windows и многие драйверы устройств создают потоки прoцecca system для различных целей. Например, диспетчер памяти формирует системные потоки для решения задач управления виртуальной памятью, диспет­чер кэша использует системные потоки для управления кэш-памятью.
-процесс Session Manager (диспетчер сеансов) - SMSS.EXE; создание переменных окружения системы; задание имен устройств MS DOS; загрузка той части подсистемы Win32, α относится к режиму ядра; запуск процесса регистрации в систе­ме WinLogon.
-подсистема Win32 - CSRSS.EXE;
-процесс регистрации в системе — WinLogon. упр входом польз в систему и выходом из нее. Вызывается Ctrl+Alt+Delete. отвечает за загрузку оболочки Windows (Explorer).
Исполнительная система Windows
Сервисы исп системы Windows составляют низкоуровневую часть Windows NT режима ядра, включенную в файл NTOSKRNL.EXE. Их делят на две группы: исполнительную систему (executive), относящуюся к верхнему уровню, и ядро (kernel). Ядро - это самый нижний уровень ОС   реализующий наиболее фундаментальные сервисы:планирование потоков;обработку исключений;обработку прерываний;синхронизацию процессоров в многопроцессорной системе; создание объектов ядра.
составляющие исполнительной системы:
дисп-р процессов и потоков создает и завершает проц и пот, исп-я сервисы низкоур ядра;
диспетчер виртуальной памяти реализует механизм виртуальной памяти;
диспетчер вв/выв реализует аппаратно-независ вв/выв и взаимод с драйверами устройств;
диспетчер КЭШа управляет кэшированием диска;
диспетчер объектов создает объекты исп системы Windows и управляет ими. Windows использует объекты для представления разнообрресурсов, таких как процессы и потоки;
библиотеки времени выполнения содержат такие ф-и, как обработки строк и арифм .
Уровень абстрагирования от аппаратуры (HAL)
- это библиотека режима ядра (HAL.DLL), α реализует низкоуринтерфейс с аппаратурой. Компоненты Windows и драйверы устройств от других компаний взаимодействуют с аппаратурой посредством HAL. Существует много версий HAL под разл аппаратые платформы. Подходящий уровень выбирается в процессе устан Windows.

 

21. Многослойная структура ОС.

разраб Дейкстра в 68 г

Пользовательский Ур
Уровень управленя ВВ
Уровень драйверов
Уровень упр памятью
Планир-е задач и процессов
Аппаратный уровень HARDWare
Ядро может состоять из следующих слоев.
·        Средства аппаратной поддержки ОС.
·        Машинно-зависимые компоненты ОС. Этот слой образуют программные модули, в αых отражается специфика аппаратной платформы компьютера. В идеале этот слой полностью экранирует вышележащие слои ядра от особенностей аппаратуры. Это позволяет разрабатывать вышележащие слои на основе машинно-независимых модулей, существующих в единственном экземпляре для всех типов аппаратных платформ, поддерживаемых данной ОС. Примером экранирующего слоя может служить слой HAL ОС  Windows NT.
·        Базовые механизмы ядра. Этот слой выполняет наиболее примитивные операции ядра, такие как программное переключение контекстов процессов, диспетчеризацию прерываний, перемещение страниц из памяти на диск и обратно и т. п. Модули данного слоя не принимают решений о распределении ресурсов — они только отрабатывают принятые «наверху» решения, что и дает повод называть их исполнительными механизмами для модулей верхних слоев.
·        Менеджеры ресурсов. Этот слой состоит из функциональных модулей, реализующих стратегические задачи по управлению основными ресурсами вычислительной системы. Обычно на данном слое работают менеджеры (диспетчеры) процессов, ввода-вывода, ФС и оперативной памяти. Внутри слоя менеджеров существуют тесные взаимные связи, отражающие тот факт, что для выполнения процессу нужен доступ одновременно к нескольким ресурсам — процессору, области памяти, возможно, к определенному файлу или устройству ввода-вывода.
·        Интерфейс системных вызовов. Этот слой является самым верхним слоем ядра и взаимодействует непосредственно с приложениями и системными утилитами, образуя прикладной программный интерфейс ОС  

 

22. Архитектура Windows NT.

Режим ядра: Аппаратное обеспечение->HAL уровень аппаратной абстракции->Драйвера->ФС  >Системные службы
Режим пользователя: Системный интерфейс->Подсистемы Win32, POSIX, OS/2 ->                                                                                           Приложение пользователя.

Сервисы
Сервис АРI – ф-я или подпрограмма API, α реализует неα действие (сервис) ос, такое как создание файла или работа с графикой 
системный сервис - недокументир ф-я, α может выз-ся из польз режима. Эти ф-и часто исп-ся ф-ми Win32 API для предост низкоур сервисов

внутренний сервис – ф-я или подпрограмма, α может выз-ся только из кода, вып-го в режиме ядра. Эти ф-и относ к низкоур части кода Windows: к исполнитй системе Windows NT, к ядру или к слою абстрагир от аппаратуры (HAL).
Системные процессы.
-  - это особые процессы, обслуж-е ос. В системе Windows постоянно задействованы следующие (все, кроме system, вып-ся в польз режиме):
-процесс idle, α состоит из одного потока, управляющего временем простоя процессора;
-процесс system - спец про­цесс, вып только в режиме ядра. Его потоки -системными потоками; состоит из системных потоков, являющих­ся потоками режима ядра. Windows и многие драйверы устройств создают потоки прoцecca system для различных целей. Например, диспетчер памяти формирует системные потоки для решения задач управления виртуальной памятью, диспет­чер кэша использует системные потоки для управления кэш-памятью.
-процесс Session Manager (диспетчер сеансов) - SMSS.EXE; создание переменных окружения системы; задание имен устройств MS DOS; загрузка части подсистемы Win32, α относится к режиму ядра; запуск процесса регистрации в систе­ме WinLogon.
-подсистема Win32 - CSRSS.EXE;
-процесс регистрации в системе — WinLogon (winlogon.exe). упрт входом польз-й в сист и выходом из нее.Выз-ся Ctrl+Alt+Delete.отвечает за загрузку оболочки Windows (Explorer).
Подсистема Win32
Подсистема Win32  является разновидностью подсистемы среды. Другие подсистемы среды Windows включают POSIX и OS/2.. POSIX является сокращением термина «переносимая ОС па базе UNIX» и реализует ограниченную поддержку ОС UNIX.
 Назначение - служить интерфейсом между пользоват приложениями и соотв частью исп системы Windows. Каждая подсистема имеет свои функц-е возможности на базе единой исп системы Windows. Любой вып-й файл неразрывно связан с одной из этих подсистем. Подсистема Win32 содержит Win32 API в виде набора DLL, таких как kernel32.dll, GDI32. dll user32.dll. В Windows NT перенесена часть подсистемы Win32 из польз режима в режим ядра. В частности, драйвер устройства режима ядра WIN32K.SYS, α управляет отображением окон, выводом на экран, вводом данных с клавиатуры или при помощи мыши и передачей сообщений. Он включает также библиотеку интерфейсов графич устройств (GDL.dll), исп-ю для создания графич объектов и текста.
Вызов Win32 API-функций
Когда приложе вызывает API-ф-ю из подсист Win32, может произойти одно из событий:

Исполнительная система Windows
Сервисы исп системы Windows составляют низкоуровневую часть Windows NT режима ядра, включенную в файл NTOSKRNL.EXE. Их делят на две группы: исполнительную систему, отн-ся к верхнему уровню, и ядро. Ядро - это самый нижний уровень ОС   реализ-й наиболее фундам-е сервисы: планир-е потоков;обработку исключений;обработку прерываний; синхр-ю процессоров в многопроц системе; создание объектов ядра.
составляющие исполнительной системы:
дисп-р процессов и потоков создает и завершает проц и пот, исп сервисы низкоур ядра;
диспетчер виртуальной памяти реализует механизм виртуальной памяти;
диспетчер вв/выв реализует аппаратно-независ вв/выв и взаимод с драйверами устр-в;
диспетчер КЭШа управляет кэшированием диска;
диспетчер объектов создает объекты исп системы Windows и управляет ими. Windows использует объекты для представления разнообрресурсов, таких как процессы и потоки;
библиотеки времени выполнения содержат такие ф-и, как обработки строк и арифм .
Уровень абстрагирования от аппаратуры (HAL)

- это библиотека режима ядра (HAL.DLL), α реализует низкоуринтерфейс с аппаратурой. Компоненты Windows и драйверы устройств от других компаний взаимодействуют с аппаратурой посредством HAL. Существует много версий HAL под разл аппаратые платформы. Подходящий уровень выбирается в процессе устан Windows.

 

23. Объекты и их дескрипторы.

Одной из характеристик любого объекта является дескриптор, αый ис­пользуется для идентификации этого объекта. Каждый API функций, создающей объект, возвращает вызывающему процессу результат, называемый дескриптором. Это манипулятор может использоваться для выполнения операций с объектом. Дескриптор специфичен для процесса, создавшего этот объект. Он не может быть просто передан другому процессу и использован им. Однако при определённых обстоятельствах дескриптор может быть дублирован и передан другому процессору защищенным способом.  В общем, дескриптор объекта является зависимым от процесса. Это означает, что он действует только в пределах данного процесса. Неαые идентификаторы, такие как ID процесса, наоборот, являются идентификаторами системного уровня. Другими словами, область их действия - все процессы системы. Дескриптор(описатель) процесса - неα число, характеризующее процесс. Он может содержать: идентификатор процесса, состояние процесса и другую системную инф-ю.

 

107.Файловая система FAT-32.
С выходом второй версии операционной системы Windows 95 была представ­лена файловая система FAT-32 со своими 28-разрядными адресами. При этом вер­сия системы MS-DOS, лежащая в основе Windows 95, была адаптирована для под­держки FAT-32. Теоретически в этой системе разделы могли быть по 228 x 215 байт, но фактически размер разделов ограничен 2 Тбайт (2048 Гбайт), так как внут­ренне система учитывает размеры разделов в 512-байтовых секторах с помощью 32-разрядных чисел, а 232 х 29 байт равно 2 Тбайт. Помимо поддержки дисков большего размера, файловая система FAT-32 об­ладает двумя другими преимуществами перед системой FAT-16. Во-первых, 8-ги­габайтный диск, использующий FAT-32, может состоять из всего одного раздела. При Использовании FAT-16 он должен был содержать четыре раздела, что пред­ставлялось пользователям системы Windows как логические устройства С:, D:, Е: и F:. Какой файл на каком устройстве располагать, решать пользователю.
Другое преимущество FAT-32 перед FAT-16 заключается в том, что для диско­вого раздела заданного размера могут использоваться блоки меньшего размера. Например, для 2-гигабайтного дискового раздела система FAT-16 должна пользоваться 32-килобайтньми блоками, в противном случае при наличии всего 64 К доступных дисковых адресов она не смогла бы покрыть весь раздел. В то же время система FAT-32 для такого же дискового раздела может использовать, например, блоки размером 4 Кбайт. Преимущество блоков меньшего размера заключается в том, что длина большинства файлов менее 32 Кбайт. При размере блока в 32 Кбайт даже 10-байтовый файл будет занимать на диске 32 Кбайт. При 8-килобайтных файлах и 4-килобайтных блоках потерь дискового пространства не будет, но платой за это будет то, что для хра­нения таблицы FAT потребуется значительно больше оперативной памяти. При 4-килобайтных блоках 2-гигабайтный раздел будет состоять из 512 К блоков, по­этому таблица FAT должна состоять из 512 К элементов (занимая 2 Мбайт ОЗУ). Файловая система MS-DOS использует FAT для учета свободных блоков. Любой незанятый блок помечается специальным кодом. Когда системе MS-DOS требуется новый блок на диске, она ищет этот код в таблице FAT. Таким образом, битовый массив или список свободных блоков не нужны.

 

111. Физическая организация файловой системы NTFS
В отличие от разделов FAT и s5/ufs все пространство тома1 NTFS представляет собой либо файл, либо часть файла. Основой структуры тома NTFS является главная таблица файлов (Master File Table, MFT), которая содержит по крайней мере одну запись для каждого файла тома, включая одну запись для самой себя. Каждая запись MFT имеет фиксированную длину, зависящую от объема диска, — 1,2 или 4 Кбайт. Для большинства дисков, используемых сегодня, размер записи MFT равен 2 Кбайт, который мы далее будет считать размером записи по умолчанию. Все файлы на томе NTFS идентифицируются номером файла, который определяется позицией файла в MFT.
Каждый файл и каталог на томе NTFS состоит из набора атрибутов. Важно отметить, что имя файла и его данные также рассматриваются как атрибуты файла, то есть в трактовке NTFS кроме атрибутов у файла нет никаких других компонентов. Каждый атрибут файла NTFS состоит из полей: тип атрибута, длина атрибута, значение атрибута и, возможно, имя атрибута. Тип атрибута, длина и имя образуют заголовок атрибута. Имеется системный набор атрибутов, определяемых структурой тома NTFS. Системные атрибуты имеют фиксированные имена и коды их типа, а также определенный формат. Могут применяться также атрибуты, определяемые пользователями. Существуют два способа хранения атрибутов файла — резидентное хранение в записях таблицы MFT и нерезидентное хранение вне ее, во внешних отрезках. Файлы NTFS в зависимости от способа размещения делятся на небольшие, большие, очень большие и сверхбольшие.

 

24. Загрузка ОС Windows NT.
1)Подача команды процессору загрузки BIOS
2)BIOS тестирует устройства и запускает программу из главной загрузочн записи MBR
3)MBR загружает BR (загрузочный блок) активного диска.
4)просматривается корневой каталог и ищется файл ntldr (загрузщик)Если файл удаётся найти, ему передаётся управление.
5)Программа ntldr считывает файл Boot.ini (хранит инф. о всех версиях hal.dll и ntosrenl.exe) botvid.dll –первоначальный видеодрайвер, hal.dll-реестр
ntldr считывает данные из реестра чтобы найти драйверы необходимые для завершения загрузки
Загружается ядро ntoskernl.exe(инициализация системы)
6)Управление передаётся ntoskernl.exe. Вызываются компоненты исполняющей системы (менеджер объектов, менеджер памяти, менеджер Plug-and-play)
Последний этап загрузки – загрузка сеансового менеджера smss.exe
7)Загрузка подсистемы окружения Wind32 (csrss.exe)
smss.exe считывает реестр и узнаёт что он ещё должен запустить
8)Запуск процесса регистрации winlogon и  менеджера аутентификации lsass.exe
9)Запускается родительский процесс  всех служебных процессов (services.exe)
10)загружается рабочий стол explorer.exe

 

25. Процессы и потоки в ОС.

Приложение (application) Windows - это совокупность исполняемых прог­рамм и вспомогательных файлов. Например, Microsoft Word представляет собой одно из популярных приложений Windows. процессом  называется исполняемый экзем­пляр (running instance) приложения и комплект ресурсов, отводящийся данному исполняемому приложению.Поток - внутр составляющая процесса, αой ОС  выделяет процессорное время для вып-я кода. Именно потоки исполняют программный код, а не процессы. Каждый процесс должен иметь как минимум 1 поток. Конечно, основное назначение потоков - дать процессу возм-ть поддерживать несколько ветвей управления, т е выполнять больше действий 1временно. В многопроцессорной конфигурации Windows NT (но не Windows 9x) может распределять потоки по процессорам, реально обесп-я параллельную обработку. В 1процессорной конфигурации процессор должен выделять кванты времени каждому исполняемому в данный момент потоку.Если быть более точным, процессом  называется исполняемый экзем­пляр приложения и комплект ресурсов, отводящийся данному исполняемому приложению. Процесс- выполняемая программа, включающая значение счётчика команд, регистров процессора и другой инф-и
Виды многозадачности:
1)не вытесняющая(кооперативная) – приложение само опр-т, когда нужно переключиться на вып-е другого приложения
2)вытесняющая – эти вопросы решает ос. ОС следит за тем, в какой момент приостановить 1 процесс и дать возм-ть вып-ся другому.
Контекст процесса- стр-ра данных,α содержит инф-ю о процессе: регистровый контекст(прогр счётчик и содержимое регистров проц-ра); системный контекст (состояние процесса, данные о планир и исп-и процесса, приоритет, свдения об устройствах ВВ/выв, устр, α исп-ся в данный момент процессом, таблица открытых файлов); контекст пользователя(данные, α созд п-лем)
Операции с процессами:создание:наследование или создание заново
а)все процессы при включении системы загружаются в память
б)процессы могут создаваться и удаляться во время работы системы
Иерархия процессов
В неα системах родительский и дочерний процессы остаются связанными Между собой опред образом. Дочерний  процесс также может,  в свою оче­редь, создавать процессы, формируя иерархию процессов. у процесса может быть лишь один родитель и сколько угодно детей.В UNIX процесс, все его "дети и дальнейшие потомки" образуют группу пpo-ирссов. Сигнал, посылаемый пользователем с клавиатуры, доставляется всем членам группы, взаимодействующим с клавиатурой в данный момент (обычно это все активные процессы, созданные в текущем окне).  Каждый может перехватить сигнал, игнорировать его или выполнить другое действие, предусмот­ренное по умолчанию.

Рассмотрим в качестве ещё одного примера иерархии процессов инициализацию UNIX при запуске. В образе загрузки присутствует специальный процесс init. При запуске этот процесс считывает файл, в котором находится инф-я о количестве терминалов. Затем процесс разветвляется т.о., чтобы каж­дому терминалу соответствовал один процесс. Процессы ждут, пока какой-нибудь пользователь не войдет в систему. Если пароль правильный, процесс входа в систему запускает оболочку для обработки команд пользователя,α, в  свою очередь,единому дереву, начинающемуся с процесса mil. Напротив, в Windows не сушествует понятия иерархии процессов, и все процессы равноправны. Единственное, в чем проявляется что-то вроде иерархии процессов — создание процесса, в кото­ром родительский процесс получает специальный маркер (так называемый деск­риптор), позволяющий контролировать дочерний процесс. Но маркер можно пе­редать другому процессу, нарушая иерархию. В UNIX это невозможно

 

26. Многопоточность ОС.

Многопоточность – способность ОС поддерживать в рамках 1 процесса несколько потоков. В многопоточной среде процесс определяется как структурная единица распределения ресурсов и защиты. Для потоков одного процесса существует единое виртуальное адресное пространство. Врамках одного процесса может находиться один или несколько потоков. Каждый из αых обладает характеристиками:Состояние потока; Сохраняемый контекст;Стек выполнения; Статическая память выделяемая потоку для локальных перемнных. К преимуществам исп-я потоков можно отнести более быстрое их создание по сравнению с процессами, переключение с 1 потока на другой, возм-ть исп-я одного адресного пространства.
Планирование Когда компьютер работает в многозадачном режиме, на нем могут быть активны несколько процессов, пытающихся 1временно получить доступ к процессору. Эта ситуация возникает при наличии 2 и более процессов в состоянии готовности. Если доступен только 1 процессор, необходимо выбирать между процессами. Отвечающая за это часть ОС называется планировщиком, а используемый алгоритм — алгоритмом планирования.
Категории алгоритмов планирования В различных средах требуются различные алгоритмы планирования. 1)В системах пакетной обработки нет пользователей, сидящих за терминалами и ожидающих ответа. В таких системах приемлемы алгоритмы без переключений или с переключениями, но с большим временем, отводимым каждому процессу. Такой метод уменьшает количество переключений между процессами и улучшает эффективность.2)В интерактивных системах необходимы алгоритмы планирования с переключениями, чтобы предотвратить захват процессора одним процессом. 3)В системах с ограничениями реального времени приоритетность, как это ни стран­но, не всегда обязательна, поскольку процессы знают, что их время ограничено
Предназначение планирования - повышение эффективности исп-я ресурсов ЭВМ.
Задачи планирования:
Все системы
Справедливость — предост каждому процессу справедлй доли процессорн вермени
Принудительное применение политики — контроль за вып-ем принятой политики
Баланс — поддержка занятости всех частей системы
Системы пакетной обработки данных
Пропускная способность — максимальное количество задач в час
Оборотное время — минимизация времени, затрач на ожидание обслуживания
и обработку задачи
интерактивные системы
Использование процессора — поддержка постоянной занятости процессора
Время отклика — быстрая реакция на запросы
Соразмерность — вып-е пожеланий пользователя
Системы реального времени
Окончание работы к сроку — предотвращение потери данных
Предсказуемость — предотвращ деградации качества в мультимедийных системах
Алгоритмы планирования:
1.FIFO(очередь) циклический –конец замыкается на 1м Эл-те
2. LIFO-стек(при пакетной обработке заданий)
3. По сроку завершения(в системах реального времени) – задание должно вып-ся в чётко назнач срок
4.Кратчайшая задача – первая SJF
5.Наименьшего оставшегося времени выполнения SRT
6.Приоритетный.Трехуровневое планирование
Приоритет-число,α хар-т степень привелегированности при исп-и ресурсов
Относительные приоритеты-если задача вып-ся то она вып-ся до конца

Абс-при поступлении задачи если у неё приоритет выше, исп-я задача прерывается

 

27. Дескрипторы и идентификаторы процессов.
Дескриптор(описатель) процесса-неα число, характеризующее процесс. Он может содержать: идентификатор процесса, состояние процесса и другую системную инф-ю.
Одной из характеристик любого объекта является дескриптор, αый ис­пользуется для идентификации этого объекта.
Каждый API функций, создающей объект, возвращает вызывающему процессу результат, называемый дескриптором. Это манипулятор может использоваться для выполнения операций с объектом. Дескриптор специфичен для процесса, создавшего это объект. Он не может быть просто передан другому процессу и использован им. Однако при определённых обстоятельствах дескриптор может быть дублирован и передан другому процессору защищенным способом. 
Идентификатор – уникальное число определяющее процесс (поток). 
Т.о., между дескриптором и идентификатором процесса (или потока) существуют следующие основные различия:

Следует подчеркнуть, что, хотя дескриптор является зависимым от процесса, один процесс может иметь дескриптор другого процесса. Иными словами, если процесс А имеет дескриптор процесса В, то этот дескриптор идентифицирует про­цесс В, но действует только в процессе А. Он может использоваться в процессе А для вызова неαых API-функций, αые имеют отношение к процессу В. (Однако память процесса В остается недоступной для процесса А.)

 

28.Идентификация процесса.
Следующие четыре объекта часто встречаются в программировании API, свя­занном с процессами: идентификатор процесса; дескриптор процесса; полное имя загрузочного файла; дескриптор модуля загрузочного файла процесса.
Наиболее значимым здесь является вопрос о том, можно ли, имея один из этих объектов, получить остальные. Ответ на этот вопрос схематично проиллю­стрирован ниже на рисунке.  Стрелки на рисунке указывают на существующие воз­можности.

29.Псевдодескрипторы процессов
Обратимся еще к одному вопросу, касающемуся темы о дескрипторах и идентификаторах процессов. Функция GetcurrentProcess возвращает псевдодескриптор текущего процесса:
HANDLE  GetCurrentProcess(VOID)
Псевдодескриптор (pseudohandle) представляет собой упрощенный вариант дескриптора. По определению, псевдодескриптор - это зависимое от процесса число, αое служит идентификатором процесса и может использоваться в вызовах тех API-функций, αым требуемся дескриптор процесса.
Хотя назначение псевдодескрипторов и обычных дескрипторов почти одно и то же, у них все же есть неαые существенные различия. Псевдодескрипторы не могут наследоваться порожденными процессами, как настоящие дескрипторы (real handler). К тому же псевдодескрипторы ссылаются только на текущий процесс, а настоящие дескрипторы могут ссылаться и на внешний (foreign).
Windows предоставляет возможность получения настоящего дескриптора по псевдодескриптору при помощи API-функции DuplicateHandle.  Она определяется как
BOOL DuplicateHandle(
HANDLE hSourceProcessHandle,           // Дескриптор процесса-источника.
HANDLE hSourceHandle,                       // Копируемый дескриптор.
HANDLE hTargetProcessHandle,           // Дескриптор процесса-приемника.
LPHANDLE IpTargetHandle,                  // Указатель на копию дескриптора.
DWORD dwDesiredAccess,                     // Доступ к копии дескриптора.
BOOL bInheritHandle,                             // Флаг наследования дескриптора.
DWORD dwOptions   )                              // Необязательные опции.

 

30.Состояния потоков.
В общем случае существует три состояния потока:

В случае с WindowsNT состояний 7-

WinNT:GetModuleInformation Win9x:ToolHelp

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

 При создании процесса он создаётся в состоянии «не исп». ОС выбирает след процесс для вып, если есть сигнал готовности.
  

31.Дескрипторы  и  идентификаторы  потоков.
 Дескриптор специфичен для процесса, создавшего это объект. Он не может быть просто передан другому процессу и использован им. Однако при определённых обстоятельствах дескриптор может быть дублирован и передан другому процессору защищенным способом. 
Идентификатор – уникальное число определяющее процесс (поток). 
Т.о., между дескриптором и идентификатором процесса (или потока) существуют следующие основные различия:

Следует подчеркнуть, что, хотя дескриптор является зависимым от процесса, один процесс может иметь дескриптор другого процесса. Иными словами, если процесс А имеет дескриптор процесса В, то этот дескриптор идентифицирует про­цесс В, но действует только в процессе А. Он может использоваться в процессе А для вызова неαых API-функций, αые имеют отношение к процессу В. (Однако память процесса В остается недоступной для процесса А.)
Тема о дескрипторах и идентификаторах потоков аналогична теме об аналогичных характеристиках процессов.
функция CreateProcess возвращает идентификатор  и деск­риптор первого (и только первого) потока, выполняющегося во вновь созданном процессе. Функция CreateThread тоже возвращает идентификатор потока, но область действия αого - вся система.
Поток может использовать функцию GetCurrentThreadId, чтобы получить собственный ID. Функция GetWindowThreadProcessId возвращает идентификатор того потока, α создал конкретное окно (как иден­тификатор процесса, αому принадлежит данный поток).
Согласно документации Win32 API не предлагает способа для по­лучения дескриптора потока по его идентификатору. Если бы дескрипторы можно было находить, т.о., то процесс, αому принадлежат по­токи, завершался бы неудачей, так как другой процесс смог бы выполнять не­санкционированные операции с его потоками, например, приостанавливать поток, возобновлять его действие, изменять приоритет или завершать его работу. Запрашивать дескриптор следует у процесса, создавшего данный поток, или у самого потока.
Наконец, поток может вызывать функцию GetCurrentThread для получе­ния собственного псевдодескриптора. Как и в случае псевдодескрипторов процес­сов, псевдодескриптор потока может использоваться только для вызова процесса и не может наследоваться.  Можно использовать функцию DuplicateHandle для получения настоящего дескриптора потока по его псевдодескриптору так же, как это делается  в процессах.

 

32.Приоритет потоков.
В 16-разрядной Windows существовал только 1 поток, был реализован метод кооперативной многозадач­ности( каждое приложение само отвечает за высвоб-ие единственного системного потока, после чего могут вып-ся другие приложения). Если прога выполняла задачи, треб значит времени, все другие загруженные прилож должны были ждать.
Win32 значительно отличается от Win16. 1)она является многопоточной, что определяет ее многозадачность. 2) в ней реализована модель вытесняющей многозадачности, в α ОС  решает, когда каждый поток получает процессорное время, выделяемое квантами времени, и сколько именно времени выд-ся. Временной интервал в Windows наз-ся квантом. Продолж-ть кванта времени зависит от аппаратуры и может фактически меняться от потока к потоку.
Каждый поток в системе имеет уровень приоритета, α предст собой число от 0 до 31.

Диапазон приоритета от 1 до 15 - диапазон динамического приоритета (dynamic priority),
 а диапазон от 16 до 31 - как диапазон приоритета реального времени (realtime priority).
В Windows NT приоритет потока, нах-ся в динамическом диапазоне, может временно повышаться ОС в разл моменты. Соответственно, нижний уровень приоритета потока (установленный программистом с помощью API функции) называется уровнем его базового приоритета (base priority). API функция SetProcessPriorityBoost может исп-ся для разрешения или запрещения временных изменений приоритета (priority boosting).она не поддерживается в Windows 9х. Бывают случаи, когда кванты времени, выделяемые потоку, временно увеличиваются. Стремясь плавно выполнять операции, Windows будет повышать приоритет потока или увеличивать прод-ть его кванта времени при условиях:

если поток совсем не получает процессорного времени.

 

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

Механизм планирования предназначен для увеличения эффективности использования.
Существует два типа планир-я:

Существует два класса алгоритмов:

Корпоративный – поток выполняется до тех пор пока он по собственной инициативе не передаст управление другому потоку.
Вытесняющий – решение о прекращении текущего потока принимает сама ОС.
Алгоритмы планирования:
1.FIFO(очередь) циклический –конец замыкается на 1м Эл-те
2. LIFO-стек(при пакетной обработке заданий)
3. По сроку завершения(в системах реального времени) – задание должно вып-ся в чётко назначенный срок
4.Кратчайшая задача – первая SJF
5.Наименьшего оставшегося времени выполнения SRT
6.Приоритетный.Трехуровневое планирование
Приоритет-число,α хар-т степень привелегированности при исп-и ресурсов
Относительные приоритеты-если задача вып-ся то она вып-ся до конца
Абсолютные-при поступлении задачи если у неё приоритет выше, исп-я задача прерывается

 

34.Критерии алгоритмов планирования.
Алгоритмы планирования:
1.FIFO(очередь) циклический –конец замыкается на 1м Эл-те
2. LIFO-стек(при пакетной обработке заданий)
3. По сроку завершения(в системах реального времени) – задание должно вып-ся в чётко назначенный срок
4.Кратчайшая задача – первая SJF
5.Наименьшего оставшегося времени выполнения SRT
6.Приоритетный.Трехуровневое планирование
Приоритет-число,α хар-т степень привелегированности при исп-и ресурсов
Относительные приоритеты-если задача вып-ся то она вып-ся до конца
Абс-при поступлении задачи если у неё приоритет выше, исп-я задача прерывается
Категории алгоритмов планирования
В различных средах требуются различные алгоритмы планирования. 1)В системах пакетной обработки нет пользователей, сидящих за терминалами и ожидающих ответа. В таких системах приемлемы алгоритмы без переключений или с переключениями, но с большим временем, отводимым каждому процессу. Такой метод уменьшает количество переключений между процессами и улучшает эффективность.
2)В интерактивных системах необходимы алгоритмы планирования с переключениями, чтобы предотвратить захват процессора одним процессом.
3)В системах с ограничениями реального времени приоритетность, как это ни стран­но, не всегда обязательна, поскольку процессы знают, что их время ограничено
Все системы
Справедливость — предоставление каждому процессу справедливой доли процессорного
Принудительное применение политики — контроль за выполнением принятой политики
Баланс — поддержка занятости всех частей системы
Системы пакетной обработки данных
Пропускная способность — максимальное количество задач в час
Оборотное время — минимизация времени, затрачиваемого на ожидание обслуживания
и обработку задачи
интерактивные системы
Использование процессора — поддержка постоянной занятости процессора
Время отклика — быстрая реакция на запросы Соразмерность — выполнение пожеланий пользователя
Системы реального времени
Окончание работы к сроку — предотвращение потери данных
Предсказуемость — предотвращение деградации качества в мультимедийных системах
Предназначение планирования - повышение эффективности использования ресурсов ЭВМ.
пропускная способность - максимальное кол-во задач выполненных за единицу времени.
Оборотное время – статистически усредненное время от момента получения задачи да её выполнения. Оно характеризует время которое среднестатистический пользователь должен ждать получения решения задачи
Время запуска задачи - время отклика системы
Удобство работы пользователя – время реакции минимальны

Реактивность системы – способность выдерживать заранее заданные интервалы времени между запуском приложения и получением результата.

 

29. Алгоритм планирования FIFO

Алгоритм без переключений «первым пришел — первым обслужен» является самым простым. Процессам предоставляется доступ к процессору в том порядке, в α они его запрашивают. Чаще всего формируется единая очередь ждущих процессов. Как только появляется 1я задача, она немедленно запускается и работает, сколько необходимо. Остальные задачи ставятся в конец очереди. Когда текущий процесс блокир-ся, запуска-ется следующий в очереди, когда блокировка снимается, процесс - в конец очереди.
Преимущество:его легко понять и столь же легко программировать. В этом алгоритме все процессы в состоянии готовности контролируются 1 связным списком. Чтобы выбрать процесс для запуска, нужно всего лишь взять 1й элемент списка и удалить его. Появление нового процесса приводит к помещению его в конец списка
Недостаток: Представьте себе, чт.е. один процесс, ограниченный возможностями процессора, который каждый раз работает ровно 1 с, и много процессов, ограниченных ВОЗМОЖНОСТЯМИ устр-в ввода-вывода, каждый из α очень в небольшой мере исп-т процессор, но должен выполнить 1000 обращений к диску. Процесс, огранич-й возм-ми процессора, запускается, работает 1 с, затем читает блок с диска. Теперь запускаются все процессы вв-вывода и считывают инф-ю с диска. Когда процесс, ограниченный возможностями процессора, получает свой блок с диска, он запускается еще на 1 с, а за ним все процессы, ограниченные возмо-ми устройств вв-вывода.

Конечный результат: каждый из процессов, ограниченных возм-ми устр-в вв-вывода, считывает 1 блок данных в секунду, и им потребуется по 1000 с, чтобы закончить работу. Если алгоритм планирования будет прерывать процесс, ограниченный возм-ми процессора, раз в 10 мс, процессы, огранич-е возм-ми устр-в ввода-вывода, закончат за 10 с вместо 1000 с и не очень замедлят работу процесса, огранич-го возм-ми процессора.

 

37.Алгоритм планирования Кратчайшая задача – первая
алгоритм без переключений для систем пакетной обработки, предполагающий, что временные отрезки работы известны заранее. Например, работники страховой компании могут довольно точно предсказать, сколько вре­мени займет обработка пакета из 1000 исков, поскольку они делают это каждый день. Если в очереди есть несколько одинаково важных задач, планировщик выбирает первой самую короткую задачу.

Алгоритм оптимизирует задачу. Рассмотрим, четы­ре процесса со временем выполнения а. Ь, с и iLПервая задача выполняется за время а, вторая — за время а + й и т. д. Среднее оборотное время будет равно (4а + ЗЬ + 2с + '/)/4. Очевидно, что вклад времени а в среднее больше, чем всех остальных интервалов времени, поэтому первой должна выполняться самая корот­кая задача, а последней — самая длинная, вносящая вклад, равный собственному оборотному времени. Точно так же рассматривается система из любого количества задач.

Следует отметить, что эта схема работает лишь в случае одновременного нали­чия задач. В качестве контрпримера можно рассмотреть пять задач. -4. В, С, D и Е, причем первые две доступны стразу же. а три оставшиеся — еще через три минуты. Время выполнения этих задач составляет 2,4,1.1 и 1 мин соответственно. Вначале можно выбрать только А или В, поскольку остальные недоступны. Если руковод­ствоваться алгоритмом «Кратчайшая задача — первая», задачи будут запушены в следующем порядке: А, В, С, D, Е, и среднее оборотное время составит 4,6 мин. Если же запустить их в порядке В, С, D, Е, А, то среднее оборотное время составит 4,4 мин.

 

38.Алгоритмы планирования. Наименьшего оставшегося времени выполнения.
Версией алгоритма «Кратчайшая задача» с переключениями является алгоритм наимень­шего оставшегося времени выполнения. В соответствии с этим алгоритмом плани­ровщик каждый раз выбирает процесс с наименьшим оставшимся временем вы­полнения. В этом случае также необходимо заранее знать время выполнения задач. Когда поступает новая задача, ее полное время выполнения сравнивается с оставшимся временем выполнения текущей задачи. Если время выполнения но­вой задачи меньше, текущий процесс приостанавливается и управление передает­ся новой задаче. Эта схема позволяет быстро обслуживать короткие запросы.

 

32. Алгоритмы планир-я. Алгоритм трёхуровневое планирование

 Алгоритм трёхуровневое планирование

Системы пакетной обработки позволяют реализовать трехуровневое планирова­ние. По мере поступления в систему новые задачи сначала помешаются в очередь, хранящуюся на диске. Впускной планировщик вы­бирает задание и передает его системе. Остальные задания остаются в очереди.
Характерный алгоритм входного контроля может заключаться в выборе смеси из процессов, ограниченных возможностями процессора, и процессов, ограниченных возможностями устройств ввода-вывода. Также возможен алгоритм, в α устан-ся приоритет коротких задач перед длинными. Впускной планировщик волен придержать неα задания во входной очереди, а пропустить зада­ние, поступившее позже остальных.
Как только задание попало в систему, для него будет создан соотв процесс, и он может тут же вступить н борьбу за доступ к процессору. Тем не менее возможна ситуация, когда процессов слишком много и они все в памяти не помещаются, тогда неαе из них будут выгружены на диск. Второй уровень планирования определяет, какие процессы можно хранить в памяти, а какие — на диске. Этим занимается планировщик памяти.
С одной стороны, распределение процессов необходимо часто пересматривать, чтобы у процессов, хранящихся на диске, был шанс получить доступ к процессору. С другой, перемещение процесса с диска в память требует затрат, поэтому к диску следует обращаться не чаще, чем раз в сек. Если содержимое опер памяти будет слишком часто меняться, проп спос-ть диска будет расх-ся впустую, что замедлит файловый вв-вывод.
Для оптимизации эфф-сти системы планировщик памяти должен решить, сколько и каких процессов может 1временно нах-ся в памяти. Кол-тво процессов, 1временно нах-ся В памяти, наз-ся степенью многозадачности. Если планировщик памяти обладает инф-й о том, какие процессы ограничены возм-ми процессора, а какие - возм-ми устр-в вв-вывода, он может пытаться поддерживать смесь этих процессов в памяти..
Планировщик памяти периодически просматривает процессы, находящиеся на диске, чтобы решить, какой из них переместить в память. Среди критериев:
1.   Сколько времени прошло, как процесс был выгружен на диск или загружен с диска?
2.   Сколько времени процесс уже использовал процессор?
3.   Каков размер процесса (маленькие процессы не мешают)?
4.   Какова важность процесса?

Третий уровень планирования отвечает за доступ процессов, находящихся в со­стоянии готовности, к процессору. Когда идет разговор о «планировщике», обычно имеется в виду именно планировщик процессора. Этим планировщиком использу­ется любой подходящий к ситуации алгоритм, как с прерыванием, так и без.

 

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

(Приоритет-число,α хар-т степень привелегированности при исп-и ресурсов
Относительные приоритеты-если задача вып-ся то она вып-ся до конца
Абс-при поступлении задачи если у неё приоритет выше, исп-я задача прерывается)

 

41.Циклическое планирование
Одним из наиболее старых, простых, справедливых и часто используемых является алгоритм циклического планирования. Каждому процессу предоставля­ется неα интервал времени процессора, так называемый квант времени. Если к концу кванта времени процесс все еще работает, он прерывается, а управ­ление передается другому процессу. если процесс блокируется или прекращает работу раньше, переход управления происходит в этот момент. Реализация циклич планирования проста. Планировщику нужно всего лишь поддерживать список процессов в состоянии готовности согласно рисунку 2.23, а. Когда процесс исчерпал свои лимит времени, он отправляется в конец списка (рис. 2.23, б).

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

Вывод: слишком малый квант приведет к частому переключению процессов и небольшой эффективности, но слишком большой квант может привести к медленному реагированию на короткие интерактивные запросы. Значение кванта 20-50 мс -разумный компромисс.

 

42.Приоритетное планирование  
Приоритет-число,α хар-т степень привелегированности при исп-и ресурсов
Относительные приоритеты-если задача вып-ся то она вып-ся до конца
Абс-при поступлении задачи если у неё приоритет выше, исп-я задача прерывается
В ситуации компьютера с большим числом пользователей процессы могут быть не равнозначны.. Основная идея: каждому процессу присваи­вается приоритет, и управление передастся готовому к работе процессу с самым высоким пр-м.
Даже на ПК с 1 пользователем может происходить несколько процессов, отдельные из α являются более важными, чем дру­гие. Демон, отвечающий за пересылку эл почты в фоновом режиме, име­ет более низкий приоритет, чем процесс, отображающий на экране видеофильм в реальном времени.Чтобы предотвратить беск- работу процессов с высоким приоритетом, планировщик может уменьшать приоритет процесса с каждым тактом часов (прерывании по таймеру). Если в рез-е приоритет текущего процесса окажется ниже, чем приоритет следующего процесса, произойдет переключение. Возможно предоставление каждому процессу макс отрезка времени работы. Как только время кончилось, упр-е передается следующе­му по приоритету процессу.
Приоритеты процессам могут присваиваться статически или динамически. В системе UN'IX есть команда nice, позволяющая пользователю добровольно снизить приоритет своих процессов, чтобы быть вежливым по отношению к остальным польз-м.
Система может динамически назначать приоритеты для достижения своих це­лей. Например, неα процессы сильно ограничены возм-ми устр-в ввода-вывода и большую часть времени проводят в ожидании завершение операций ввода-вывода. Когда бы ни потребовался процессор такому процессу, его следует немедленно предоставить, чтобы процесс мог начать следующий запрос ввода-вывода, который будет выполняться параллельно с вычислениями другого процесса. Если заставить такой процесс, длительное время ждать доступа к процессору, он будет неоправданно долго находиться в памяти. Простой алгоритм обслуживания процессов, ограни­ченных возможностями устройств ввода-вывода, состоит в установке приоритета, равного 1/f, где f— часть исп-го в последний раз кванта. Процесс, исп-й всего 1 мс из 50 мс кванта, получит приоритет 50, процесс, использовавший 25 мс, получит приоритет 2, а исп-й весь квант - 1.


Часто бывает удобно сгруппировать процессы в классы по приоритетам и исп-ть приоритетное планирование среди классов, но циклическое планир-е внутри каждого класса. На рис. 2.24 представлена система с 4 классами приоритетов. Алгоритм планирования: пока в классе 4 есть готовые к запуску процессы, они запускаются один за другим согласно алг-му циклического планирования, и каждому отводится квант времени. При этом классы с более низким приоритетом не будут их беспокоить. Если в классе 4 нет готовых к запуску процессов, запускаются процессы класса 3 и т. д. Если при­оритеты постоянны, до процессов класса 1 процессор может не дойти никогда.

 

43.Планирование в системах реального времени.
В системах реального времени существенную роль играет время. Чаще всего одно или несколько внешних физических устройств генерируют входные сигналы, и компьютер должен адекватно на них реагировать в течение заданного промежут­ка времени. Например, компьютер в проигрывателе компакт-дисков получает биты от дисковода и должен за очень маленький промежуток времени конвертировать их в музыку. Если процесс конвертации будет слишком долгим, звук окажется искаженным. Подобные системы также используются для наблюдения за пациен­тами в палатах интенсивной терапии, в качестве автопилота самолета, для управ­ления роботами на автоматизированном производстве. В любом из этих случаев запоздалая реакция ничуть не лучше, чем отсутствие реакции.
Системы реального времени делятся на жесткие системы реального времени, что означает наличие жестких сроков для каждой задачи (в них обязательно надо укладываться), и гибкие системы реального времени, в которых нарушения вре­менного графика нежелательны, но допустимы. В обоих случаях реализуется раз­деление программы па несколько процессов, каждый из которых предсказуем. Эти процессы чаще всего бывают короткими л завершают свою работу в течение секун­ды. Когда появляется внешний сигнал, именно планировщик должен обеспечить соблюдение графика.
Внешние события, на α система должна реагировать, можно разделить на периодические (возникающие через регулярные интервалы времени) и непери­одические ' (пикающие непредсказуемо). Возможно наличие нескольких периодических потоков событий, которые система должна обрабатывать. В зав-ти от времени, затрач на обработку каждого из событий, может оказаться, что система не в состоянии своевременно обработать все события. Если в систему поступает т периодич событий, событие с номером / поступает с периодом Рiiи на его обработку уходит С, секунд работы процессора, вес потоки могут быть сво­евременно обработаны только при выполнении условия. Системы реального времени, удовлетворяющие этому условию, называются поддающимися планированию или планируемыми.
Алгоритмы планирования для систем реального времени могут быть как ста­тическими, так и динамическими. В первом случае все решения планирования принимаются заранее, еще до запуска системы. Во втором случае решения пла­нирования принимаются по ходу дела. Статическое планирование применимо толь­ко при наличии достоверной инф-и о работе, которую необходимо выпол­нить; и о временном графике, которого нужно придерживаться. Динамическое планирование не нуждается в подобных ограничениях. На этом мы отложим изу­чение алгоритмов планирования и вернемся к ним в главе 7. посвященной муль­тимедийным системам реального времени.

 

44.Перечисление процессов в Windows NT
Из PSAPI.DLL  могут быть использованы следующие функции.

 Функция   EnumProcess объявляется т.о.:
BOOL EnumProcesses(DWORD *lpidProcess, DWORD cb,DWORD*cbNeeded );
После вызова этой функции массив, передаваемый с помощью параметра IpidProcess. будет содержать несколько значений ID процессов. Нужно отметить, что эти значения сами по себе не представляют особой ценности, но с их помощью (путем передачи ID процесса функции API OpenProcessf()) можно получить дескриптор процесса, вооружившись α можно вызывать другие функции Win32 API, требую­щие дескриптора процесса.
OpenProcess() используется для преобразования идентификатора каждого процесса в дескриптор процесса. В качестве первого параметра этому методу можно передать несколько признаков, но для запроса инф-и с помощью функций PSAPI луч­ше всего использовать тандем PROCESS_QUERY_INFORMATION и PROCESS_VM_READ.
Имея дескриптор процесса, можно вызывать функцию EnumProcessModules() для получения имени файла, связанного с процессом. Эта ф-я определяется (в Delphi) следующим образом:function EnumProcessModules(hProcess: THandle; IphModule: LPDWORD; cb: DWORD; var IpcbHeeded: DWORD):  BOOL;
работает аналогично другим функциям: hProcess -дескриптор процесса, IphModule —указатель на массив дескрипторов модулей, cb число элементов в массиве, а последний параметр возвращает количество байтов, скопированных в массив.
Поскольку обычно интересует только главный модуль этого процесса, то можно передать массив, состоящий только из 1 элемента. Первый модуль, возвращаемый функцией EnumProcessModules(), и является главным модулем процесса.
Для получения инф-и о процессе можно вызывать функцию PSAPI QueryWorkingSet().:function QueryWorkingSet(hPtocess: THandle; pv: Pointer; cb: DWORD): BOOL;  
hProcess - дескриптор процесса, pv —указатель на массив, cb - число элементов в массиве. По окон­чании работы этой функции параметр pv будет указывать на массив элементов DWORD, причем старшие 20 разрядов каждого элемента будут содержать базовый адрес страницы па­мяти, а младшие 12 разрядов— признаки, по α можно определить, данная страница читается, записывается, выполняется и т.д.
для получения инф-и о загруженных драйверах устройств имеется функция EnumDeviceDrivers:function EnumDeviceDrivers(lplmageBase: PPointer; cb: DWORD; var IpcbNeeded; DWORD):  BOOL;
По окончании работы функции IpcbNeeded -количество байтов, скопир в массив.
Для определения имен загруженных драйверов  имеется функция GetDeviceDriverFileName unction GetDeviceDriverFileName(ImageBase: Pointer; IpFileName: PChar; nSize;  DWORD): DWORD;
функция в качестве первого параметра принимает базовый адрес драйвера устройства, второго — указатель на строковый буфер, последнего — размер буфе­ра. При успешном выполнении функции параметр IpFileSame будет содержать имя файла драйвера устройства

 

45.Перечисление процессов в Windows 9x (исп-е ToolHelp32)
ToolHelp32 — это семейство ф-й и процедур, составляющих подмн-во Win32 API, α позволяют получить сведения о неα низкоуровневых аспектах работы ОС, В частности, сюда входят функции, с помощью α можно получить инф-ю обо всех процессах, выполняющихся в системе в данный момент, а также потоках, модулях, принадл каждому процессу. Большинство данных, получаемых от функций ToolHelp32, используется главным образом приложениями, α должны заглядывать "внутрь" ОС.
Семейство процедур и функций ToolHelp32 API доступно только в варианте реализации Win32 для Windows 95/98. В среде Windows NT вызов их приведет к нарушению системы защиты и безопасности NT-процессов. Типы и определения функций ТооlНе1р32 размещаются в модуле TlHelp32, поэтому при работе с этими ф-ми не забудьте включить его имя в список инструкции uses ( в Delphi).
Моментальные снимки
В динамической среде имело бы смысл на мгновение заморозить систему, чтобы по­лучить системную инф-ю. В ТооlНе1р32 не предусмотрено средств заморажива­ния системы, но есть функция, с помощью α можно сделать "снимок" системы в за­данный момент времени. Эта функция называется CreateToolhelp32Snapshot(), и ее объяв­ление  (в Delphi) выглядит следующим образом:function CreateToolhelp32Snapshot(dwFlags, th32ProcesslD: DWORD): THandle; stdcall;
•   Параметр dwFlags означает тип инф-и, подлежащий включению в моментальный снимок. одно из значений. TH32CS_INHERIT TH32CS_SNAPALL TH32CS_SNAPHEAPLIST TH32CS_SNAPMODULE TH32CS_SNAPPROCESS TH32CS_ SNAPTHREAD
•  CreateToolhelp32Snapshot возвращает дескриптор созданного снимка или -1 в случае ошибки..
Обработка инф-и о процессах
Имея дескриптор снимка, содержащий инф-ю о процессах, можно воспользоваться двумя функциями ToolHelp32, α позволяют последовательно просмотреть сведения обо всех процессах в системе. Функции Process32First() и Process32Next() определены следующим образом:
function Process32First(hSnapshot: THandle; var Ippe:  TProcessEntry32):  BOOL; stdcall;
function Process32Next(hSnapshot: THandle; var Ippe: TProcessEntry32):  BOOL;  stdcall;
Первый параметр у обеих функций является дескриптором снимка.Второй параметр,  представляет собой запись TProcessEntry32. По мере прохождения по элементам перечисления ф-и будут заполнять эту запись инф-ей о следующем процессе. Запись TProcessEntry32 содержит:
•  значение счетчика ссылок процесса. Когда= нулю, ОС выгрузит процесс.
•   идентификационный номер процесса.
• идентификатора {ID} для кучи процесса, действующей по умолчанию. Этот ID имеет значение только для функций ToolHelp32.
• thHodulelD идент-ет модуль, связанный с процессом. (значение только для ф-й ToolHelp32.
•  сколько потоков начало выпол­няться в данном процессе
•  th32ParentProcessID идентифицирует родительский процесс для данного про­цесса.
• базовый приоритет процесса. ОС исп это значение для управления работой потоков,
•  путь и имя файла ЕХЕ-программы или драйвера, связанного с данным процессом.
После создания снимка, содержащего инф-ю о процессах, для опроса данных по Каждому процессу следует вызвать сначала функцию Process32Firs. а затем вызывать функцию Process32Next до тех пор, пока она не вернет False.
Обработка инф-и о потоках
Для составления списка потоков некоторого процесса в ToolHelp32 предусмотрены две функции, которые аналогичны функциям, предназначенным для регистрации процессов: Thread32First() и Thread32Next (). Эти функции объявляются следующим образом;function Thread32First(hSnapshot: THandle; var Ipte: TThreadEntry32): BOOL; stdcall;
Помимо обычного параметра hSnapshot, этим функциям также передается по ссылке па­раметр типа TThreadEntry32. Как и в случае функций, работающих с процессами, каждая нз них заполняет запись TThreadEntry32, содержащую
•   размер записи.• счетчик ссылок данного потока..•   идентификационный номер потока
.•  идентификатор процесса, α при­надлежит данный поток. •   базовый класс приоритета потока. Это значение одинаково для всех потоков данного процесса. Возможные значения 4- ожидающий, 8-норм, 13-высокий, 24-реальное время •  дельта-приоритет (разницу), определяющий величину отличия реального приоритета от значения tpBasePri. Это число со знаком, α в сочетании с базовым классом приоритета отображает общий приоритет по­тока.
Надо знать, что списки потоков, полученные с помощью функций ToolHelp32 не связываются с опр потоком. Поэтому при сканировании потоков нужно обязательно проверять результат, так чтобы потоки были связаны с интерес вас потоком.
Обработка инф-и о модулях
Опрос модулей выполняется практически так же, как опрос процессов или потоков. Для этого в ТооlНе1р32 предусмотрены две функции: Module32First() и Module32Next():
function Module32First(hSnapshot: THandle; var Ipme: TModuleEtitry32): BOOL;  stdcall;
function Module32Next(hSnapshot: THandle; var Ipme: TModuleEntry32): BOOL; stdcall;
Первым параметром в обеих функциях является дескриптор снимка, а вторым var-параметром — запись TModuleEntry32. Её элементы:•  размер записи. •  идентификатор модуля.• идентификатор опрашиваемого процесса.
•  глобальный счетчик ссылок данного модуля. •  счетчик ссылок модуля в контексте процесса-владельца.- базовый адрес модуля в памяти. Это значение действительно только в контексте идентификатора процесса th32ProcessID.
•  размер модуля в памяти. дескриптор модуля. значение действит только в контексте идент-ора процесса th32ProcessID.
строка с именем модуля, завершающаяся нуль-символом.•  полный путь модуля.

 

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

 

47.Понятие гонок в ОС 
А – процесс, отвечающий за смену тариф палана
В – процесс, отвечающий за состояние счета абонента
1. B→ID
2. A→ID
3. B→бит
4. A→смена плана
5. В→запись инф.
6. А→запись инф.
В результате запись А перекрыла запись В. Ситуация в которых 2 и более процесса обрабатывают разделяемые данные и конечный результат зависит от соотношения скоростей называется гонкой.

 

48.Критические секции
Один из методов синхронизации потоков состоит в использовании критичес­ких секций (critical sections). Это единственный метод синхронизации потоков, который не требует привлечения ядра Windows. (Критическая секция не является объектом ядра). Однако этот метод может использоваться только для синхронизации  потоков одного процесса.
Критическая секция — это некоторый участок кода, который в каждый момент времени может выполняться только одним из потоков. Если код, используемый для инициа­лизации массива, поместить в критическую секцию, то другие потоки не смогут войти в этот участок кода до тех пор, пока первый поток не завершит его выполнение.
КС-часть программы, рез-т вып-я α может непредсказуемо меняться при изменении её среды функц-я други  процессом.
Необходимые усл исключения гонок:
1)в конкр момент времени в КС должен нах-ся только 1 процесс- взаимное исключение
2)процессы, α нах-ся вне КС не могут блокировать другие процессы
3)время ождания работы процесса в КС должно быть конечным
4)алгоритм должен строиться без ориентации на быстродействие системы
Реализация взаимного исключения
1)полностью принудительно выключить все прерывания
Выкл прер-КС-вкл прер

 

50.Объекты «мьютекс»
Мьютекс (MUTual Exclusions— взаимоисключения)  - это объект ядра, который можно использовать для синхронизации потоков из разных процессов. Он может принадлежать или не принадлежать не­которому потоку. Если мьютекс принадлежит потоку, то он находится в состоя­нии «занято». Если данный объект не относится ни к одному потоку, то он нахо­дится в состоянии «свободно». Другими словами, принадлежать для него означает быть в состоянии «занято».
Если мьютекс не принадлежит ни одному потоку, первый поток, который вы­зовет функцию WaitForSingleObject, завладевает данным объектом, и тот переходит в состояние «занято». В определенном смысле мьютекс похож на вык­лючатель, которым может пользоваться любой поток по принципу «первым при­шел - первым обслужили» (first-come-first,-served).
Дело в том, что при попытке с помощью вызова функции WaitForSingleObject завладеть мьютексом, который уже находится в состоянии «занято», поток пере­водится в состояние ожидания до того момента, когда данный объект освободит­ся, т.е. когда «владелец» мьютекса его освободит (переведет в состояние «сво­бодно»).
По принципу своего действия мьютексы очень похожи на критические секции, за исключением двух моментов. Во-первых, мьютексы можно использовать для синхронизации потоков, переступая через границы процессов. Во-вторых, мьютексу можно присвоить имя и путем ссылки на это имя создать дополнительные дескрипторы существующих объектов мьютексов.

 

49.Блокирующие переменные.
1) 0-свободен(не 1 процесс не вып-ся в КС), 1- ресурс занят
D-ресурс, f(D)-ф-я опред состояние ресурса и возвращает
значение блокирующей переменной.
Активное ожидание-постоянно опрашиваем значение f(D).
Действие вып-ся не за 1 такт. Может начать вып-ся другой процесс.
2)Использование аппаратной блокировки (TSL):
Многие ком­пьютеры, особенно разработанные с расчетом на несколько процессоров, имеют командуTSL RX.L0CK (Test and Set Lock — проверить и заблокировать
 
Возвращает в регисрт состояние пер-й lock и если оно было свободным, блокирует.
Прежде чем попасть в КС, процесс вызывает процедуру enter_region, α выполняет активное ожидание вплоть до снятия блокировки, затем она устанавливает блокировку и возвращается. По выходе из КС процесс вызывает процедуру leate_region, помещающую 0 в переменную lock. Как и во всех остальных решениях проблемы критической области, для корректной работы процесс должен вызывать эти процедуры своевременно, в противном случае взаим­ное исключение не удастся.
2) Строгое чередование

На рис. 2.16 целая переменная turn, изначально = 0, отслеживает, чья очередь входить в КС. Вначале процесс 0 проверяет значение turn, считывает 0 и входит в КС. Процесс 1 также проверяет зна­чение turn, считывает 0 и после этого входит в цикл, непрерывно проверяя, когда же turnбудет = 1. активное ожидание. Активное ожидание используется только когда есть уверенность в небольшом времени ожидания. Блокировка, исп-я активное ожидание, называется спин-блокировкой.
Когда процесс 0 покидает КС, он изменяет turnна 1, позволяя процессу 1 попасть в КС. метод поочередного доступа к критической области не слишком удачен, если 1 процесс существенно медленнее другого. Эта ситуация нарушает усл: 1 процесс блокирован другим, не находящимся в КС
3) Нестрогое чередование – алгоритм Петерсона
int turm;
int N=2; // количество одновременно работ. Процессов
bool interested[N]; // массив размера N, определяющий хочет ли войти процесс
void Enter_CS(int process)
{ int Other =1-process;
   interested[process]=true;   turn=process;
   while (turn==process&&interested[other]) }
процесс, захотевший войти в CS вызывает процедуру Enter_CS сос свои номером, если доступ разрешен, то процесс успешно выходит из этой процедуры и продолжает выполняться, иначе процесс ожидает завершение другого процесса
Примитивы межпроцессного взаимодействия:
Применяются вместо акт ожидания, в α лишь напрасно расх-ся процессорное время. Примитивы блокируют процесс в случае запрета на вход в КС. Т.к. КС не явл-ся объектом ядра, они могут прим-ся только для взаимосвязи потоков внутри 1 процесса.
Смамя простая пара приметивов:Sleep-WakeUp.
Sleep -Системный запрос, α блокирует вызывающий процесс, пока его не запустит другой процесс

WakeUp- Сист запрос, запускающий процесс, оперделяемый в атрибутах.

 

51.Семафоры
Семафор – целая переменная, предлож. Дейкстра, над которой можно совершать только 3 операции:
1) инициал-я неотрицат. Числом
2) Down – уменьшение значения семафора, если оно=0, то поток блокируется
3) Up – увеличение значения семафора, причем если предыдущее значение было =0, то ранее заблокирован. Процесс (поток) разблокируется
Как правило данным числом определяется количество процессов, ресурсов (свободных)
В ОС типа Windows для создания семафора используется системный вызов
CreateSemaphore
WaitForSingleObject – аналогично Down
Все операции проверки значения семафора, его изменения и перевода процесса в состояние ожидания выполняются как единое и неделимое элементарное действие. Тем самым гарантируется, что после начала операции ни один процесс не получит доступа к семафору до окончания или блокирования операции. Элементарность операции чрезвычайно важна для разрешения пробле­мы синхронизации и предотвращения состояния состязания.
При занятости рес-ся процесс входит в режим пассивного ожидания, поэтому в состав мех-ма вклюаются ср-ва формирования и оюслуж-я очередей ожидающих процессов. Данные ср-ва организуются ядром ОС.

 

52.Ждущие таймеры.
Ждущий таймер (waitable timer) - новый тип объектов синхронизации, поддерживаемый в Windows NT версии 4.0 и выше. Это полноценный объект синхронизации, α может исп-ся для орг-и задержки в 1 или нескольких приложениях.
ЖТ работает в 3 режимах. В режиме «ручного сброса» таймер переходит в уст состояние при истечении заданной задержки и остается установленным до тех пор, пока функция SetWaitableTimer не задаст новую задержку. В режиме «автоматического сбро­са» ЖТ переходит в уст состояние при истечении заданной задержки и остается установленным до первого успешного вызова ф-и ожидания. В этом режиме он напоминает объект Event в режиме авт сброса, поскольку каждый раз при истечении времени задержки разрешается выполнение лишь 1 нити. Наконец, ЖТ может выполнять ф-и интервального таймера, который перезапускается с заданной задержкой после каждого срабатывания объекта.
Главная особенность, отличающая ЖТ от системных, —ЖТ могут совместно исп-ся несколькими приложениями. Например, вы можете приостановить несколько приложений в фоновом режиме так, чтобы они «просыпались» каждые неск часов для вып-я неα операции.
Процессы получают дескрипторы ЖТ так же, как они получают дескрипторы мьютексов: дублированием, наследованием или открытием по имени.
функции, предназначенные для работы со ждущими таймерами.


CancelWaitableTimer
СгеаteWaitableTimer
OpenWaitableTirner
 SetWaitableTimer

Останавливает работу ЖТ. Таймер остается в текущем состоянии
Создает объект ЖТ. Если уже существует, он открывается
Открывает существующий ждущий таймер
 Запускает ЖТ с заданной прод-ю и интервалом срабатывания

 

53.Взаимоблокировки.
Взаимоблокировка-постоянное блокир-е мн-ва процессов, α либо конкурируют в борьбе за сист ресурсы, либо сообщаются друг с другом
В компьютерных системах существует большое количество ресурсов, каждый из α в конкретный момент времени может исп-ся только 1 процессом. ( принтеры, накопители на магнитной ленте и элементы внутренних таблиц системы. ) Появление 2 про­цессов, одновременно передающих данные на принтер, приведет к печати бессмыс­ленного набора символов. Поэтому все ОС обладают способностью предоставлять процессу эксклюзивный доступ (по крайней мерс, временный) к опред ресурсам.
Часто для выполнения прикладных задач процесс нуждается в исключитель­ном доступе не к 1, а к нескольким ресурсам. Предположим что каждый из 2 процессов хочет записать отсканированный документ на компакт-диск. Процесс А запрашивает разрешение на исп-е сканера и получает его. Процесс сначала запрашивает устр-во для записи компакт-дисков и также получает его. Затем А обращается к устр-ву для записи компакт-дисков, но запрос отклоняется, пока это устройство занято процессом В В запрашивает сканер. В этот момент процессы заблокир и будут вечно оставаться в этом сост. Такая ситуация называется тупиком,пли взаимоблокировкой.
Взаимобл-ки могут возникать между разл машинами. Часто такие устр-ва, как сканеры, принтеры и накопители на магнитной лейте, присоединены к сети как ресурсы совместного доступа. Если эти ресурсы позволяется резервировать удаленно, может возникнуть аналогичный опис выше вид тупиковых ситуаций. Более сложные ситуации могут стать причиной тупиков, вовлекающих 3, 4 и более устр-в и польз-й.

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

 

54.Выгружаемые и невыгружаемые ресурсы
Ресурсы бывают двух типов: выгружаемые и невыгружаемые. Вьгружаемый ресурс можно безболезненно забирать у владеющего им процесса. Образном такого ресур­са является память. Рассмотрим, например, систему с пользовательской памятью размером 32 Мбайт, одним принтером и двумя процессами по 32 Мбайт, каждый из которых хочет что-то напечатать. Процесс Азапрашивает и получает принтер, затем начинает вычислять данные для печати. Еще не закончив расчеты, он пре­вышает свой квант времени и выгружается на диск в область подкачки.
Теперь работает процесс В и безуспешно пытается обратиться к принтеру. В дан­ный момент мы получили потенциальную тупиковую ситуацию, потому что процесс Л использует принтер, а процесс В занимает память, и НИ один из них не может продолжать работу без ресурса, удерживаемого другим. К счастью, можно выгрузить (забрать) память у процесса В, переместив его па диск в область под­качки и скачав с диска в память процесс Л. Теперь процесс Л может закончить вы­числения, выполнить печать и затем освободить принтер. Взаимоблокировки не происходит.
Невыгружаемый ресурс, в противоположность выгружаемому, - это такой ресурс, который нельзя забрать от текущего владельца, не уничтожив результаты вычислений. Если в момент записи компакт-диска внезапно отнять у процесса ус­тройство для записи и передать его другому процессу, то в результате мы получим испорченный компакт-диск. Устройство для записи компакт-дисков не является выгружаемым в произвольный момент времени ресурсом.

 

55.Условия взаимоблокировки.
Взаимоблокировка-постоянное блокир-е мн-ва процессов, α либо конкурируют в борьбе за сист ресурсы, либо сообщаются друг с другом
1) Условие взаим. исключения: кажд. ресурс в данный момент времени д.б. отдан только 1-му процессу или д.б. доступен
2) Услолвие удерж. и ожидания: процессы в данный момент удержив. получен-е  ранее ресурсы могут запрашивать новые ресурсы.
3) Усл отсутств. прин. Выгрузки ресурсов: у процесса нельзя принуждённым образом забрать ранее получ. ресурсы. Процесс, владеющий ими должен сам забрать ресурсы.
4)Условие цикл. ожидания: должна существовать кр. последов-ть из 2 или более процессов, каждый из которых ждёт доступа к ресурсу, удерживаемому следующим членом посл-ти.

Должна существовать замкнутая цепь процессов, каждый из к-рых удерж. как минимум 1 ресурс, необход. процессу следующему в цепи после данного.
Блокировка возникает, когда 4 усл-я соблюдаются. Если 3, то возможен выход.

 

56.Алгоритм банкира.
Алгоритм планирования, позволяющий избегать взаимоблокировок, был разра­ботан Дейкстрой и носит название алгоритма банкира. Он представляет собой расширение алгоритма обнаружения тупиков. Модель алгоритма основана на примере банкира в маленьком городке, имеющего дело с группой клиентов, α он выдал ряд кредитов. Алгоритм проверяет, ведет ли выполнение каждого запроса к небезопасному состоянию. Если да, то запрос отклоняется. Если удовлетворение запроса к ресурсу приводит к безопасному состоянию, ресурс предоставляется процессу. На рис. 3.9, а мы видим четырех клиентов: А, В, С и А каждый из которых полу­чил определенное количество единиц кредита. Банкир знает, что не всем клиентам понадобится их максимальный кредит немедленно, поэтому он зарезервировал только 10единиц, а не все 22. которые требуются клиентам. (Чтобы провести аналогию с компьютерном системой, счи­таем, что клиенты — это процессы, единицами, скажем, являются накопители на магнитной ленте, а банкир — это ОС.)
Клиента вращаются в соответствующем бизнесе, время от времени прося у бан­ка ссуды (т.е. запрашивая ресурсы). В некоторый момент возникает ситуация, показанная па рис. 3.9, б. Это состояние безопасно, потому что остались 2 единицы и банкир может задержать все обращения, кроме запросов клиента или процесса С, т. О., позволяя процессу С завершиться и вернуть все 4 отданных ему ресурса. Имея 4 единицы, банкир может отдать их или клиенту D. или В, обеспечивая их необх единицами и т. д.
Рассмотрим, что могло бы произойти, если бы в ситуации на рис. 3.9, б был бы удовлетворен запрос еще одной единицы для клиента В. Мы попали бы в состоя­ние рис. 3.9, в, не являющееся безопасным. Если бы все клиенты вдруг запросили макс ссуды, то банкир не смог бы их обеспечить и мы попали бы в тупик. Небезопасное состояние не обязано приводить к взаимоблокировке, т. К. клиентам не обязательно потребуется весь доступный кредит, но банкир не может рассчитывать на такую ситуацию.

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

 

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

 

58.Голодание.
 «Голодание» является проблемой, тесно связанной с взаимоблокировкой. В ОС постоянно происходят запросы кресурсам, поэтому необх система, α опр-т, когда и кто получит требуемый ресурс. Алгоритм, залож в такую систему, могут привести к тому, что неα процессы никогда не получат требуемого ресурса. Данная ситуация наз-ся голоданием. Например, рассмотрим процесс предост-я принтера. Представим, что си­стема использует неα вид алгоритма, гарантирующий, что предоставление принтера процессу не приводит к взаимоблокировке. Теперь предположим, что несколько процессов одновременно хотят воспользоваться принтером. Какой из них должен получить этот ресурс?
Один возможный алгоритм предоставления ресурсов отдает принтер процессу с наименьшим файлом для печати. Такой подход максимизирует к-во счастливых обслуженных клиентов и кажется прекрасным. Теперь рассмотрим, что произойдет в сильно загруженной системе, когда один из процессов должен распечатать огромный файл. Каждый раз, когда принтер освобождается, система выбирает процесс с наиболее коротким файлом. Если в системе есть постоянный поток процессов с небольши­ми файлами, принтер никогда не будет предоставлен процессу с огромным фай­лом. Процесс просто «умрет от голода» (будет отложен па неопределенный срок, несмотря на то, что даже не будет заблокирован).

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

 

59.Межпроцессный механизм взаимодействия с использованием отображения файлов.
Механизм отображения файлов позволяет процессу трактовать содержимое файла как блок памяти в адресном пространстве этого процесса. Процесс может использовать обычные операции с указателями для того, чтобы считывать и изменять содержимое файла. Когда 2 или более процесса получают доступ к одинаковым отображениям файлов, то каждый процесс получает указатель на память в собственном адресном пространстве, которое он может использовать для модифицирования содержимого файла. Отсюда следует, что процессы также должны использовать объект синхронизации, например семафор, чтобы предотвратить разрушение данных в многозадачной среде.
Программист может использовать специальный вид отображения файла для обеспечения именованной разделенной памяти между процессами. Если при создании объекта-отображения файла указывается файл подкачки системы (swapping file), то отображение файла создается как блок совместно используемой памяти. Другие процессы также могут получить доступ к этому блоку, открыв такое же отображение файла.
Отображение файлов вполне эффективно, и, кроме того, предоставляет  поддерживаемые ОС   атрибуты безопасности для того, чтобы помочь предотвратить несанкционированный доступ к данным.
Механизм отображения файлов может быть использован процессами, работающими только на локальном компьютере; он не используется для передачи данных по сети.
Используемые функции:
CreateFileMapping - создать объект-отображение файла с.
функции MapViewOfFile, - создать представление содержимого файла в адресном пространстве процесса. Функция возвращает указатель на представление файла в памяти.
OpenFileMapping - использовать тот же объект-отображение файла, что и первый процесс. Также как и первый процесс, второй использует
Для чтения из представления файла в памяти разименуем указатель, полученный с помощью функции MapViewOfFile:
FlushViewOfFile копирует указанное количество байт представления файла в памяти в физический файл не ожидая пока произойдет операция кэшированной записи:
UnmapViewOfFile - сделать недействительным указатель на отображенную память. Этим уничтожается сопоставление адресного пространства процесса объекту-отображению файла.
закрыть дескрипторы объектов-отображений с помощью функции CloseHandle:

 

60.Межпроцессный механизм взаимод-я с исп-ем почтовых ящиков.
Почтовые ящики(ПЯ) обеспечивают только однонаправленные соединения. Каждый процесс, α создает ПЯ, является «сервером ПЯ». Другие процессы, называемые «клиентами ПЯ», посылают сообщения серверу, записывая их в ПЯ. Входящие сообщения всегда дописываются в ПЯ и сохраняются, пока сервер их не прочтет. Каждый процесс может 1временно быть и сервером и клиентом ПЯ, создавая, т. о., двунаправленные коммуникации между процессами.
Клиент может посылать сообщения на ПЯ, расположенный на том же компьютере, на компьютере в сети, или на все ПЯ с 1 именем всем компьютерам выбранного домена. При этом широковещат сообщение, транслируемое по домену, не может быть > 400 байт. В остальных случаях размер сообщения огранич только при создании ПЯ сервером.
Почтовые ящики предлагают легкий путь для обмена короткими сообщениями, позволяя при этом вести передачу и по локальной сети, в том числе и по всему домену.
Mailslot является псевдофайлом нах-ся в памяти и чтобы получить доступ к нему исп стандартные функции для работы с файлами. Данные в ПЯ могут быть в любой форме – их интерпретацией занимается прикладная программа, их общий объем <=64 Кб. mailslot’ы являются временными — когда все дескрипторы ПЯ закрыты, он и все его данные удаляются. все ПЯ являются локальными по отношению к создавшему их процессу; процесс не может создать удаленный mailslot.
Сообщения < 425 байт передаются с исп дейтаграмм. Сообщения > 426 байт используют передачу с уст логического соединения на основе SMB-сеансов. Передачи с уст соединения допускают только индивидуальную передачу от одного клиента к одному серверу=>теряем возможность широковещательной трансляции сообщений от 1 клиента ко многим серверам. Windows не поддерживает сообщения размером в 425 или 426 байт.
Когда процесс создает ПЯ, имя последнего должно иметь следующую форму: \\.\mailslot\[path]nameудаленный компьютер- NETbios-имя: \\ComputerName\mailslot\[path]name Или для главного домена ОС (в α нах-ся рабочая станция): \\*\mailslot\[path]name

Функции  серверов  почтовых  ящиков

CreateMailslot

Создает почтовый ящик и возвращает его дескриптор.

GetMailslotInfo

Извлекает макс размер сообщения, размер ящика, размер след сообщения в ящике, кол-во сообщений и время ожидания сообщения при выполнении операции чтения.

SetMailslotInfo

Изменение таймаута при чтении из почтового ящика.

Функции клиентов почтовых ящиков

CloseHandle

Закрывает дескриптор почтового ящика для клиентского процесса.

CreateFile

Создает дескриптор почтового ящика для клиентского процесса.

DuplicateHandle

Дублирование дескриптора почтового ящика.

WriteFile, WriteFileEx

Запись сообщений в почтовый ящик.

 

61.Межпроцессный механизм взаимод-я с исп-ем каналов (pipe).
Существует 2 способа орг-ть 2направленное соединение с помощью каналов: 1)Безымянные (или анонимные) каналы позволяют связанным процессам передавать инф-ю друг другу. Обычно, безымянные каналы исп-ся для перенаправления стандартного ввода/вывода дочернего процесса так, чтобы он мог обмениваться данными с родительским процессом.  Чтобы производить обмен данными в обоих направлениях, надо создать 2 безымянных канала. Родительский процесс записывает данные в 1й канал, исп-я его дескриптор записи, в то время как дочерний процесс считывает данные из канала, исп-я дескриптор чтения. Аналогично, дочерний процесс записывает данные во 2й канал и родительский процесс считывает из него данные. Безымянные каналы не могут быть исп-ны для передачи данных по сети и для обмена между несвязанными процессами.
2)Именованные каналы исп-ся для передачи данных между независимыми процессами или между процессами, работающими на разных компьютерах. Обычно, процесс сервера именованных каналов создает именованный канал с известным именем или с именем, α будет передано клиентам. Процесс клиента именованных каналов, зная имя созданного канала, открывает его на своей стороне с учетом ограничений, указанных процессом сервера. После этого между сервером и клиентом создается соединение, по α может производиться обмен данными в обоих направлениях. В дальнейшем наибольший интерес для нас будут представлять именованные каналы.
При создании и получении доступа к существующему каналу необходимо придерживаться следующего стандарта имен каналов:\\.\pipe\pipename
Если канал находится на удаленном компьютере, то вам потребуется NETBIOS-имя компьютера:\\ComputerName\pipe\pipename


CallNamedPipe

Выполняет подключение к каналу, записывает в канал сообщение, считывает из канала сообщение и затем закрывает канал.

ConnectNamedPipe

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

CreateNamedPipe

Создает экземпляр именованного канала и возвращает дескриптор для послед операций с каналом.

CreatePipe

Создает безымянный канал.

DisconnectNamedPipe

Отсоединяет серв сторону экземпляра имен канала от клиентского процесса.

GetNamedPipeHandleState

Получает инф-ю о работе указанного именованного канала.

GetNamedPipeInfo

Извлекает свойства указанного именованного канала.

PeekNamedPipe

Копирует данные безымо канала в буфер без удал-я их из канала.

SetNamedPipeHandleState

Устанавливает режим чтения и режим блокировки вызова функций (синхронный или асинхронный) для указанного именованного канала.

TransactNamedPipe

Комбинирует опер записи сообщ и чтения сообщ в 1 сетевую транзакцию.

WaitNamedPipe

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

 

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

 

63.Типы адресов.
Для идентиф-ии переменных и команд исп-ся симв-е имена (метки), вирт-ые адреса и физ адреса (рисунок 2.7). Симв имена присваивает польз-ль при написании программы на алгоритмическом языке или ассемблере. Вирт адреса выраб-ет транслятор, переводящий программу на маш-ый язык. Т.к во время трансляции в общем случае не известно, в какое место оперативной памяти будет загружена программа, то транслятор присваивает переменным и командам вирт (условные) адреса, обычно считая по умолч, что прог-а будет размещена, начиная с нулевого адреса. Сов-ть вирт-х адресов процесса наз-ся вирт адресным простр-вом. Каждый процесс имеет собст-е вирт адр-е простр-во. Макс-ный размер вирт адр простр-ва огранич-ся разрядностью адреса, присущей данной арх-ре комп-а, и, как правило, не совп-ет с объемом физ памяти, имеющимся в комп-е.

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

 

64.Типы памяти в ОС.
 Иерархическая структура памяти. Кэш-память. ОЗУ, ПЗУ, внешняя память на дисках. Физическая и виртуальная память.
Память: 1-основная(физическая – оперативная); 2-дополнительная(внешняя, диски). Осн пам – это упоряд-ый массив 1байовых ячеек, каждая из a имеет свой уникальный адрес. Внешн пам – 1мерное линейное адр простр-во, состоящее из посл-ти байтов. Иерархия памяти:
1)Регистровая память процессора(самая быстрая) « 2)КЭШ процессора « 3)Основанная память « 4)Внешняя(эл. диски) « 5)Внешняя (магн диски) « 6)Магнитная лента (1-min ’время доступа, емкость’ 6-max, цена наоборот, max у регистровой памяти)
Физическая память
Физическая память (physical memory) - это реальные микросхемы RAM, установленные в компьютере. Каждый байт физической памяти имеет физический адрес (physicaladdress), который представляет собой число от нуля до числа на единицу меньшего, чем количество байтов физической памяти. Например,   ПК с установлен­ными 64 Мб RAM, имеет физические адреса &Н00000000-&Н04000000 в шестнадцатеричной системе счисления, что в десятичной системе будет 0-67 108 863.
Физическая память (в отличие от файла подкачки и виртуальной памяти) является исполняемой (executable), то есть памятью, из которой можно читать и в которую центральный процессор может посредством системы команд записывать данные.
Виртуальная память
Виртуальная память (virtualmemory) - это просто набор чисел, о которых говорят как о виртуальных адресах. Программист может использовать виртуаль­ные адреса, но Windows не способна по этим адресам непосредственно обращать­ся к данным, поскольку такой адрес не является адресом реального физического запоминающего устройства, как в случае физических адресов и адресов файла подкачки. Для того чтобы код с виртуальными адресами можно было выполнить, такие адреса должны быть отображены на физические адреса, по которым дей­ствительно могут храниться коды и данные. Эту операцию выполняет диспетчер виртуальной памяти (VirtualMemoryManager - VMM). Операционная система Windows обозначает некоторые области виртуальной памяти как области, к которым можно обратиться из программ пользовательского режима. Все остальные области указываются как зарезервированные. Какие области памяти доступны, а какие зарезервированы, зависит от версии операционной системы (Windows 9x или Windows NT).

 

65.Адресное пространство процесса.
Каждый процесс Win32 получает виртуальное адресное пространство (virtual address space), называемое также адресным пространством, или пространством процесса (process space), объем которого равен 4 Гб. Таким образом, код процесса может ссылаться на адреса с &Н00000000 по &HFFFFFFFF (или с 0 по 232 - 1 = 4 294 967 295 в десятичной системе счисления). Конечно, так как виртуальные адреса - это просто числа, заявление о том, что каждый процесс получает свое собственное виртуальное адресное пространство, выглядит довольно бессмысленным. (Это все равно, что сказать, что каждый человек получает свой собственный диапазон возраста от 0 до 150).
Тем не менее, это утверждение должно означать, что Windows не видит ни какой взаимосвязи в том, что и процесс А, и процесс В используют один и тот же виртуальный адрес, например &Н40000000. В частности, Windows может сопоставить (или не сопоставить) виртуальным адресам каждого процесса разные физические адреса.

 

66.Использование адресного пространства в Windows NT.


А: Как видно из рисунка Windows NT резервирует первые 64 Кб виртуальной памяти для специального назначения и помечает эту область как недоступную для программ пользовательского режима.  Там содержатся неинициализированные указатели.
 В:, размер области В равен 2 Гб - 128 Кб (почти половина всего адресного пространства). Отдельные ее части отобра­жают основной загрузочный модуль приложения, любые относящиеся к при­ложению DLL, в их числе системные DLL, такие как KERNEL32.DLL, USER32 DLL, GDI32.DLL и т.д. Стоит отметить особо, что эта область может включать как автономные (un­shared), так и совместно используемые файлы. Системные DLL, такие как KERNEL32.DLL,используются совместно, так как в физической памяти присутствует только одна копия каждой из них. Как правило, эта копия отображается на одни и те же вир­туальные адреса каждого процесса, но это необязательно.
С: область объемом 64 Кб, сразу под отметкой 2 Кб, где начинается зарезервированное Windows адресное простран­ство. Она используется как своего рода разграничительная полоса, препятствую­щая обращениям к адресам памяти, которые разделяют открытую для доступа область В и недоступную область D, принадлежащую Windows. Используется для некорректно инициализированных указателей.
Недоступно в пользовательском режиме.
D: Эта область зарезервирована для использования Windows NT (например, ис­полнительной системой, ядром и драйверами устройств). Приложения не могут обращаться к памяти в этом диапазоне виртуальных адресов. Любая попытка сде­лать это приведет к ошибке нарушения доступа (access violation, GPF)

 

67.Использование адресного пространства в Windows 9x  


А:Как следует из рисунка, Windows 9х резервирует область А, объем которой всего лишь 4 Кб, для того же, что и Windows NT первые 64 Кб памяти, - с целью предупреждения о нулевых указателях. Эта область защищена, и попытка обращения к ней из программы пользовательского режима приводит к ошибке нарушения доступа;
В:Данная область памяти используется для поддержания совместимости с приложениями DOS и 16-разрядными приложениями Windows. Несмотря на потенциальную доступность, она не должна использоваться для программирования.
С:Область С - это адресное пространство, используемое прикладными программами и их DLL. Здесь размещаются также и модули Windows. Например, если приложению требуется управляющий элемент OCX, его модуль будет находиться в этой области.
D:Windows 9х отображает системные DLL Win32 (KERNEL32.DLL, USER32.DLL и т.д.) в это адресное пространство. Данные файлы используются совместно, то есть несколько процессов могут обращаться к единственной копии такого файла в физической памяти.Область D доступна для программ пользовательского режима (однако размещать их здесь не рекомендуется).
Е:Данная область также содержит совместно используемые файлы Windows, такие как исполнительная система Windows и ядро, драйверы виртуальных устройств, файловая система, программы управления памятью.

Она также доступна для программ пользовательского режима

 

68.Методы распределения памяти.
С файлом подкачки: Сегментный, страничный, комбинированный. Без файла подкачки: Фиксированные, динамические, перемещаемые разделы.

 

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

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

 

70.Распределение памяти динамическими разделами.
В этом случае память машины не делится заранее на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необходимая ей память. Если достаточный объем памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи память освобождается, и на это место может быть загружена другая задача. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера. На рисунке 2.10 показано состояние памяти в различные моменты времени при использовании динамического распределения. Так в момент t0 в памяти находится только ОС, а к моменту t1 память разделена между 5 задачами, причем задача П4, завершаясь, покидает память. На освободившееся после задачи П4 место загружается задача П6, поступившая в момент t3.

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

 

105.Файловая система FAT-12.
Во всех файловых системах FAT размер блока диска в байтах может быть уста­новлен равным некоторому числу, кратному 512 с наборами разрешенных размеров блоков (называемых кор­порацией Microsoft размерами кластеров), различными для каждого варианта FAT. В первой версии системы MS-DOS использовалась FAT-12 с 512-байтовы­ми блоками, что позволяло создавать дисковые разделы размером до 212 х 512 байт (на самом деле только 4086 х 512 байт, так как 10 дисковых адресов использова­лись как специальные маркеры — конец файла, дефектный блок и т. д.). При этом максимальный размер дискового раздела мог составлять 2 Мбайт, а в оперативной памяти FAT-таблица занимала 4096 элементов по два байта каждый. Кроме того, обработка 12-разрядных адресов была довольно медленной.
Такая система неплохо работала на гибких дисках, но с появлением жестких дисков появились проблемы. Корпорация Microsoft попыталась решить пробле­му, разрешив использовать дисковые блоки (кластеры) размером 1, 2 и 4 Кбайт. Это позволило сохранить структуру и размер таблицы FAT-12 и увеличить раз­мер дискового раздела до 16 Мбайт.
Так как система MS-DOS поддерживала до четырех дисковых разделов на диске, новая файловая система FAT-12 могла работать с дисками емкостью до 64 Мбайт.

 

106.Файловая система FAT-16.
ОС Windows 2000 поддерживает несколько видов файловых систем, самыми важными из которых являются FAT-16, FAT-32, NTFS. Файловая система FAT-16 –это старая файловая система MS-DOS. В ней используются16 разрядные дисковые  адреса, что ограничивает размер диска 2 Гб. Существует ограничение на корневой каталог – всего 512 элементов. Имя файла записывается в формате 8.3, где 8- имя файла, 3-расширение. Для каждого файла сохраняются атрибуты(архив, каталог, системный, скрытый, только для чтения, время последней записи, дата последней записи, номер начала кластера, размер файла в байтах). Атрибут архив создается при изменении информации в файле.
Зависимость размера кластера от размера диска.


Размер диска, Мб

Размер кластера, Кб

16-127

2

128-255

4

256-511

8

512-1023

16

1024-2047

32

 

71.Распределение памяти перемещаемыми разделами.
Одним из методов борьбы с фрагментацией является перемещение всех занятых участков в сторону старших либо в сторону младших адресов, так, чтобы вся свободная память образовывала единую свободную область (рисунок 2.11). В дополнение к функциям, которые выполняет ОС при распределении памяти переменными разделами, в данном случае она должна еще время от времени копировать содержимое разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей. Эта процедура называется "сжатием". Сжатие может выполняться либо при каждом завершении задачи, либо только тогда, когда для вновь поступившей задачи нет свободного раздела достаточного размера. В первом случае требуется меньше вычислительной работы при корректировке таблиц, а во втором - реже выполняется процедура сжатия. Так как программы перемещаются по оперативной памяти в ходе своего выполнения, то преобразование адресов из виртуальной формы в физическую должно выполняться динамическим способом.
Хотя процедура сжатия и приводит к более эффективному использованию памяти, она может потребовать значительного времени, что часто перевешивает преимущества данного метода

 

72.Виртуальная память.
Уже достаточно давно пользователи столкнулись с проблемой размещения в памяти программ, размер которых превышал имеющуюся в наличии свободную память. Решением было разбиение программы на части, называемые оверлеями. 0-ой оверлей начинал выполняться первым. Когда он заканчивал свое выполнение, он вызывал другой оверлей. Все оверлеи хранились на диске и перемещались между памятью и диском средствами операционной системы. Однако разбиение программы на части и планирование их загрузки в оперативную память должен был осуществлять программист.
    Развитие методов организации вычислительного процесса в этом направлении привело к появлению метода, известного под названием виртуальная память. Виртуальным называется ресурс, который пользователю или пользовательской программе представляется обладающим свойствами, которыми он в действительности не обладает. Так, например, пользователю может быть предоставлена виртуальная оперативная память, размер которой превосходит всю имеющуюся в системе реальную оперативную память. Пользователь пишет программы так, как будто в его распоряжении имеется однородная оперативная память большого объема, но в действительности все данные, используемые программой, хранятся на одном или нескольких разнородных запоминающих устройствах, обычно на дисках, и при необходимости частями отображаются в реальную память.
    Таким образом, виртуальная память - это совокупность программно-аппаратных средств, позволяющих пользователям писать программы, размер которых превосходит имеющуюся оперативную память; для этого виртуальная память решает следующие задачи:

    Все эти действия выполняются автоматически, без участия программиста, то есть механизм виртуальной памяти является прозрачным по отношению к пользователю.
Наиболее распространенными реализациями виртуальной памяти является страничное, сегментное и странично-сегментное распределение памяти, а также свопинг.
         Виртуальная память
         Виртуальная память (virtualmemory) - это просто набор чисел, о которых говорят как о виртуальных адресах. Программист может использовать виртуаль­ные адреса, но Windows не способна по этим адресам непосредственно обращать­ся к данным, поскольку такой адрес не является адресом реального физического запоминающего устройства, как в случае физических адресов и адресов файла подкачки. Для того чтобы код с виртуальными адресами можно было выполнить, такие адреса должны быть отображены на физические адреса, по которым дей­ствительно могут храниться коды и данные. Эту операцию выполняет диспетчер виртуальной памяти (VirtualMemoryManager - VMM). Операционная система Windows обозначает некоторые области виртуальной памяти как области, к которым можно обратиться из программ пользовательского режима. Все остальные области указываются как зарезервированные. Какие области памяти доступны, а какие зарезервированы, зависит от версии операционной системы (Windows 9x или Windows NT).
         
          Каждый процесс Win32 получает виртуальное адресное пространство (virtual address space), называемое также адресным пространством, или пространством процесса (process space), объем которого равен 4 Гб. Таким образом, код процесса может ссылаться на адреса с &Н00000000 по &HFFFFFFFF (или с 0 по 232 - 1 = 4 294 967 295 в десятичной системе счисления). Конечно, так как виртуальные адреса - это просто числа, заявление о том, что каждый процесс получает свое собственное виртуальное адресное пространство, выглядит довольно бессмысленным. (Это все равно, что сказать, что каждый человек получает свой собственный диапазон возраста от 0 до 150).

Тем не менее, это утверждение должно означать, что Windows не видит ни какой взаимосвязи в том, что и процесс А, и процесс В используют один и тот же виртуальный адрес, например &Н40000000. В частности, Windows может сопоставить (или не сопоставить) виртуальным адресам каждого процесса разные физические адреса

 

73.Распределение виртуальной памяти.
Каждая страница виртуального адресного пространства может находиться в од­ном из трех состояний:
Reserved (зарезервирована) - страница зарезервирована для использо­вания;
Committed (передана) - для данной виртуальной страницы выделена фи­зическая память в файле подкачки или в файле, отображаемом в память;
Free (свободна) - данная страница не зарезервирована и не передана, и по­этому в данный момент она недоступна для процесса.
Виртуальная память может быть зарезервирована или передана с помощью вызова API-функции VirtualAlloc:
LPVOID VirtualAlloc(
     LPVOID IpAddress,   //Адрес резервируемой или выделяемой области.
              DWORD dwSise,                         //Объем области.
     DWORD flAllocationType,          // Тип распределения.
              DWORD flProtect                         // Тип защиты от доступа.
);
Параметр flAllocationType может принимать значения следующих кон­стант (помимо других);
MEM_RESERVE - параметр, резервирующий область виртуального адресно­го пространства процесса без выделения физической памяти. Тем не менее, память может быть выделена при следующем вызове этой же функции;
МЕМ_СОММIТ - параметр, выделяющий физическую память в оперативной памяти или в файле подкачки на диске для заданного зарезервированною набора страниц.
Эти две константы могут объединяться для того, чтобы зарезервировать и выделить память одной операцией. Разделение процедур резервирования и передачи памяти имеет некоторые преимущества. Например, резервирование памяти является очень полезной про­цедурой с точки зрения практичности. Если приложению требуется большой объем памяти, можно зарезервировать всю память, а выделить только ту часть, которая нужна в данный момент, раздвигая, таким образом, временные рамки бо­лее трудоемкой операции выделения физической памяти.
Windows тоже использует этот подход, когда выделяет память под стек каждого вновь создаваемого потока. Система резервирует 1 Мб виртуальной памяти под стек каждого потока, но выделяет первоначально только две стра­ницы (8 Кб).

 

74.Защита памяти.
Параметр flProtect функции virtualAlloc используется для задания типа защиты от доступа, соответствующего вновь выделенной (committed) виртуальной памяти (это не относится к резервируемой памяти). Существуют следующие методы защиты:

Любые из этих значений, за исключением PAGE_NOACCESS, могут комбинироваться при помощи логического оператора OR со след двумя флагами:

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

 

75.Отображения виртуальной памяти. Два подхода к преобразованию виртуальных адресов в физические: статическое и динамическое преобразование. Адрес+смещение.
Страничный файл (pagefile), который называется также файлом подкачки (swapfile)  в Windows находится на жестком диске. Он используется для хранения данных и программ точно так же, как и физическая память, но его объем обычно превышает объем физической памяти. Windows использует файл подкач­ки (или файлы, их может быть несколько) для хранения информации, которая не помещается в RAM, производя, если нужно, обмен страниц между файлом подкачки и RAM.Таким образом, диапазон виртуальных адресов скорее согласуется с адресами в файле подкачки, чем с адресами физической памяти. Когда такое согласование достигается,  говорят, что виртуальные адреса спроецированы (backed) на файл подкачки, или являются проецируемыми на файл подкачки (pagefile-backed). Набор виртуальных адресов может проецироваться на физическую намять, файл подкачки или любой файл. Любой файл применяется для проецирования виртуальной памяти так же, как для этих целей используется файл подкачки. Фактически единственное назначение файла подкачки - проецирование (backing) виртуальной памяти.Поэтому файлы, проецируемые в память подобным образом, называются ото­бражаемыми в память (memory-mapped).
        Программа может использовать адреса, указыв на любое место вирт адр простр-ва, но для правильного вып-ия операций адрес должен быть преобразован в реальный адрес физической памяти. Есть 2 подхода:

  1. Статическое – при запуске программы все виртуальные адреса сразу преобразовываются в физические

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

 

76.Страничное распределение памяти.
Страничная организация памяти (paging)- это такой способ управления памятью, при котором пространство адресов памяти разбивается на блоки фиксированной длины, называемыми физическими страницами.(pageframe) . В этом случае адреса образуются подобно тому, как это делалось при сегментации пространства программных адресов. Каждый адрес представляет собой пару [p,d],  где р - имя страницы, а d - смещение относительно начала страницы.
Каждой программе ставится в соответствие таблица страниц, которая содержит список страниц, отводимых данной программе. Отдельная запись таблицы содержит:

Кроме того, существует специальный регистр - регистр таблицы страниц, где находится информация о местоположении таблицы страниц, соответствующей выполняемой в данный момент программе.
         Если во время выполнения программы встречается адрес [p,d], то по содержимому регистра страниц программа управления памятью находит таблицу страниц, где в р-ой записи находится информация, указывающая на искомую страницу. Следовательно, для того, чтобы добраться до необходимого слова требуется два обращения к памяти, как и в случае сегментации, одно - к таблице страниц, другое - к самой странице.
                       При каждом указателе местоположения страницы имеется признак, показывающий, присутствует ли данная страница в ОП. Если при проверке этого признака его значение “истина”, то страница находится в ОП и адрес вычисляется автоматически. Если значение признака “ложь”, то вырабатывается аппаратное прерывание, которое служит для супервизора сигналом для ввода в ОП соответствующей страницы - это событие называется прерыванием из-за отсутствия страницы.. Биты защиты гарантируют, что данная страница будет использоваться в соответствии с разрешенным для нее доступом, например, для чтения или для записи.
                       Всякая страничная система должна придерживаться определенных стратегий подкачек и вытеснения страниц. Первая стратегия - это правило, по которому выбирается страница для ввода в ОП. Вторая стратегия - какую страницу в ОП следует перекрыть, при условии, что другая страница уже подготовлена к вводу в ОП. Цель стратегий выборки и вытеснения - организация движения страниц, т.е. их перемещения из вспомогательной памяти в ОП и обратно.
                       Страничная организация памяти имеет многие преимущества, присущие сегментной организации. Однако фиксированная длина страниц приводит в важным различиям между двумя этими методами.

                       

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

 

77..Алгоритмы замещения страниц. «Оптимальный».
Предположим, что в ОП наход. некотор. набор страниц.К каждой из этих страниц происходит обращение команд процессора. Поэтому каждая страница может быть помечена числом равным кол-ву команд, к-рые будут выполняться перед первым обращением к этой странице. Оптимальный алгоритм предполагает выгружать из ОП виртуальную страницу с наибольшим этим числом.Однако, с этим алгоритмом связана проблема: его нельзя реализовать с 1-го раза, т.к.  в момент страничного прерывания ОС не знает, когда произойдёт следующее обращение к виртуальной странице.
Метод полезен для оценки других алгоритмов замещения страниц, а сам не используется в практике ОС.

 

78. Алгоритмы замещения страниц. «NRU». Бит R и M.
Алгоритм не использующихся в последнее время страниц.
Исходная информация-таблица страниц.
В таблице страниц есть бит обращения Reference R. Бит R принимает значение=1, когда к этой странице происходит обращение
M- модификация
Биты R и M находятся в дескрипторе таблиц страниц.
Биты R и M во всех страницах=0 периодически(например при каждом прерывании по таймеру) бит R очищается, чтобы отличить страницы, к к-м давно не происходило обращение от тех, на кот-е были ссылки. Когда возникает страничное прерывание, необходимо отобразить страницу из ОП ,то  ОС проверяет все страницы и делит их на 4 категории на основании текущих значений битов R и M.
0-M=0 R=0(не было ни обращений, ни изменений)
1-M=1 R=0
2-R=1 M=0
3-R=1 M=1

 

Алгоритм NRU удаляет страницу из ОП с помощью случайного поиска в непустом классе с наименьшим номером.

 

79.Алгоритмы замещения страниц. «FIFO».
Для всех стр. находящихся в оперативной памяти ОС поддерживает список в котором  первая стр. является старейшей, а стр. в хвосте списка попала в него недавно. Когда происходит страничное прерывание удаляется стр. находящаяся в голове списка, а новая стр. добавляется в хвост.
Алгоритм FIFO может выгрузить из памяти часть используемой страниц.

 

80.Алгоритмы замещения страниц. «вторая попытка».
Алгоритм FIFO может выгрузить из памяти часть используемой страниц, поэтому в алгоритме «вторая попытка» предлагается использовать значение бита R. Если он =0, значит стр. недолго находиться в памяти и не используется, поэтому она замещается новым, если же он =1, то ему присваивается значение 0 и стр. переносится в конец списка, а время ее загрузки обнуляется.

Алгоритм «вторая попытка» ищет в списке самую старую страницу, к которой не было обращений.

 

81.Алгоритмы замещения страниц. «часы».
Алгоритм «вторая попытка» является неэффективным, потому что он постоянно передвигает стр. по списку лучше хранить все стр. в кольцевом списке в форме часов, стрелка указывает на старейшую страницу. Если происходит страничное прерывание, то та стр. на которую направлена стрелка.  Если ее бит R =0, то стр. выгружается, а на ее место в часовой круг встает новая стр., а стрелка сдвигается вперед на 1 позицию. Если R=1, то он сбрасывается и стрелка перемещается к следующей стр. Этот процесс повторяется до тех пор пока не найдется стр. с битом R=0.

 

82.Алгоритмы замещения страниц. «LRU».
В основе лежит предположение, что страницы к которым происходило многократное обращение в нескольких последних командах вероятно так же будут использоваться и в дальнейшем. Те стр. к которым ранее не было обращений будут еще долго не использоваться.  В этом алгоритме строится матрица n x n бит. Когда происходит обращение к k-й странице, все биты строки k=1, а все биты столбца k=0.
n x n     k          BA              012321023
          

                         
А)0                         б)1                        в)2                        г)3                                 д)2

Удаляется  стр. у которой в строке наименьшее значение. Этот алгоритм сложно реализавать.

 

84.Алгоритмы замещения страниц. «старение».
Это модификация  NFU. Каждый счетчик сдвигается вправо на 1 разряд перед прибавлением значения бита R, бит R добавляется  в крайний слева, а не в крайний справа бит счетчика.
Пример: бит R    101011               110010              110101
   Тик0            тик1                тик2
               Тик0           1                2
0           1000         1100         1110
1           0000         1000         1100
2           1000         0100         0010
3           1000         0000         1000
4           1000         1100         0110
5           1000         0100         1010
Когда происходит страничное прерывание, удаляется та страница, чей счетчик имеет наименьшую величину.

 

85.Алгоритмы замещения страниц. «рабочий набор».
 «рабочий набор» - мн-во страниц которое процесс  использует в данный момент.
Текущее виртуальное время – время работы процессора, которое фактически использует процесс с момента запуска. В этом алгоритме выводится новое поле (для времени последнего использования).

При каждом страничном прерывании исследуется таблица страниц и ищется страница, подходящая для удаления из памяти.(проверяется R). Если он=1, то текущее виртуальное время  записывается в поле «время последнего использования». Если R=0, то к этой странице не было обращений в течение последнего тика часов. Она может быть кандидатом на удаление. Из списка кандидатов удаляется та страница, у которой максимальный возраст, который определяется как разность между текущим виртуальным временем и значением в поле  Время последнего использования. Если у всех страниц R=1, то удаляется случайная страница, у которой m=0. Если R=1 и m=1, то случайным образом выбирается и удаляется страница

 

86.Алгоритмы замещения страниц. «WSClock».
Модификация «рабочего набора». Основывается на часовом на часовом алгоритме. Для алгоритма необходима  структура страниц в виде кольцевого списка. Как и в случае алгоритма «часы» при страничном прерывании первой проверяется та страница, на которую указывает стрелка. Если бит R=1, то это означает, что эта страница не является кандидатом на удаление, если R=0, стрелка передвигается на следующую страницу. Страница проверяется m. Если m=0, то страница чистая, если m=1, страница «грязная» и стрелка делает движение вперед на 1 позицию. Если стрелка делает целый круг и возвращается в начальное положение, то выбирается страница с максимальным возрастом.

 

87. Аномалия Билэди
Интуитивно может показаться, что чем больше страничных блоков имеет память, тем меньше будет происходить страничных прерываний. Достаточно удивителен тот факт, что это не всегда так, Билэди описал обнаруженный им контрпример, в котором алгоритм FIFO вызывал больше страничных прерываний при четырех страничных блоках, чем при трех. Эта странная ситуация стала известна как аномалия Билэди. Она проиллюст­рирована на рис. 4.22 для программы с пятью виртуальными страницами, пронуме­рованными от 0 до 4. Буквы «Р» показывают, какие обращения вызывают странич­ные прерывания. Обращения к страницам происходят в следующем порядке:
012301401234
На рис. 4.22, а показано, как при наличии трех страничных блоков вызывается в целом девять страничных прерываний. На рис. 4.22, б изображены десять странич­ных прерываний при работе с четырьмя страничными блоками.

 

88. Сегментное распределение памяти.
Виртуальное адресное пространство каждого процесса делится на сегменты. Размер сегмента определяется с учетом смыслового значения содержащейся в ней информации. Максимальный размер – размерность процессора. Виртуальный адрес будет задаваться 2-мя числами: номер сегмента и линейный виртуальный  адрес внутри сегмента. При загрузке в оперативную память помещается только часть его сегментов, а полная копия виртуального адресного пространства находится на диске.
Происходит обработка в вирт.адресе к сегменту  который в данный момент отсутствует в оперативной памяти, то происходит прерывание ОС приостановлен активный процесс запускает на выполнение следующий процесс из очереди и параллельно организует загрузку необходимого сегмента с диска. При отсутствии места в оперативной памяти необходимого для загрузки  сегмента ОС выгружает какой-либо сегмент из оперативной памяти. Для каждого процесса создается таблица сегментов в операт.память.
1)Базовый физический адрес сегментов ОП
2)размер сегмента
3)правила доступа к сегменту
4)биты модификации обращения и присутствия.
Достоинство в том, что можно указать дифференцированные права доступа процесса к его сегментам.

 

89.  Сегментно-страничное распределение памяти.
Данный метод представляет собой  комбинацию страничного и сегментного  методов управления памятью. Каждый процесс предварительно делится на сегменты, а затем каждый виртуальный сегмент и опер.память делятся на страницы реального размера перемещения данных между опер.памятью и диском осуществляется страницами. Все вирт.сегменты представлены в виде одного непрерывного линейного виртуального адресного пространства. Однако в памяти баз адреса указывается не начальный физический адрес сегментов ОП, а начальный минимальный виртуальный адрес сегмента, в пространстве  виртуальных адресов процесса. Наличие этого адресав дескрипторе позволяет однозначно преобразовать адрес заданной парой чисел (номер сегмента и страницы) в миним. виртуальный адрес, который затем преобразуется в физический адрес с использованием страничного механизма.
1 этап. Работает механизм сегментации исходный виртуальный адрес, заданный в виде пары чисел преобразуется в линейный виртуальный адрес для этого на основании баз адреса таблицы сегментов (из регистра процессора) и номера сегмента вычисляется адрес дескриптора сегмента. Затем вычисляется линейный виртуальный адрес путем сложения баз адреса сегмента извлеченного из его дескриптора и смещение заданного в исходном виртуальном адресе.
2 этап. Работает страничный механизм. Размер страницы выбирается 2R тогда смещением будет являться  содержимое младших K разрядов, а старшие разряды содержат номер.
В дальнейшем старшие разряды линейного вирт.адреса заменяется номером физической страницы взятыми из таблицы страниц, а младшие разряды виртуального адреса содержащие смещение останутся без изменений.

 

90. Логическая организация ФС 
Представление пользователя о ФС как об иерархически организованном множестве информац-х объектов имеет мало общего с порядком хранения файлов на диске. Принципы размещ-я файлов, каталогов и системной инф-и на реальном устройстве описываются физической орг-й ФС.
Осн тип устройства, α используется в соврем выч системах для хранения файлов - дисковые накопители. Эти устр-ва предназначены для считывания и записи данных на жесткие и гибкие магнитные диски. Жесткий диск состоит из 1 или нескольких стеклянных или металлич пластин, каждая из α покрыта с 1 или 2 сторон магнитным материалом. Т.о., диск в общем случае состоит из пакета пластин. На каждой стороне каждой пластины размечены тонкие концентрические кольца — дорожки (traks), на которых хранятся данные. Количество дорожек зависит от типа диска. Нумерация дорожек начинается с 0 от внешнего края к центру диска. Когда диск вращается, элемент, называемый головкой, считывает двоичные данные с магнитной дорожки или записывает их на магнитную дорожку. Совокупность дорожек одного радиуса на всех поверхностях всех пластин пакета называется цилиндром {cylinder). Каждая дорожка разбивается на фрагменты, называемые секторами (sectors), так что все дорожки имеют равное число секторов, в которые можно максимально записать одно и то же число байт. Сектор имеет фиксированный для конкретной системы размер, выражающийся степенью двойки. Чаще всего размер сектора составляет 512 байт.
ОС  при работе с диском использует, как правило, собственную единицу дискового пространства - кластер. При создании файла место на диске ему выдел-ся кластерами.

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

 

91. Иерархическая структура ФС 

- одноуровневая организация
 

                                                
                                                                                                                                              - сеть (в UNIX)

-                                                                                               дерево

 

92. Типы файлов.

В системах UNIX и Windows проводится различие между регулярными (обыч­ными) файлами и каталогами. К регулярным файлам относятся все файлы, со­держащие инф-ю пользователя. Каталоги — это системные файлы, обеспечивающие поддержку структуры ФС   Символьные специаль­ные файлы имеют отношение к вводу-выводу и используются для моделирова­ния последовательных устройств ввода-вывода, таких как терминалы, принтеры и сети. Блочные специальные файлы используются для моделирования дисков. Регулярные файлы в основном являются либо ASCII-файлами, либо двоичны­ми файлами.

 

93. Имена фалов.
1.Простое имя
2. составное имя.
3. относительное
Составное имя – полное имя (путь к файлу)
Относительное имя – в рамках данного каталога.
Точные правила именования файлов варьируются от системы к системе, но все современные ОС  поддерживают использование в качестве имен файлов 8-символьные текстовые строки. Часто в именах файлов также разреша­ется использование цифр и специальных символов, Многие ФС  поддер­живают имена файлов длиной до 255 символов.

 

94. Атрибуты файлов.
У каждого файла есть имя и данные. Помимо этого все ОС  свя­зывают с каждым файлом также и другую инф-ю, например дату и время создания файла, а также его размер. Это атрибуты файла.

 

95. Логическая организация файла.
1)Смешанные – структуры никакой
2)Последовательные – все записи миеют одинак длину и располаг последов друг за другом. При чтении читается одна запись. При записи запичфв-ся одна запись.Запись имеют ключи, котор идентиф кажд запись.
3)Индексно-послед файл – записи располаг после д на основании ключ поля. Исп-ся файлы индексов и файл переполнения. Файл индексов обеспеч доступ.
4)Индексир-й файл – досту только по индексу.наиболее быстродейств-й.

5)Файл прям доступа (хеширование) – возможн-ть прям доступа к блоку с задан индексом (с известн адр). Кажд запись имеет ключ поле, но сами данн в неструктур виде. Исп-ся в задачах, треб-х быстр доступ к данным фиксир-й длины. Пример-каталоги, прайс-листы.

 

96. Файлы инициализации.
Windows дает приложениям возможность легко сохранить данные состояния в текстовых файлах стандартного формата, называемых файлами инициализации. Самыми известными примерами файлов инициализации являются WIN.INI и SYSTEM.INI. Они используются некоторыми версиями Windows для сохранения системных настроек, а также приложениями для сохранения их собственных данных инициализации. Windows также позволяет каждому приложению создавать и поддерживать собственные файлы инициализации.Каждый файл инициализации делится на секции. Каждой секции присваивается имя, заключенное в квадратные скобки: [имя секции]
Т.о., обобщенный формат записи выглядит так: имя ключа = строковое значение ключа.
[sounds]
SystemDefault=dmg.wav, Default Beep

В Windows NT большинство секций WIN.INI и других системных файлов инициализации отображается на реестр. Чтобы определить, какие секции файлов отображаются на реестр, загляните в раздел реестра HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\IniFileMapping. Если секция INI-файла отображается на реестр, функции работы с INI-файлами записывают данные прямо в реестр, и эти данные вообще не попадают в файлы инициализации.

 

97.Системный реестр.
когда вы хотите что-нибудь сделать, вы выбираете приложение, с которым вы собираетесь работать. Затем при помощи приложения вы обращаетесь к файлам на диске, содержащим нужные данные. Windows обеспечивает другой, документно-ориентированный подход. Вместо того чтобы выбирать приложение, вы выбираете данные, с которыми собираетесь работать. Далее ОС  выбирает нужное приложение. Благодаря новой технологии OLE документ может содержать много различных типов данных, каждый из которых может редактироваться отдельным приложением. Чтобы ОС  могла узнать, какое приложение связывается с тем или иным типом объектов, она должна располагать многочисленными данными и об объектах, и о приложениях. Все это содерж в реестре.
Архитектура реестра

Реестр чем-то напоминает миниатюрную ФС   Вместо файлов он содержит параметры (values), а вместо каталогов — ключи (keys). Все вместе образует инф-онную иерархию. Вместо одного корневого каталога в реестре Windows 95 и Windows NT находится несколько стандартных ключей.

 

98. Асинхронные файловые операции.

Одним из самых интригующих и потенциально полезных новшеств, поддерживаемых в Win32, является возможность перекрытия файловых операций. В Win16 вся пересылка данных из файла или в файл, выполняемая средствами API (или средствами Delphi), выполнялась в синхронном режиме. Другими словами, когда вы вызывали функцию пересылки данных, выход из этой функции происходил лишь после завершения пересылки. Длинные операции ввода/вывода приводили к заметным задержкам в работе программы. Win32 позволяет выполнять файловые операции в асинхронном режиме — выход из функции пересылки данных происходит немедленно, а ОС  завершает операцию в фоновом режиме. Подобные операции называются «перекрывающимися» (overlapped);

 

99. Файловое время.
В Windows существует механизм регистрации времени и даты создания файла и последнего обращения к нему. Эти данные хранятся в Win32 в виде 64-разрядной величины, содержащей количество 100-наносскундных интервалов с 1 января 1601 года. Величина хранится в структуре FILETIME
Файловое время обычно хранится в системе в формате координированного универсального времени (UTC), однако существуют функции для преобразования между UTC и местным временем. Структура FILETIME может содержать время UTC или местное время — вы сами следите за тем, какое время хранится в структуре. Также помните о том, что не все ФС  хранят одинаковую инф-ю времени или используют одинаковое разрешение при отсчете. Например, Windows 95 хранит файловое время с 2-секундным разрешением. В ФС   FAT сохраняется только время последней модификации. В Win32 также предусмотрены функции преобразования, работающие с файловым временем DOS. Файловое время DOS определяется в виде двух 16-разрядных чисел. Первое число содержит дату, где биты 0-4 определяют день (1-31), биты 5-8 — месяц (1 = январь, 12 = декабрь и т. д.), а биты 9-15 — год (0 соответствует 1980 году). Второе число содержит время, где биты 0-4 определяют количество секунд, деленное па 2, биты 5-10 — количество минут (0-59), а биты 11-15 — количество часов (0-23).  Функции, используемые при работе со структурами FILETIME, перечислены в следующей таблице.

 

100. Функций для работы с файлами и каталогами.


CloseHandle

Закрывает манипулятор файла (а также многие другие типы манипуляторов)

CopyFile, CopyFileEx

Копирует файл

CreateDirectory,-Ex

Создает новый каталог

CreateFile

Создает или открывает файл

DeleteFile

Удаляет файл

FindClose,findFirstFile,

+FindNextFile  Функции, упрощающие поиск файлов

FlushFileBuffers

Сохраняет изменения, внесенные в файл, на диске

GetBinaryType

Проверяет, является ли файл исполняемым

GetCompressedFileSize

Получает фактичобъем, заним сжатым файлом на диске

GetCurrentDirectory

Получает текущий каталог

GetDiskFreeSpace

Получает объем свободного места на диске

GetDriveType

Получает тип заданного дискового устройства

GetFileAttributes

Получает атрибуты файла

GetFileInformationByHandle

Получает инф-ю о файле

GetFileSize,-Ex

Получает размер файла

GetFileType

Получает тип файла по манипулятору файла

GetFullPathName

Получает полное имя файла

GetLogicaIDrives,

Получает список логичх дисков, опред-ых в системе

GetOvarlappedResult

Получает результат асинхронной файловой операции

GetShortPathName

Получает короткое имя файла

GetSystemDirectory

Получает путь к системному каталогу Windows

GetTempDrive

В Win32 не используется

GetTempFileName

Получает уникальное имя временного файла

GetTempPath

Получает путь к каталогу, выд под временные файлы

GetVolumelnformation

Получает инф-ю о дисковом томе

GetWindowsDirectory

Получает путь к каталогу Windows

SetFilePointer, -Ex

Переходит к заданной позиции в файле

LockFile, LockFileEx

Блокирует часть файла

Movefile, MoveFileEx

Перемещает файл

ReadFile, ReadFileEx

Читает данные из файла

WriteFile, WriteFileEx

Записывает данные в файл

QueryDosDevice

Получает инф-ю об именах логич устр-в DOS в системе

RemoveDirectory

Удаляет каталог

SearchPath

Ищет файл, используя станд посл-ть поиска Windows

SetCurrentDirectory

Задает текущий каталог

SetEndOfFile

Переходит к концу файла

SetFileAttributes

Задает атрибуты файла

SetVolumeLabel

Задает имя тома

UnlockFile,

Снимает блокировку с части файла

 

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

Номера версий обычно представляют собой 64-разрядные числа, позволяющие выполнять числовое сравнение версий. Тем не менее, их внутренняя структура заслуживает дополнительных пояснений. В старшем двойном слове старшие 16 бит содержат основной номер версии, а младшие 16 бит — дополнительный номер версии. Таким образом, для Windows 3.10 номер версии будет равен &H00030QOA. Значение 3 в старшем слове обозначает версию 3, а шестнадцатеричное А обозначает число 10 как дополнительный номер версии. Применение этой методики к младшим 32 битам позволяет еще лучше уточнять номера версий, но эти числа обычно используются только средой разработки и редко представляют интерес для прикладных программистов или пользователей.

 

102. Физическая организация файловой системы.
Файл сист хран на дисках. Большинство дисков дел на несколь­ко разделов с независ файл сист на каждом разделе. Сектор 0 диска называется главной загрузочной записью (Master Boot Record) и исполь­зуется для загрузки компьютера. В конце главной загрузочной записи содержится таблица разделов. В этой таблице хран нач и конеч адреса (номера блоков) каждого раздела. Один из разделов помечен в таблице как активный. При загрузке компьютера BIOS считывает и исполняет MBR-запись, после чего за­грузчик в MBR-записи определяет активный раздел диска, считывает его первый блок, называемый загрузочным, и исполняет его. Программа, находящаяся в за­грузочном блоке, загруж ос, содержащуюся в этом разделе. Для единообразия каждый дисковый раздел начинается с загрузочного блока, даже если в нем не содержится загружаемой операционной системы. К тому же в этом разделе может быть в дальнейшем установлена ос, поэтому зарезервированный загрузочный блок оказывается полезным.
Во всем остальном строение раздела диска меняется от системы к системе. Часто файловые системы содержат некоторые из элементов, показанных на рис, 6.8. Один из таких элементов, называемый суперблоком, содержит ключевые пара­метры файловой системы и считывается в память при загрузке компьютера или при первом обращении к файловой системе. Типичная информация, хранящаяся в суперблоке, включает «магическое» число, позволяющее различать системные файлы, количество блоков в файловой системе, а также другую ключевую адми­нистративную информацию.


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

 

103. Физическая организация и адресация файла.
Основными критериями эффективности физической организации файлов являются: скорость доступа к данным;  объем адресной информации файла;  степень фрагментированности дискового пространства;  максимально возможный размер файла.
Непрерывное размещение — простейший вариант физической организации, при котором файлу предоставляется последовательность кластеров диска, образующих непрерывный участок дисковой памяти. Основным достоинством этого метода является высокая скорость доступа, так как затраты на поиск и считывание кластеров файла минимальны. Также минимален объем адресной информации — достаточно хранить только номер первого кластера и объем файла. Данная физическая организация максимально возможный размер файла не ограничивает. Однако этот вариант имеет существенные недостатки, которые затрудняют его применимость на практике, несмотря на всю его логическую простоту. При более пристальном рассмотрении оказывается, что реализовать эту схему не так уж просто. Действительно, какого размера должна быть непрерывная область, выделяемая файлу, если файл при каждой модификации может увеличить свой размер?
Следующий способ физической организации — размещение файла в виде связанного списка кластеров дисковой памяти При таком способе в начале каждого кластера содержится указатель на следующий кластер. В этом случае адресная информация минимальна: расположение файла может быть задано одним числом — номером первого кластера. В отличие от предыдущего способа каждый кластер может быть присоединен к цепочке кластеров какого-либо файла, следовательно, фрагментация на уровне кластеров отсутствует. Файл может изменять свой размер во время своего существования, наращивая число кластеров. Недостатком является сложность реализации доступа к произвольно заданному месту файла
Связный список индексов.
При такой физической организации сохраняются все достоинства предыдущего способа: минимальность адресной информации, отсутствие фрагментации, отсутствие проблем при изменении размера. Кроме того, данный способ обладает дополнительными преимуществами. Во-первых, для доступа к произвольному кластеру файла не требуется последовательно считывать его кластеры, достаточно прочитать только секторы диска, содержащие таблицу индексов, отсчитать нужное количество кластеров файла по цепочке и определить номер нужного кластера. Во-вторых, данные файла заполняют кластер целиком, а значит, имеют объем, равный степени двойки.
Еще один способ задания физического расположения файла заключается в простом перечислении номеров кластеров, занимаемых этим файлом Этот перечень и служит адресом файла. Недостаток данного способа очевиден: длина адреса зависит от размера файла и для большого файла может составить значительную величину. Достоинством же является высокая скорость доступа к произвольному кластеру файла, так как здесь применяется прямая адресация, которая исключает просмотр цепочки указателей при поиске адреса произвольного кластера файла. Фрагментация на уровне кластеров в этом способе также отсутствует.

 

104.Физическая организация FAT.
Состоит из областей


Загрузочный сектор

FAT

FAT(копия)

Корневой каталог

Область данных

Загрузочный сектор 512б  Программа  начала загрузки ОС
FAT Основная копия которая содержит информацию о размещении файлов и каталогов
       Корневой каталог 32 сектора  Фиксированная область размером 32 сектора. Для размещения всех файлов и каталогов,                                            кроме корневого
FAT-это таблица массива индексных указателей, кол-во которых = кол-ву кластеров об-ти данных.
Индексный указатель может принимать след. значения:
0кластер свободен
- кластер исп-ся файлом, но не явл-ся последним кластером этого файла, в этом случае указатель содержит след. кластер, номер кластера, файла
- кластер явл-ся последним в файле
- дифферентный кластер
- резервные кластеры
Таблица FAT явл-ся общей для всех файлов этого логического раздела диска. В исходном состоянии кластеры свободны, поэтому индекс их также свободен. При размещении файлов ОС просматривает FAT в самом начале и после нахождения свободного индексного указателя ОС фиксирует его номер в поле (номер первого кластера в каталоге).

Хостинг от uCoz