План контрольной работы



Скачать 403.45 Kb.
страница2/3
Дата22.06.2019
Размер403.45 Kb.
ТипКонтрольная работа
1   2   3

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

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

В Linux полный объем адресного пространства равен 4Gb. Пространство делится на две области - пространство пользователя (нижние 3Gb) и пространство ядра (верхний 1Gb). Пространство ядра отображено во все пользовательские процессы, причем для него включена защита от доступа на уровне страниц от программ пользователя.

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

Пространство пользователя в каждом процессе разделено на непересекающиеся области, называемые vma, представляющие собой объекты с набором свойств и операции. Vma обладают свойством полиморфизма, то есть логика работы одних и тех же операций зависит от типа vma, что используется для реализации различных функций управления памятью, например виртуальной памяти. Полиморфизм реализуется по аналогии с таблицами виртуальных функций в C++, то есть каждый объект vma содержит в себе указатель на структуру, содержащую адреса функций, выполняющих определенные операции. Так, vma может быть объявлена как файл, спроецированный в память или участок разделяемой памяти. И в том и в другом случае при возникновении ситуации отсутствия страницы вызывается одна и та же функция обработки (адрес ее берется из структуры содержащей указатели на функции), но в случае спроецированного файла, происходит считывание его содержимого в память, а в случае разделяемой памяти происходит отображение страницы из процесса(-ов), разделяющего(-иx) память с текущим (или выделение новой страницы, если ни один разделяющий процесс еще не производил обращение к этой странице).

Операции поддержки динамического выделения памяти в Linux реализованы в run-time библиотеке языка С, которая, в большинстве случаев статически компонуется с библиотекой libc, реализующей интерфейс с ядром Linux. Библиотека libc реализует кучу (heap), пользуясь традиционным для UNIX механизмом brk. Карта памяти пользовательского процесса представлена на рисунке.

Значение brk для процесса - это граничная точка между пространством кучи процесса и свободной области памяти до стека, иными словами, brk - это максимальный допустимый адрес в куче. Куча растет вверх (с увеличением brk), а стек растет вниз. Стандартные функции распределения памяти malloc и free в libc с помощью системного вызова ядра меняют значение brk. Например, если malloc определяет, что для выделения блока не осталось места в пределах текущего brk, то она увеличивает brk. Аналогично, функция free уменьшает значение brk в случае отсутствия выделенных блоков ниже текущего brk до уменьшаемого значения.

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




3. Описание ОС Windows 98.
а. Введение.
С точки зрения базовой архитектуры, ОС Windows 98 является 32-разрядной многозадачной системой с вытесняющей многозадачностью. Ядро этой системы построено по макроядерной архитектуре.

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

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

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

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


  • Динамическое изменение приоритета. Диспетчер может на время повысит или понизить приоритет того или иного потока.

  • Постсинхронизированное снижение приоритета. Ранее повышенное значение приоритета постепенно возвращается к исходному значению.

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

Ядро ОС Windows 98 состоит из трех компонентов: Kernel, User и GDI. Модуль Kernel обеспечивает основную функциональность ОС, в том числе:



  • планирование процессов;

  • поддержку потоков выполнения;

  • синхронизацию объектов;

  • работу с файлами, отображаемыми на память;

  • управление памятью;

  • файловый ввод-вывод;

  • обработку исключений;

  • работу консолей;

  • взаимодействие 32-разрядного и 16-разрядного кода с преобразованием посредством механизма шлюзования;

  • некоторые другие функции.

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

Наконец, компонент ядра GDI (Graphical Device Interface) представляет собой графическую подсистему, которая отвечает за:



  • прорисовку графических примитивов;

  • операции с растровыми изображениями;

  • взаимодействие с аппаратно-независимыми графическими драйверами.

ОС Windows 98 централизованно хранит всю системную информацию об аппаратных средствах, установленном системном и прикладном программном обеспечении и его настройке. Такая централизованная информационная база данных называется реестром. Физически содержимое реестра определяется файлами system.dat и user.dat, которые располагаются в каталоге с файлами операционной системы.

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

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

Драйверы файловых систем являются компонентами кода с нулевым уровнем привилегий. Они поддерживают следующие файловые системы:



  • VFAT (Virtual FAT) – файловые операции на дисковых устройствах и взаимодействие с подсистемой блочного ввода-вывода;

  • CDFS – работа с компакт-дисками;

  • UDF – файловая система, предназначенная для доступа к дискам DVD-ROM и CD-ROM;

  • сетевые редиректоры для обеспечения связи с серверами Microsoft и Novell (Netware).

