Что такое страничная организация памяти. Страничная организация памяти. Назначение и функции программной системы

Страничная организация виртуальной памяти

В большинстве современных операционных систем виртуальная память организуется с помощью страничной адресации. Оперативная память делится на страницы: области памяти фиксированной длины (например, 4096 байт), которые являются минимальной единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к выделению ему страницы памяти). Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Процессор преобразует номер виртуальной страницы в адрес соответствующей ей физической страницы при помощи буфера ассоциативной трансляции. Если ему не удалось это сделать, то требуется обращение к таблице страниц (так называемый Page Walk), что может сделать либо сам процессор, либо операционная система (в зависимости от архитектуры).

(слайд №12)

Рис. 16.4. Пример страничной организации.

Страничная организация (paging) – стратегия управления памятью, при которой:

· логическая память делится на страницы смежные области одинаковой длины, обычно – степень 2 (например, 512 слов);

· физическая память, соответственно, делится на фреймы такого же размера;

· распределение логической памяти происходит с точностью до страницы;

· физическая память процесса может не быть непрерывной;

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

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

Цели страничной организации – обеспечить возможность не смежного распределения физической памяти для процессов, а также расширить пространство логической памяти.

На рис. 16.4 приведен пример страничной организации, который демонстрирует, что, в отличие от непрерывной логической памяти процесса, соответствующие фреймы страниц в основной памяти могут быть расположены не смежно: логической странице 0 соответствует фрейм 1, странице 1 – фрейм 4, странице 2 – фрейм 3, странице 3 – фрейм 7.

(слайд №13)

Рис. 16.5. Пример страничной организации блоками по 4 страницы.

На рис. 16.5 приведен другой возможный пример страничной организации: логическая и физическая память разбита на блоки по 4 страницы подряд; в таблице страниц хранится не номер страницы, а номер блока страниц. Например, в элементе 0 таблицы страниц хранится номер блока 5, по которому адрес начала блока вычисляется домножением содержимого элемента таблицы страниц на размер блока, равный 4 (результат – 20).



Реализация таблицы страниц

Использование ассоциативной памяти. Таблица страниц – непрерывная область физической памяти. В системе имеется базовый регистр таблицы страниц (page table base register – PTBR), указывающий на таблицу страниц и хранящий ее длину.

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

(слайд №14)

Рис. 16.3. Архитектура трансляции адресов при страничной организации.

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

(слайд №15)

Рис. 16.7. Схема трансляции адресов с использованием ассоциативной памяти.

Проблема двух обращений решается введением ассоциативной памяти (cache) страниц, называемой также буфер трансляции адресов (translation lookaside buffer – TLB). Ассоциативная память, по существу, является ассоциативным списком пар вида: (номер страницы, номер фрейма). Ее быстродействие значительно выше, чем у основной памяти и у регистров.

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

Модифицированная схема трансляции адресов с использованием TLB иллюстрируется рис. 16.7 .

Страничная организация памяти применяется только в защищенном режиме , если в регистре управления CR0 бит PG = 1.

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

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

Для 32-разрядного микропроцессора:

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

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

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



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

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

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

Перевод виртуальных адресов в физические проиллюстрирован на рис. 3.12.

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

Рассмотрим пример преобразования адреса виртуальной страницы в адрес физической страницы. Пусть компьютер использует адресное пространство, предполагающее разбиение на страницы объемом V стр = 1I, и имеет оперативную память V ОЗУ = 3 страницы. Пусть на компьютере одновременно выполняются четыре программы, имеющие следующее количество страниц: V A = 2, V B = 1, V C = 3, V D = 2. Переключение между программами происходит через время кванта t k = 1. Время выполнения каждой страницы любой программы составляет t = 2t k . Полагаем, что страницы программ загружаются в оперативную память по мере необходимости и по возможности в свободные области ОЗУ. Если вся память занята, то новая страница замещает ту, к которой дольше всего не было обращений.

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

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

Таблица 3.2. Пример страничного распределения памяти в мультипрограммной ЭВМ
Страница Такты
Динамическое распределение оперативной памяти
ОЗУ 0 АО АО АО DO DO DO CO CO CO C1 C1 C1 C1 C1 C1 C1
B0 B0 B0 A0 A0 A0 D0 D0 D0 D1 D1 D1 D1 D1 D1
C0 C0 C0 B0 B0 B0 A1 A1 A1 A1 A1 A1 C2 C2
Таблица страничного преобразования для программы А
A 0 - - - - - - - - - - -
- - - - - - - - - -
Таблица страничного преобразования для программы В
B 0 - - - - - - - - - -
Таблица страничного преобразования для программы С
С 0 - - - - - - - - - -
- - - - - - - - -
- - - - - - - - - - - - - -
Таблица страничного преобразования для программы D
D 0 - - - - - - - - - -
- - - - - - - - - -

