
- •Минобрнауки россии
- •Тема 2. Структура и механизмы ос Лекция №2. Структура и механизмы ос
- •Тема 3. Организация многопрограммной работы. Процессы и потоки Лекция №3. Организация многопрограммной работы
- •Тема 4 . Управление данными в ос. Файловая система Лекция №4. Управление данными в ос
- •Тема 5. Управление данными в субд. Концепции и архитектура субд. Представление пользователя Организация баз данных Лекция №5. Концепции и архитектура субд
- •Тема 6. Проектирование данных. Отношения Лекция №6. Отношения. Нормальные формы
- •Тема 2. Структуры хранения и доступа к данным. Индексы Лекция №2. Структуры хранения на примере sql Server
- •Тема 3. Информационно-логическое моделирование в разработке баз данных Лекция №3. Моделирование предметной области
- •Тема 4. Работа с данными. Язык баз данных Лекция №4. Основные понятия языка баз данных на примереSql
- •Лекция №5. Запросы к базе данных
- •Тема 5. Защита и безопасность при доступе данным в многопользовательской среде Лекция №6. Защита и безопасность данных
Тема 4 . Управление данными в ос. Файловая система Лекция №4. Управление данными в ос
В рамках данной лекции рассматриваются нижеследующие вопросы:
Обмен с внешними устройствами
Иерархия памяти
Кэширование.
Управление основной памятью.
Отображение на физическую память
Страничная, сегментная, сегментно-страничная организация памяти
Свопинг.
Организация виртуальной памяти.
Алгоритмы замещения страниц.
Типы и атрибуты файлов.
Логический и физический уровень файловой системы.
Доступ к файлам. Операции с файлом
Каталоги. Операции с каталогом.
Совместно используемые файлы.
Журнализация в файловой системе.
Как отмечалось ранее, имеются два вида памяти: основная (оперативная) память и внешняя. Основная память используется для кратковременного хранения информации (данных программ, промежуточных и конечных результатов обработки), непосредственно используемой в процессе выполнения операций в арифметическо-логическом устройстве и устройстве управления. Внешняя память служит для долговременного хранения данных и программ и отличается разнообразием носителей, используемых для хранения этих данных и программ. Примерами носителей могут быть: жесткий диск, цифровой многофункциональный диск (DVD), ПЗУ на компакт-диске (CD-ROM), уже не используемый магнитный диск 3,5”.
Понятно, что «памяти» имеют и сходные характеристики, и различные. Например, памяти различаются по типу запоминающей среды, которая используется для хранения информации: полупроводниковая память, магнитный или оптический диск. При этом все «памяти» имеют одинаково называемые характеристики «объем» и «быстродействие», которые у них существенно различаются.
Внешняя память обеспечивается внешними запоминающими устройствами. За организацию обмена информацией с ними отвечает система управления вводом-выводом, которая обычно строится многоуровневой. В ней выделяется нижний уровень, или базовая система ввода/вывода (БИОС), на основе которой строятся операции обмена информацией более высокого уровня.
При построении систем ввода/вывода является важным, какими единицамиинформации осуществляется обмен с устройствами. Устройства обычно принято разделять по типу единиц обменаи соответствующему им интерфейсу на следующие типы:
символьные (клавиатура, модем, терминал и т.п.);
блочные (магнитные и оптические диски и ленты, и т.д.);
сетевые (сетевые карты);
все остальные (таймеры, графические дисплеи, телевизионные устройства, видеокамеры и т.п.);
Символьным устройствам обычно предписывается выполнение двух основных операций: получить (get) символ (байт) из буфера устройства и поместить (put) символ (байт) в буфер устройства. Блочные устройства выполняют операции чтения и записи блока информации – read и write. Устройства прямого доступа имеют дополнительно операцию поиска требуемого блока информации – seek.
Что касается внешних ЗУ, то они относятся к блочным устройствам, единицей обмена с которыми на физическом уровне является блок данных. Размер блока зависит от типа ЗУ и в частности - от его объема и быстродействия (времени доступа к данным). Кроме того, учитывается стоимость хранения одного бита.
Иерархия запоминающих устройств
Внешняяпамять обычно представлена жестким диском. Она имеет большой объем (десятки и сотни гигабайт), но скорость доступа к данным является невысокой. Время доступа к диску измеряется миллисекундами.
DRAM – динамическая оперативная память, время доступа равно примерно 10-20 наносекунд.
SRAM - быстродействующее ЗУ на основе статической оперативной памяти, объем которых составляет от нескольких десятков до нескольких сотен килобайт, а время доступа к данным обычно не превышает 8 нс.
Объем регистров составляет несколько десятков байт, а время доступа определяется быстродействием процессора и равно в настоящее время примерно 2-3 нс.
Кэш-память, или просто кэш (cache) - способ совместного функционирования двух типов запоминающих устройств, отличающихся временем доступа и стоимостью хранения данных. Способ заключается в динамическом копировании в «быстрое» ЗУ часто используемой информации из «медленного» ЗУ и позволяет, с одной стороны, уменьшить среднее время доступа к данным, а с другой стороны, экономить более дорогую быстродействующую память.
В процессе работы содержимое кэш-памяти постоянно обновляется, а значит, время от времени данные из нее должны вытесняться. Вытеснение означает простое объявление свободной соответствующей области кэш-памяти, поскольку имеется копия. Наличие в компьютере двух копий данных - в основной памяти и в кэше - вызывает необходимость согласования данных. Если осуществляется запись в основную память по некоторому адресу, а его содержимое находится в кэше, то соответствующая запись в кэше становится недостоверной.
Для решение этой проблемы используется:
- Сквозная запись (write through). При каждом запросе к основной памяти просматривается кэш. Если данные по запрашиваемому адресу отсутствуют, то запись выполняется только в основную память. Иначе запись выполняется одновременно в кэш и основную память.
- Обратная запись (write back). Если запрашиваемых данных в кэше нет, то запись выполняется только в основную память. В противном случае запись производится только в кэш-память, при этом в описателе данных делается специальная отметка (признак модификации), которая указывает, что при вытеснении этих данных из кэша необходимо переписать их в основную память, чтобы актуализировать устаревшее содержимое основной памяти.
В некоторых алгоритмах замещения предусматривается первоочередная выгрузка модифицированных, или «грязных» данных.
В общих словах функциями ОС по управлению и основной, и внешней памятью являются выделение и освобождение памяти, контроль использования памяти и осуществление доступа к содержимому. Но поскольку основная память в вычислительной системе используется для оперативной загрузки исполняемой программы и доступа процессора к командам программы, то управление основной памятью имеет свои особенности.
Функциями ОС по управлению основной памятью являются:
отображение адресов пространства символических имен программы на языке высокого уровня на пространство виртуальных и физических адресов;
сборка исполнимых программных модулей, загрузка исполнимых модулей в память и настройка адресов на конкретную область физической памяти;
выделение памяти процессам и освобождение памяти при завершении процессов;
отслеживание свободной и занятой памяти и сборка «мусора».
Переход от виртуальных адресов к физическим может осуществляться двумя способами. В первом случае замену виртуальных адресов на физические выполняет специальная системная программа - перемещающий загрузчик. Перемещающий загрузчик на основании имеющихся у него исходных данных о начальном адресе физической памяти, в которую предстоит загружать программу, и информации, предоставленной транслятором об адресно-зависимых константах программы, выполняет загрузку программы, заменяя при этом виртуальные адреса физическими.
Второй способ заключается в том, что программа загружается в память в неизмененном виде в виртуальных адресах, при этом операционная система фиксирует смещение действительного расположения программного кода относительно виртуального адресного пространства. Во время выполнения программы при каждом обращении к ОЗУ выполняется преобразование виртуального адреса в физический. Второй способ является более гибким, он допускает перемещение программы во время ее выполнения, тогда как перемещающий загрузчик жестко привязывает программу к первоначально выделенному ей участку памяти.
Для распределения памяти используются алгоритмы, которые могут выделять память:
фиксированными разделами;
разделами переменной величины;
перемещаемыми разделами.
Каждый из алгоритмов характеризуется величиной фрагментации памяти, которую он допускает. Различают внутреннюю фрагментацию и внешнюю фрагментацию.
В OS/2 была предложена реализация динамической компоновки (связей) исполнимых модулей в виде подключаемых библиотек (Dynamic Link Library, файлы с расширением .DLL) , компоновка с которыми выполняется не до загрузки, а при появлении ссылки на модуль во время исполнения программы. Это уменьшает размеры программ и позволяет вносить изменения только в один DLL-файл, а не отдельно в каждую программу, в которой он используется.
Многопрограммная работа требует, чтобы в оперативную память можно было загружать несколько процессов. Поскольку оперативная память физически ограничена конкретным размером, то для возможности размещения и одновременного исполнения большого количества процессов используется способ расширения объёма адресуемой физической памяти специальной областью на быстром устройстве с прямым доступом. Такое устройство обычно является диском, область на диске называется страничным файлом, или файлом подкачки (swap file). Оперативная память разбивается либо на страницы (page) фиксированного размера, либо на сегменты переменной длины и организуется выгрузка неактивных страниц в страничный файл на диске и загрузка из него необходимых страниц. Преимущество использования виртуальной памяти в том, что программу не нужно разбивать на подгружаемые с внешнего ЗУ при её выполнении сегменты, называемые оверлеями (overlay). Можно загружать на исполнение большое количество приложений и обрабатывать в программе большие массивы данных: оперативная память для программиста представляется однородной и имеющей большой объем.
Страничная организация памяти отличается тем, чтовиртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера, или виртуальные страницы. (В общем случае размер виртуального адресного пространства может не являться кратным размеру страницы.)
Вся оперативная память также делится на части такого же размера, или физические страницы (блоки).
Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д.
При загрузке процесса часть его виртуальных страниц (теоретически, хотя бы одна) помещается в оперативную память, а остальные - на диск. Смежные виртуальные страницы не обязательно располагаются в смежных физических страницах. При загрузке операционная система создает для каждого процесса таблицу страниц, в которой устанавливается соответствие между номерами виртуальных и физических страниц для страниц, загруженных в оперативную память, или делается отметка о том, что виртуальная страница выгружена на диск. Кроме того, в таблице страниц содержится управляющая информация, такая как признак модификации страницы, признак запрета выгрузки, признак обращения к странице (используется для подсчета числа обращений за определенный период времени) и др. Выгрузка/загрузка страницы (или сегмента) данных/программы с диска в ОЗУ называется свопинг (swapping). Различают свопинг в прямом направлении (в ОЗУ) или в обратном направлении (из ОЗУ).
При активизации очередного процесса в специальный регистр процессора загружается адрес таблицы страниц данного процесса.
При каждом обращении к памяти происходит чтение из таблицы страниц информации о виртуальной странице, к которой произошло обращение. Если данная виртуальная страница находится в оперативной памяти, то выполняется преобразование виртуального адреса в физический. Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит страничное прерывание. Выполняющийся процесс переводится в состояние ожидания. Обработчик страничного прерывания находит на диске требуемую виртуальную страницу и пытается ее загрузить в оперативную память. Если в памяти имеется свободная физическая страница, то загрузка выполняется немедленно, если же свободных страниц нет, то решается вопрос, какую страницу следует вытеснить из оперативной памяти.
Существуют различные алгоритмы выбора вытесняемой станицы:
Алгоритм NRU (Not Recently Used) исключения недавно использовавшейся страницы удаляет произвольную страницу, относящуюся к самому низкому непустому классу. В этот алгоритм заложена идея, суть которой в том, что лучше удалить модифицированную страницу, к которой не было обращений, по меньшей мере, за последний такт системных часов (обычно это время составляет около 20 мс), чем удалить интенсивно используемую страницу.
Алгоритм FIFO (First-In, First-Out, «первой пришла, первой ушла»). Модификация алгоритма FIFO для исключения проблемы удаления часто востребуемой - проверка бита R самой старой страницы. Если его значение равно нулю, значит, страница не только старая, но и невостребованная, поэтому она удаляется. Если бит R имеет значение 1, он сбрасывается, а страница помещается в конец списка страниц, и время ее загрузки обновляется, как будто она только что поступила в память.
Алгоритм второй шанс. Использует связанный список мтраниц, отсортированный по времени их поступления в память. Ищет ранее загруженную в память страницу, к которой за только что прошедший интервал времени таймера не было обращений.
«Часы». Проверяется та страница, на которую указывает стрелка «часов». Если ее бит R имеет значение 0, страница выселяется, на ее место в «часах» вставляется новая страница, и стрелка передвигается вперед на одну позицию. Если значение бита R равно 1, то он сбрасывается, и стрелка перемещается на следующую страницу. Этот процесс повторяется до тех пор, пока не будет найдена страница с R = 0.
Алгоритм LRU (Least Recently Used). Замещает наиболее давней по использованию страницы. Необходим связан ный список всех страниц, находящихся в памяти. В начале списка находится только что востребованная страница, а в конце - наименее востребованная. Список должен обновляться при каждом обращении к памяти.
Алгоритм NFU (Not Frequently Used), или нечастого использования. Требуется программный счетчик с начальным нулевым значением, связанный с каждой страницей. При каждом прерывании от таймера операционная система сканирует всё находящиеся в памяти страницы. Для каждой страницы к счетчику добавляется значение бита R, равное 0 или 1. Счетчики позволяют приблизительно отследить частоту обращений к каждой странице. При возникновении ошибки отсутствия страницы для замещения выбирается та страница, чей счетчик имеет наименьшее значение.
Рабочий набор - Набор страниц, использующихся процессом в данный момент. Рабочее множество определяется длякаждого процессаи представляет собой перечень наиболеечасто используемыхстраниц, которые должны постоянно находиться в оперативной памяти и поэтому не подлежат выгрузке.
Если вытесняемая страница «грязная» (была модифицирована), то ее новая версия должна быть переписана на диск. Если нет, то соответствующая физическая страница объявляется свободной.
Преобразование виртуального адреса в физический при страничной организации памяти осуществляется следующим образом.
Виртуальный адрес при страничном распределении может быть представлен в виде пары (p, s), где p - номер виртуальной страницы процесса (нумерация страниц начинается с 0), а s - смещение в пределах виртуальной страницы. Поскольку размер страницы равен 2 в степени к, смещение s может быть получено простым отделением k младших разрядов в двоичной записи виртуального адреса. Оставшиеся старшие разряды представляют собой двоичную запись номера страницы p.
При каждом обращении к оперативной памяти аппаратные средства выполняют следующие действия:
на основании начального адреса таблицы страниц (содержимое регистра адреса таблицы страниц), номера виртуальной страницы (старшие разряды виртуального адреса) и длины записи в таблице страниц (системная константа) определяется адрес нужной записи в таблице,
из этой записи извлекается номер физической страницы,
к номеру физической страницы присоединяется смещение (младшие разряды виртуального адреса).
Преобразование виртуального адреса в физический при страничной организации памяти
Поскольку размер страницы равен степени 2, можно применять операцию конкатенации (присоединения) вместо более длительной операции сложения, что уменьшает время получения физического адреса, а значит - повышает производительность.
На производительность системы со страничной организацией памяти влияют временные затраты, связанные с обработкой страничных прерываний и преобразованием виртуального адреса в физический. При часто возникающих страничных прерываниях система может тратить большую часть времени впустую, на свопинг страниц. Чтобы уменьшить частоту страничных прерываний, нужно увеличивать размер страницы. Увеличение размера страницы уменьшает размер таблицы страниц и затраты памяти. С другой стороны, если страница большая, то и большая фиктивная область в последней виртуальной странице каждой программы. Время преобразования виртуального адреса в физический определяется временем доступа к таблице страниц. В связи с этим таблицу страниц стремятся размещать в "быстрых" ЗУ.
Отображаемые файлы - альтернативная модель для ввода-вывода и совместно используемой памяти. Если два или более процессов одновременно имеют отображение на один и тот же файл, они могут связываться посредством совместно используемой памяти. Запись, произведенная одним процессом в общую память, видна другому процессу, имеющему отображение на файл.
Файловая система
Файл– абстракция, которая используется для того, чтобы в рамках управления данными не зависеть от того, где именно и на каких носителях находятся данные, как они структурно устроены и взаимосвязаны. Традиционно файлом называют именованную область на носителе данных. Впервые понятие файл было введено в языкеCOBOLв 1961г. Затем в ОС Unix стали трактоватьвсе внешние устройства как виртуальныефайлы.
Файловая система в целом предназначена для обеспечения длительного храненияданных, доступа к данным и выполнения операций над объектом «файл» и содержащимися в них данными.
Файловой системой (ФС) является подсистема ОС, поддерживающая такую функциональность и обеспечивающая перевод представления виртуального файла в физическое представление. Обычно выделяют логический уровеньФС ифизический уровень ФС.
ФС логического уровня предоставляет интерфейс программирования в соответствии с той логической структурой, которую имеет виртуальный файл. ФС физического уровня выполняет перевод виртуальных файловых адресов в реальные адреса, соответствующие физическим адресам на носителях. Этот уровень отслеживаетразмещение файлов на внешней памяти и управляетраспределением пространства внешней памяти.
На логическом уровне обеспечивается системные вызовы и API в соответствии с логической организацией файла.
По внутренней структуре различают файлы:
байториентированные, абстрактным представлением которых служитлинейная последовательностьбайтов;
состоящие из записейфиксированной или переменной длины. В этом случае либо длина входит в состав записи, как одно из ее полей, либо запись содержит специальный признакконца записи.
По организации доступа к содержимомуразличают файлы:
с последовательным доступом;
с доступом по ключу.
Например, файл-последовательность байтов может иметь свойства: «начало файла», «конец файла»,текущая позиция, доступная в данный момент длясчитывания/записи:
BOF |
байт |
байт |
байт |
байт |
байт |
байт |
байт |
байт |
байт |
байт |
байт |
байт |
байт |
EOF |
|
|
← |
|
|
← |
↑ |
→ |
|
|
→ |
|
|
|
|
|
|
count |
|
|
Move Prev |
Current Pos |
Move Next |
|
|
count |
|
offset |
|
|
Файл с последовательным доступом логически устроен подобным образом. Отличие заключается в том, единицей информации является не байт, азапись. Доступ к содержимому в этом случае осуществляется пологическому адресу(номеру) записи в файле, т.е. по относительной позиции записи в файле.
Файлы с ключами или с доступом по ключу предполагают наличие для каждой записи файла ее идентификатора, илиключа(key). Доступ к произвольной записи файла производится позначениюключа. Для реализации этого используется специальная структура, называемаяиндексом, в рамках которой устанавливаютсясоответствия ключейи физического местоположения соответствующих имзаписей файла.
На логическом уровне файловая система использует файловые каталоги (справочники), или оглавления (directory). Файловые каталоги находятся на тех же носителях, что и файлы данных.
Элемент каталога содержит, как минимум, символьное имя файлаи адрес его дескриптора. Дескриптор файла может непосредственно входить в элемент каталога.
Простейшей структурой каталога является плоский (flat) каталог. Информация обо всех файлах находится в одной таблицу, и поиск файла сводится к поиску в этой таблице. В современных системах каталоги имеют иерархическую структуру. Каждый элемент каталога описывает файл или подкаталог (subdirectory). С точки зрения ниже лежащих уровней ФС подкаталог является таким же файлом, как и файлы пользователей
Иллюстрация атрибутов файла
Атрибут |
Значение |
Защита |
Кто и каким образом может получить доступ к файлу |
Пароль |
Пароль для получения доступа к файлу |
Создатель |
Идентификатор создателя файла |
Владелец |
Текущий владелец |
Флаг «только для чтения» |
0 - для чтения-записи; 1 - только для чтения |
Флаг «скрытый» |
0 - обычный; 1 - не предназначенный для отображения в перечне файлов |
Флаг «системный» |
0 - обычный; 1 - системный |
Флаг «архивный» |
0 - прошедший резервное копирование; |
|
1 - нуждающийся в резервном копировании |
Флаг ASCII-двоичный |
0 -ASCII; 1 - двоичный |
Флаг произвольного доступа |
0 - только последовательный доступ; 1 - произвольный доступ |
Флаг «временный» |
0 - обычный; 1 - удаляемый по окончании работы процесса |
Флаги блокировки |
0 - незаблокированный; ненулевое значение - заблокированный |
Длина записи |
Количество байтов в записи |
Позиция ключа |
Смещение ключа внутри каждой записи |
Длина ключа |
Количество байтов в поле ключа |
Время создания |
Дата и время создания файла |
Время последнего доступа |
Дата и время последнего доступа к файлу |
Время последних изменений |
Дата и время внесения в файл последних изменений |
Текущий размер |
Количество байтов в файле |
Максимальный размер |
Количество байтов, до которого файл может увеличиваться |
Физический уровень ФС имеет дело с физической структурой файлов. Если рассматривать файлы, например, на накопителе на жестких дисках, то:
память представляется состоящей из блоков, являющихся физическими единицами дискового пространства (например, секторами). Каждый блок имеет уникальный номер (адрес);
дескриптор диска содержит информацию о количестве и размере блоков на диске и о свободном пространстве на диске;
дисковое пространство распределяется единицами фиксированной длины, даже если допускается чтение/запись блоками переменной длины, размер единицы распределения, как правило, все равно фиксирован, например, дорожка. Возможно объединение нескольких смежныхблоков в единиц распределения «кластер». Кластеризация может быть как симметричной - сзаранее установленнымразмером кластера, так и асимметричной - с размером кластера, выбираемым для каждого распределения.
Для иллюстрации рассматриваются системные вызовы для работы с файлами.
Create (Создать). Создает файл без данных. Цель вызова состоит в объявлении о появлении нового файла и в установке ряда атрибутов.
Delete (Удалить). Когда файл больше не нужен, его нужно удалить, чтобы освободить дисковое пространство. Именно для этого и предназначен этот системный вызов.
Open (Открыть). Перед использованием файла процесс должен его открыть. Цель системного вызова open - дать возможность системе извлечь и поместить в оперативную память атрибуты и перечень адресов на диске, чтобы ускорить к ним доступ при последующих вызовах.
Close (Закрыть). После завершения всех обращений к файлу потребность в его атрибутах и адресах на диске уже отпадает, поэтому файл должен быть закрыт, чтобы освободить место во внутренней таблице. Многие системы устанавливают максимальное количество открытых процессами файлов, определяя смысл суще ствования этого вызова. Информация на диск пишется блоками, и закрытие файла вынуждает к записи последнего блока файла, даже если этот блок и не заполнен.
Read (Произвести чтение). Считывание данных из файла. Как правило, байты поступают с текущей позиции. Вызывающий процесс должен указать объем необходимых данных и предоставить буфер для их размещения.
Write (Произвести запись). Запись данных в файл, как правило, с текущей позиции. Если эта позиция находится в конце файла, то его размер увеличивается. Если текущая позиция находится в середине файла, то новые данные пишутся поверх существующих, которые утрачиваются навсегда.
Append (Добавить). Этот вызов является усеченной формой системного вызова write. Он может лишь добавить данные в конец файла. Как правило, у систем, предоставляющих минимальный набор системных вызовов, вызов append от сутствует, но многие системы предоставляют множество способов получения того же результата, и иногда в этих системах присутствует вызов append.
Seek (Установка указателя). При работе с файлами произвольного доступа нужен способ указания места, с которого берутся данные. Одним из общепринятых подходов является применение системного вызова seek, который перемещает указатель файла к определенной позиции в файле. После завершения этого вызова данные могут считываться или записываться с этой позиции.
Get attributes (Получить атрибуты). Процессу для своей работы зачастую не обходимо считать атрибуты файла. К примеру, имеющаяся в UNIX программа make обычно используется для управления проектами разработки программного обеспечения, состоящими из множества сходных файлов. При вызове програм мы make она проверяет время внесения последних изменений всех исходных и объектных файлов и для обновления проекта обходится компиляцией лишь минимально необходимого количества файлов. Для этого ей необходимо про смотреть атрибуты файлов, а именно время внесения последних изменений.
Set attributes (Установить атрибуты). Значения некоторых атрибутов могут устанавливаться пользователем и изменяться после того, как файл был создан. Такую возможность дает именно этот системный вызов. Характерным примером может послужить информация о режиме защиты. Под эту же категорию под падает большинство флагов.
Rename (Переименовать). Нередко пользователю требуется изменить имя существующего файла. Этот системный вызов помогает решить эту задачу. Необходимость в нем возникает не всегда, поскольку файл может быть просто скопирован в новый файл с новым именем, а старый файл затем может быть удален.
Основная литература
Учебник / Учебное пособие |
Раздел |
Страницы |
Таненбаум Э. Современные операционные системы. 3-е изд. - СПб.: Питер, 2010. - 1120 е.: ил. |
3.1-3.5, 3.8 3.3, 3.4, 3.5 4.1.1-4.1.6, 4.2.1-4.2.4, 4.3.4-4.3.7 |
217-275, 230 – 275 308-316, 320-325, 336-345 |
Дополнительная литература.
Учебник / Учебное пособие |
Раздел |
Страницы |
1. Джеффри Рихтер. Windows для профессионалов (программирование в Win32 API для Windows NT 3.5 и Windows95)/Пер. с англ. - М.: Издательский отдел «Русская Редакция» 1995. - 720 с.: ил. |
Главы 4, 6 Глава 13 |
75-97, 135-156, 437-494 |
2. Робачевский А.М. Операционная система UNIX, СПб.: BHV – Санкт-Петербург, 1997. - 528 с., ил. |
Глава 2,3 |
121-144, 206-210, 280-318 |