Все эти файловые системы управляются диспетчером устанавливаемых файловых систем (IFS). Помимо перечисленных в ОС можно установить и иные файловые системы. По умолчанию ОС Windows 98 позволяет работать с файловой системой FAT12 (для работы с дискетами), FAT16 и FAT32. Последняя является основной для этой ОС.

ОС Windows 98 является сетевой. В дистрибутив входит всё необходимое системное сетевое ПО, которое легко и быстро устанавливается и конфигурируется. Используется программный интерфейс NetBIOS и технология SMB (Server Message Blocks). ОС главным образом предназначена для работы в составе рабочих групп, то есть для построения одноранговых вычислительных сетей, хотя и допускается работа в составе домена в сетях клиент-сервер. Однако, использовать эту ОС в корпоративных сетях не рекомендуется, поскольку существенным образом начинает страдать информационная безопасность.


b. Файловая система.
Основной файловой системой для Windows 98 является FAT32. Эта файловая система является расширением файловой системы FAT, поэтому вначале рассмотрим ее особенности.

Файловая система FAT (File Allocation Table — таблица размещения файлов) по­лучила свое название благодаря простой таблице, в которой указываются:



  • непосредственно адресуемые участки логического диска, отведенные для раз­мещения в них файлов или их фрагментов;

  • свободные области дискового пространства;

  • дефектные области диска (эти области содержат дефектные участки и не га­рантируют чтение и запись данных без ошибок).

В файловой системе FAT дисковое пространство любого логического диска де­лится на две области: системную область и область данных.





















BR




RSec



FAT1




FAT2




RDir




Каталоги и файлы





















Системная область




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









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



  • загрузочной записи (Boot Record, BR);

  • зарезервированных секторов (Reserved Sectors, ResSec);

  • таблицы размещения файлов (File Allocation Table, FAT);

  • корневого каталога (Root Directory, RDir).

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

Каждый файл занимает целое число кластеров. Последний кластер при этом мо­жет быть задействован не полностью, что при большом размере кластера может приводить к заметной потере дискового пространства. На дискетах кластер зани­мает один или два сектора, а на жестких дисках его размер зависит от объема раз­дела. В таблице FAT кластеры, принадлежащие одному файлу (или файлу-каталогу), связываются в цепочки. Для указания номера кластера в файло­вой системе FAT32 используется 32-разрядное слово, в котором учитываются фактически только 28 разрядов, следовательно, можно иметь до 228 = 268435456 кластеров (с номерами от 0 до 268435455).

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

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


  • прежде всего, уменьшается размер самой таблицы FAT;

  • уменьшается возможная фрагментация файлов;

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

Однако слишком большой размер кластера ведет к неэффективному использованию области данных, особенно в случае большого количества маленьких файлов. В среднем на каждый файл теряется около половины кластера. Следовательно, что при размере кластера в 32 сектора, то есть 16 Кбайт, средняя величина потерь на файл равняется 8 Кбайт, и при 20000 файлов потери могут со­ставлять около 155 Мбайт. Поэтому в современных файловых системах размеры кластеров ограничиваются (обычно от 512 байт до 4 Кбайт), либо предоставляет­ся возможность выбирать размер кластера.

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

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

Структура загрузочной записи для FAT32:



Смещение поля,

байт


Длина поля,

байт


Обозначение

поля


Содержимое поля

00h (0)

3

JUMP 3EH

Безусловный переход в начало системного загрузчика

03h (3)

8




Системный идентификатор

0Bh (11)

2

SelectSize

Размер сектора, байт

0Dh (13)

1

ClastSize

Число секторов в кластере

0Eh (14)

2

ResSecs

Число зарезервированных секторов, для FAT32 равно 32

10h (16)

1

FATcnt

Число копий FAT

11h (17)

2

RootSize

0000h

13h (19)

2

TotSecs

0000h

15h (21)

1

Media

Дескриптор носителя

16h (22)

2

FATsize

0000h

18h (24)

2

TrkSecs

Число секторов на дорожке

1Ah (26)

2

HeadCnt

Число рабочих поверхностей

1Ch (28)

4

HidnSecs

Число скрытых секторов (располагаются

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



20h (32)

4




Число секторов на логическом диске

24h (36)

4




Число секторов в таблице FAT

28h (37)

2




Расширенные флаги

2Ah (38)

2




Версия файловой системы

2Ch (39)

4




Номер кластера для первого кластера корневого каталога

34h (43)

2




Номер сектора с резервной копией загрузочного сектора

36h (54)

12




Зарезервировано

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



Поделитесь с Вашими друзьями:
1   2   3


База данных защищена авторским правом ©vossta.ru 2019
обратиться к администрации

    Главная страница