Если каждая страница имеет объем 1000 адресуемых ячеек, то, например, в такте 9 обращение по виртуальному адресу 1100 программы A (виртуальная страница 1, смещение в странице равно 100) приведет к обращению по физическому адресу 2100 (физическая страница 2, смещение в физической странице такое же, как и в виртуальной, то есть 100).

Рассмотрим теперь применение этих общих принципов страничного преобразования адреса в микропроцессоре с архитектурой IA-32 при объеме страницы в 4 Кбайт.

Основой страничного преобразования служит 32-разрядныйлинейный адрес , полученный на этапе сегментного преобразования логического адреса . Страничное преобразование выполняется при значении бита PG = 1 в управляющем регистре CR0.

В этом случае старшие 20 разрядов линейного адреса фактически представляют собой номер виртуальной страницы. Однако при прямом одноступенчатом преобразовании этого номера в номер физической страницы необходима таблица из 2 20 элементов длиной 4 байта каждый (20-разрядный номер страницы плюс некоторая дополнительная информация), т. е. 4 Мбайт. В мультипрограммной среде такая таблица может потребоваться для каждой задачи. Эта таблица должна постоянно храниться в оперативной памяти, чтобы существенно не увеличивать время формирования физического адреса. Для этих целей потребуется постоянное резервирование существенной части емкости ОЗУ, что на этапе появления первых ЭВМ на основе МП с архитектурой IA-32 было практически невозможно.

Вместо этого микропроцессор использует двухступенчатое страничное преобразование адреса. Корневая страница, называемая каталогом таблиц страниц (КТС), содержит 1024 32-разрядных элемента каталога таблиц страниц (ЭКТС - PDE page directory entry). Каждый из них адресует подчиненную таблицу страниц (ТС), то есть всего допускается до 1024 подчиненных таблиц страниц. Каждая из таблиц страниц содержит 1024 32-разрядных элемента таблицы страниц (ЭТС - PTE page table entry), каждый из которых и адресует физическую страницу. Таким образом, общее количество адресуемых физических страниц равно 2 20 , то есть все виртуальное адресное пространство (4 Кбайт * 220 элементов = 2 32 байт). Каждая таблица занимает 1024 4 = 4 Кбайт, то есть ровно 1 страницу. Общий объем таблиц, используемых для страничного преобразования, не уменьшился, а даже несколько возрос за счет использования каталога таблиц страниц. Однако, вопервых, практически всегда в системе этот размер можно существенно уменьшить за счет того, что некоторые линейные адреса никогда не будут сформированы (а эту информацию дают таблицы дескрипторов сегментов), и для них не нужно создавать таблицу страниц. А во-вторых, в оперативной памяти должны постоянно находиться лишь каталог таблиц страниц и таблица страниц выполняемой в настоящее время программы. Остальные таблицы страниц могут временно храниться во внешней памяти.

Рис. 3.13. Страничное преобразование линейного адреса в физический

Таким образом, преобразование линейного адреса в физический имеет вид, представленный на рис. 3.13.

Старшие 20 разрядов линейного адреса разбиваются на два 10-разрядных поля: поле номера элемента каталога таблиц страниц и поле номера элемента таблицы страниц . Так как и каталог таблиц страниц , и каждая таблица страниц занимают ровно 1 страницу и выровнены по границе страницы, то младшие 12 разрядов их базового адреса равны нулю, и для определения их физического адреса достаточно 20-разрядного поля.

Для каталога таблиц страниц его 20-разрядный адрес находится в регистре управления CR3. КТС постоянно находится в памяти и не участвует в свопинге.

Старшие 20 разрядов физического адреса таблицы страниц извлекаются из ЭТС. Структуры элемента КТС и элемента ТС схожи (рис. 3.14).

Рис. 3.14. Структура элементов каталога таблиц страниц и таблицы страниц

Старшие 20 разрядов элемента дают базовый адрес таблицы страниц (в ЭКТС) или физической страницы (в ЭТС). Биты P, A, R/W и U/S имеют определенное сходство с аналогичными атрибутами дескриптора сегмента, другие биты имеют специфическое назначение.

Бит присутствия P показывает, отображается ли адрес страничного кадра (таблицы страниц или страницы памяти) на страницу в физической памяти. При P = 1 страница присутствует в ОЗУ. При P = 0 страницы в памяти нет, и обращение к этой странице вызывает прерывание типа "страничное нарушение".

Бит доступа А устанавливается микропроцессором в состояние А = 1 при обращении к данному страничному кадру для записи или чтения информации.

Бит модификации D (Dirty - "грязный") устанавливается процессором равным 1 в элементе ЭТС при записи на данную страницу. Для элементов каталога таблиц страниц значение бита D является неопределенным. При загрузке страницы в память операционная система сбрасывает бит D. Если при необходимости выгрузки страницы во внешнюю память оказывается, что для нее D = 0, это означает, что к странице в памяти не было обращений на запись, во внешней памяти есть ее точная копия, и реально передавать страницу из памяти на диск не нужно. Тем самым экономится время при свопинге.

Бит чтения-записи R/W и бит U/S (user/supervisor - пользователь/супервизор) определяют права доступа к таблице страниц или к странице для программ с различными уровнями привилегий. Для страниц существует только 2 уровня привилегий: уровень супервизора (U/S = 0), соответствующий значению DPL сегмента 0, 1, 2, и уровень пользователя (U/S = 1), соответствующий DPL = 3. Если к странице осуществляется запрос с уровнем привилегий 3 (программы пользователя), то при значении U/S = 0 ему запрещается доступ к соответствующей таблице или странице. Если U/S = 1, то при значении R/W = 0 разрешается только чтение таблицы или страницы, а при R/W = 1 - и чтение, и запись.

При запросах с большими привилегиями (системные программные уровни 0, 1, 2) допускается з0апись и чтение таблиц и страниц при любых значениях U/S, R/W (табл. 3.3).

Биты PWT и PCD используются для управления работой кэш-памяти при страничной адресации. Бит PCD - запрещение кэширования страницы. При PCD = 1 кэширование запрещено. Бит PWT - бит обратной записи страниц. Определяет метод обновления внешней кэш-памяти (кэш 2-го уровня). При PWT= 1 - обновление проводится методом сквозной записи (как для внутреннего кэша), при PWT = 0 - методом обратной записи.

Биты 9…11 в ЭКТС и ЭТС зарезервированы за операционной системой. Процессор никогда не использует и не изменяет эти биты. Разработчики ОС могут привлечь эти биты для хранения информации о "старении" страниц, чтобы определять страницы, подлежащие замене из внешней памяти, и для других целей.

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

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

Последние 12 разрядов линейного адреса содержат смещение в странице. Таким образом, сумма смещения в странице и базового адреса страницы, извлеченного из ЭТС, дает физический адрес искомого байта.

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

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

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

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

Сегментация памяти



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

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


СПЕЦИАЛЬНАЯ ЧАСТЬ

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

Разработанная база данных «Поликлиника» предназначена для использования в медицинских учреждениях. Основной функцией является хранение данных и простота поиска историй болезни пациентов поликлиники.

Основные объекты:

1) пациенты;

2.2. Системные требования

Для работы базы данных необходимы следующие ресурсы:

· процессор Pentium 133 или выше;

· минимальный объем оперативной памяти - 32 Мбайт;

· жесткий диск с объемом свободного пространства не менее 100 Мбайт;

· CD-ROM, клавиатура, мышь.

Для запуска данной базы данных требуется Visual Fox Fox Pro 6 и операционную систему: Windows 98/ME/NT 4.0/2000/XP.

Основные объекты данной информационной системы:

· «Сведения о врачах» - содержит данные о врачах;

· «Сведения о пациенте» - содержит личные данные пациента;

· «Учет поступления, выписок» - содержит информацию о диагнозе и времени пребывания пациентов в больнице.

Связывание таблиц

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

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

Гораздо чаще встречается связь «один ко многим», при которой для каждой записи в одной таблице существует одна, несколько или ни одной записи в другой таблице.

Нередко приходится иметь дело также со связью «многие ко многим», при которой отсутствуют ограничения на множества пар записей, принадлежащих связи. Такая связь в Access не используется. Ее необходимо представить в виде двух связей «один ко многим».

С базе данных «Поликлиника» таблицы связаны друг с другом двумя связями «один ко многим».


Запросы

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

Таблица 3 «Функции и выполняемые операции»

Перечень запросов, применявшихся в данной базе данных приведен ниже.

Запрос «Врачи и их пациенты»

Запрос «Врачи и их пациенты» позволяет вывести фамилии врачей, работающих по данной медицинской специальности.

Запрос «Время пребывания в больнице»

Запрос «Время пребывания в больнице» позволяет узнать продолжительность нахождения пациента на стационарном лечении.

Запрос «Пациенты-женщины»

Запрос «Пациенты-женщины» отображает пациентов женского пола

Запрос «Пациенты, лежавшие неоднократно»

Запрос «Пациенты, лежавшие неоднократно» выводит пациентов, которые лежали в больнице более одного раза.

Запрос «Пациенты-пенсионеры»

Запрос «Пациенты-пенсионеры» отображает всех пациентов, достигших пенсионного возраста.

Запрос «Подбор специальности врача по диагнозу»

Запрос «Подбор специальности врача по диагнозу» позволяет, путем ввода диагноза при запуске запроса определить специализирующегося на данной болезни врача.

Формы

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

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

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

В Access 2007 существует несколько способов создания форм:

Таблица 4 Способы создания форм

Существует несколько разновидностей автоформ:

Форма - создание формы для ввода данных по одной записи за раз

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

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

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

Перечень форм, применявшихся в данной работе приведен ниже:

Форма «История болезни»

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

Главная кнопочная форма

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

Форма «Сведения о врачах»

Форма «Сведения о врачах» представлена в ленточном виде и показывает ФИО врача и его специальность.

Форма «Сведения о пациенте»

Форма «Сведения о пациенте» представляет собой ленточный тип формы, показывающей данные о пациенте.


Отчеты

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

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

Использование отчетов имеет следующие достоинства:

· данные могут быть представлены в удобной для чтения и анализа форме;

· отчет позволяет включать и печатать графические объекты (например, диаграммы);

· обеспечивается возможность работы с материалом, напечатанным на бумаге.

Отчеты можно создавать двумя способами:

1) при помощи мастеров отчетов/автоотчетов;

2) «вручную».

Отчет «Врачи по специальности»

Отчет «Врачи по специальности» построен в виде макета «структура» с уровнем группировки по специальности врача и отображает всех врачей поликлиники по конкретной сепциальности.

Отчет «Пациенты-пенсионеры»

Отчет «Пациенты-пенсионеры» показывает всех пациентов пенсионного возраста.

Отчет «Учет поступления, выписок»

Отчет «Учет поступления, выписок» выполнен с уровнем группировки представления данных по ФИО пациента и позволяет просмотреть данные о диагнозах, поступлениях и выписках пациентов


Макросы

Удобно разрабатывать макросы для автоматизации несложных процессов, таких как открытие и закрытие форм и отчетов, вывод на экран или печать документов и т.д. Окно макросов включает четыре столбца: Имя макроса, Условие, Макрокоманда, Аргументы, Примечание.

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


ЗАКЛЮЧЕНИЕ

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

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


СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Дейт К. Дж. Введение в системы баз данных / Пер. с англ. 6-е изд. К.:Диалектика, 1999.

2. Замулин А. В. Системы программирования баз данных и знаний. Новосибирск.: Наука. Сиб. Отд., 2002.

3. Мартин Дж. Организация баз данных в вычислительных системах. / Пер. с англ. М.: Мир, 2000.

4. Романов Б. Л., Кушниренко А. С. dBase IV. Назначение, функции, применение. М.: Радио и баз данных, 1999.

5. Ульман Дж. Основы систем баз данных. М.: Финансы и статистика, 2003.

6. Бородаев В. А., Кустов В. Н. Банки и базы данных. Уч. пособие. Л.: ВИКИ, 2000.

7. Кузнецов С. Д. Введение в СУБД: часть 4.// Системы Управления Базами Данных, №4, 1999. - С. 114-122.

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

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

Такой способ одно уровней адресации только для больших страниц 4мб используется только Ос, пользовательские приложения в такой в режиме не работают

Двухуровнивая адрессация. Для каждого приложения используется каталог страниц(Page Directory) и таблица страниц. В каталоге задаются адреса таблиц страниц. Весь адрес разделяется на 3 составляющие

А0 определяет смещения внутри страницы

А1 определяет номер строки в таблице строки(не более 1024 строк). Каждая такая строка должна содержать адрес начало страницы. Размер страниц также составляет 4кб, то есть одной странице.

В резульате такая таблица может задавать пространство 1024 страницы или 4мб. Если для како-го приложения известное памяти, можно определить количесвто страниц.

А2 определяет номер строки в каталоге страниц,(не болие 1024) размер тоже 4кб. В памяти обезательно должен присуствовать каталог, причем ардес его управляещго храниться в регистре CR2.При объедение А0 и А2 можно получить значения смещения внутри страницы, но большего размера.

Трехуровневая страничная адресация. Адрес разделяется на 4 компонента

А3 А2 А1 А0

Размер самой таблицы остается по 4кб но размер строки увеличивается в 2 раза.

А3 определяет одной из 4 таблицы каталога. При 3уровней страничной адрессаци можно использовать большие страницы 2 мб обеднив А1 А0 . наличия или отсутствие конкретной памяти отслеживает сам процесс с помощью механизма прерывания. Памятть для кодов программа, данных выделяться по страничной адрес начала страницы кратен его длине, если какой-то участок данных находиться в конце страницы создаеться новая страниц. При разработке критичных по памяти, нужно знать размер страницы и выравнивать, адрес начала страницы в том числе страницы и каталога всегда кратны размеру страницы, и по этму в любой из расмотреном варианте младший 12 бит адреса страницы свободны. В таблице используют для хранения дополнительной информации о страницы. Дополнительная информация о странице позволяет задать: признак тирпа страницы для записи или чтения, признак присутствия страницы в памяти, уровень привилегий страницы, признак были изменения в данной страницы(необходимо для анализа целостобрастности в случае ее сброса записать на диск, устанавливаеться просором при доступае тсрнице в режиме записи а сбрасывается программным анализом) признак, имел ли место доступ к данной страницы, режимы использования кеша. При использовании больших таблиц и страниц, в строке каталога указываеться что он соответствует на таблице а большой таблице. На паратном уровне процессор позволяет коретно использовать страницы трьох размеров, задавать режими доступа и уровень привелегий. Если страница осуствует в памяти процесор генерирует исключения которое обрабатывает ОС.

Действия обработчика исключений:

1) Найти свободную страницу или осводить занятую если свободных нет

2) Загрузить страницу в память

3) Записать адрес в Page Table при необходимости выполнить необходимости …

4) Обновить страницы кэш-страниц

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

Задание страничной адресации (5 шагов+управляушие регистры)

Стратегия загрузки и выгрузки страниц

При использования регулярно надо решать такие вопрсы:

1) Определять какие именно нужно удалить из памяти

2) определить какие страницы загружены

3) определить методы загрузки выгрузки страницы

Страницы удаляться из памяти если для них не хватает объёма реальной памяти. Страницы занятые ядром ОС не выгружаются. Для решения вопрос по выгрузке страницы используеться такие подходы:

1) Оптимальный алгоритм – для выгрузки страницы выбирается страницы в которой не было не одного обращения. Недосток 6 необходими хнать историю работы с каждой таблицы.

2) Алгоритм с предварительным анализом, анализируется страницы, которые должны вызываться в очередных командах активных процессов. Страницы которые должны использоваться далее из памяти не выгружаются. Недостатки: нужен анализ процесов для определения необходимых им страниц.

3) Случайный – выгружаемая таблица определяется случайно, при этом информация для использования их или далие, но не исключено что информация может далие использоваться

4) Хронологический – выгружаются из памяти именно в том порядке в котором они были загружены. Недостакти: таблица может понадобиться.

5) Хронологический порядок с учетом использования(List R..Using)1 – выгражеться страница которая не использовалась большое времяю для определния таких страниц формируеться не очередь а список использованых таблиц. Использована записываеться в конец такого сиска, для выгрузки выбераються страницы первые в этом списке. Недостаток: может выгружена страница необходимая на следушим шаге выполнения. Он найболие часто используется в современных ОС.

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

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

Глобальный метод – владеет все множеством выделяемой при необходимости независимо от приложения для которго эти страницы выделены(для всех приложений используеться централизованный механизм управлении). В таком случае ее нужно храниться к камоу приложению она принадлежит.

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

1) Увеличения объема физической памяти

2) Ограничения количества активных процессов

3) Сокращения необходимого объёма памяти выделяемого для процесса

4) Специальный алгоритмы выделения страниц.

Механизмы управление памяти

Для работы с памяти используется 3 основных механизмов

1. Виртуальная память для работы с большими объемами

2. Отображения файлов на памяти(нужна быстра обработка или произвольна я обработки а также создния памяти разделяемой между процессами)

3. «Кучи» - механизм выделения небольших объемов памяти для приложения

Использования виртуальной памяти – для выделения регоина памяти(большого объема памяти) служит функция

LPVOID VirtualAlloc(

LPVOID lpAdress,//начальный адрес выделяемого участка(выравнивается на границу 64кб, если памяти выравнивается то адрес должен выровнены на начало страницу, при первом выделения памяти имеет значени NULL)

DWORD lpSize,//размер выделяемого памяти в кб (регион), если первый параметр NULLто ббудет увеличин до границы страницы

DWORD flAllcocationType,//тип операции выделения(либо одиночный или комбинаций флагов) таблица бондаренко 6,1 атрибуты ехе не поддерживается

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

Сиситаема инициализировать и разервирует,при попытке доступа к таклой памяти, после завершения процеса ОС освобождает все закрепленые за ним страницы. Функция VirtualAllocможет заново связать. Физическую памяти связаную с конткретнвми страницами можно освободить с помощью функции vitualFree. Для долговреной ного хранения памяти лучше выделать в страницах адресах. В этом случае в адресе передаться NULL и устанавливается флаги MEM_RESERVE, MEM_TOP_DOWN/ для резервирования под регион рекомендубъю задавать атрибут защиты наиболее общий. Выделяя виртуальной память можно задавать все атрибуты защиты кроме тех которые предназначены связаны с физической памяти: PAGE_WRITECOPY, PAGE_EXECUTE_WRITECOPY, PAGE_GUARD, PAGE_NOCAСHE.

Можно выделить не весь участка физической памяти только часть. Если размер выделяемой памяти совппадет с размеор связаной памяти то можно не 2 раза вызывать функцию а задавать флаги MEM_COMMIT|MEM_RESERVE. ДЛЯ возвращения физической памяти используеться фугкци мшкгфдаккус параметром адрес начала памяти, размер участка и MEM_DECOMMIT, если размер указать размер 0 то освобождается вся память, если в памяти происходить обращния то происходить ошибка. Для освобождения траниц существует 3 варианта

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

2. Создаться битовая карта занятых записи

3. В структуре можно добавить поле занятости в котором будет принимать истина или ложь

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

BOOL virtualProtect(

LPVOID lpAdress,//

DWORD flNewProtect,//новый атрибут защиты

DWORD lpflOldProtect//

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

LPVOID lpAdress,//

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

Бондаренко кучи(создании определения выделенной, полученияинобедения свобоныз блоков)

микропроцессора :

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

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

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

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

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

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

Перевод виртуальных адресов в физические проиллюстрирован на рис. 3.12 .


Рис. 3.12.

Рассмотрим пример преобразования адреса виртуальной страницы в адрес физической страницы . Пусть компьютер использует адресное пространство , предполагающее разбиение на страницы объемом V стр = 1I , и имеет оперативную память V ОЗУ = 3 страницы. Пусть на компьютере одновременно выполняются четыре программы, имеющие следующее количество страниц: V A = 2 , V B = 1 , V C = 3 , V D = 2 . Переключение между программами происходит через время кванта t k = 1 . Время выполнения каждой страницы любой программы составляет t = 2t k . Полагаем, что страницы программ загружаются в оперативную память по мере необходимости и по возможности в свободные области ОЗУ . Если вся память занята, то новая страница замещает ту, к которой дольше всего не было обращений.

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

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

Таблица 3.2. Пример страничного распределения памяти в мультипрограммной ЭВМ
Страница Такты
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Динамическое распределение оперативной памяти
ОЗУ 0 АО АО АО DO DO DO CO CO CO C1 C1 C1 C1 C1 C1 C1
1 B0 B0 B0 A0 A0 A0 D0 D0 D0 D1 D1 D1 D1 D1 D1
2 C0 C0 C0 B0 B0 B0 A1 A1 A1 A1 A1 A1 C2 C2
Таблица страничного преобразования для программы А
A 0 0 0 - - 1 1 1 - - - - - - - - -
1 - - - - - - - - 2 2 2 2 2 2 - -
Таблица страничного преобразования для программы В
B 0 - 1 1 1 - 2 2 2 - - - - - - - -
Таблица страничного преобразования для программы С
С 0 - - 2 2 2 - 0 0 0 - - - - - - -
1 - - - - - - - - - 0 0 0 0 0 0 0
2 - - - - - - - - - - - - - - 2 2
Таблица страничного преобразования для программы D
D 0 - - - 0 0 0 - 1 1 1 - - - - - -
1 - - - - - - - - - - 1 1 1 1 1 1

Если каждая страница имеет объем 1000 адресуемых ячеек, то, например, в такте 9 обращение по виртуальному адресу 1100 программы A ( виртуальная страница 1, смещение в странице равно 100) приведет к обращению по физическому адресу 2100 ( физическая страница 2, смещение в физической странице такое же, как и в виртуальной, то есть 100).

Рассмотрим теперь применение этих общих принципов страничного преобразования адреса в микропроцессоре с архитектурой IA-32 при объеме страницы в 4 Кбайт.

Основой страничного преобразования служит 32-разрядный линейный адрес , полученный на этапе сегментного преобразования логического адреса . Страничное преобразование выполняется при значении бита PG = 1 в управляющем регистре CR0 .

В этом случае старшие 20 разрядов линейного адреса фактически представляют собой номер виртуальной страницы . Однако при прямом одноступенчатом преобразовании этого номера в номер физической страницы необходима таблица из 2 20 элементов длиной 4 байта каждый (20-разрядный номер страницы плюс некоторая дополнительная информация ), т. е. 4 Мбайт. В мультипрограммной среде такая таблица может потребоваться для каждой задачи. Эта таблица должна постоянно храниться в оперативной памяти, чтобы существенно не увеличивать время формирования физического адреса . Для этих целей потребуется постоянное резервирование существенной части емкости ОЗУ , что на этапе появления первых ЭВМ на основе МП с архитектурой IA-32 было практически невозможно.

Вместо этого микропроцессор использует двухступенчатое страничное преобразование адреса . Корневая страница, называемая каталогом таблиц страниц (КТС), содержит 1024 32-разрядных элемента каталога таблиц страниц (ЭКТС - PDE page directory entry ). Каждый из них адресует подчиненную таблицу страниц (ТС), то есть всего допускается до 1024 подчиненных таблиц страниц. Каждая из таблиц страниц содержит 1024 32-разрядных элемента таблицы страниц (ЭТС - PTE page table entry ), каждый из которых и адресует физическую страницу. Таким образом, общее количество адресуемых физических страниц равно 2 20 , то есть все виртуальное адресное пространство (4 Кбайт * 2 20 элементов = 2 32 байт ). Каждая таблица занимает 1024 * 4 = 4 Кбайт, то есть ровно 1 страницу. Общий объем таблиц, используемых для страничного преобразования , не уменьшился, а даже несколько возрос за счет использования каталога таблиц страниц . Однако, во-первых, практически всегда в системе этот размер можно существенно уменьшить за счет того, что некоторые линейные адреса никогда не будут сформированы (а эту информацию дают таблицы дескрипторов сегментов), и для них не нужно создавать таблицу страниц. А во-вторых, в оперативной памяти должны постоянно находиться лишь каталог таблиц страниц и таблица страниц выполняемой в настоящее время программы. Остальные таблицы страниц могут временно храниться во внешней памяти.


Рис. 3.13.

Таким образом, преобразование линейного адреса в физический имеет вид, представленный на рис. 3.13 .

Старшие 20 разрядов линейного адреса разбиваются на два 10-разрядных поля: поле номера элемента каталога таблиц страниц и поле номера элемента таблицы страниц . Так как и каталог таблиц страниц , и каждая таблица страниц занимают ровно 1 страницу и выровнены по границе страницы, то младшие 12 разрядов их базового адреса равны нулю, и для определения их физического адреса достаточно 20-разрядного поля.

Для каталога таблиц страниц его 20-разрядный адрес находится в регистре управления CR3. КТС постоянно находится в памяти и не участвует в свопинге .

Старшие 20 разрядов физического адреса таблицы страниц извлекаются из ЭТС. Структуры элемента КТС и элемента ТС схожи (рис. 3.14).


Рис. 3.14.

Старшие 20 разрядов элемента дают базовый адрес таблицы страниц (в ЭКТС) или физической страницы (в ЭТС). Биты P , A , R/W и U/S имеют определенное сходство с аналогичными атрибутами дескриптора сегмента, другие биты имеют специфическое назначение.