
- •1Определение операционной системы (ос). Назначение и основные функции ос.
- •Эволюция ос.
- •Классификация операционных систем.
- •Структура ос Windows. Краткий обзор архитектуры Windows.
- •Основные системные файлы Windows 95, nt, 2000.
- •Виртуальная память. Страничная организация памяти.
- •Страничная или сегментно-страничная организация памяти.
- •Алгоритмы замещения страниц виртуальной памяти. Алгоритмы замещения страниц
- •7.1.1 Алгоритм nru (Not Recently Used - не использовавшаяся в последнее время страница)
- •Адресное пространство процесса Win32 в Windows nt(2000). Регионы в адресном пространстве. Передача физической памяти региону. Гранулярность выделения ресурсов.
- •Раздел 4. В него загружаются ядро Windows nt и драйверы устройств. Этот раздел защищен и по чтению, и по записи. Регионы в адресном пространстве.
- •Передача физической памяти региону.
- •Механизм выделения страниц физической памяти.
- •Выделение физической памяти под программный код.
- •Атрибуты защиты страниц памяти в Win32. Изменение атрибутов защиты. Атрибуты защиты страниц.
- •Стек потока под управлением Windows nt (2000).
- •Стек потока под Windows 95, 98.
- •Функции компилятора для контроля стека.
- •Кучи в Windows nt (2000). Структура кучи в Win32. Функции управления кучей Win32. Кучи (Heaps).
- •Особенности кучи в Windows 95, Windows nt.
- •Структура арены.
- •Функции управления кучей Win32.
- •Удаление кучи.
- •Выделение блока памяти в определённой куче.
- •Куча, предоставляемая процессу по умолчанию, и дополнительные кучи. Назначение дополнительных куч Win32.
- •Дополнительные кучи Win32 процесса.
- •Создание дополнительных куч для эффективного управления памятью.
- •Локальный доступ. Создание дополнительных куч для локализации доступа.
- •Файлы, проецируемые в память. Файлы проецируемые в память (фпвп).
- •Проецирование в память exe и dll файлов.
- •Совместное использование статических данных несколькими экземплярами exe и dll модулей.
- •Иерархия функций работы с памятью.
- •Объекты ядра. Процессы, потоки и модули в Win32. Объекты kernel32.Dll.
- •Структура imte.
- •Структура modref.
- •Процессы Win32. Идентификатор процесса и дескриптор процесса. Объект ядра процесс в Win32. Функции для работы с процессами Таблица дескрипторов процесса.
- •Потоки. Состояния потоков. Свойства потоков. Объект ядра поток. Функции для работы с потоками.
- •Основные функции для работы с потоками.
- •Структура оя «поток».
- •Распределение времени между потоками. Классы приоритета. Уровни приоритета. Относительный уровень приоритета потока. Функции для работы с приоритетами потоков.
- •Уровни приоритета.
- •Функции Win32 связанные с планированием.
- •Учет квантов времени в Windows. Управление величиной кванта. Учёт квантов времени.
- •Сценарии планирования процессорного времени. Сценарий планирования.
- •Поток простоя.
- •Динамическое повышение приоритета. Динамическое повышение приоритета потока.
- •Синхронизация процессов и потоков. Объекты синхронизации. Синхронизация потоков без использования объектов синхронизации Синхронизация.
- •Синхронизация потоков без использования объектов синхронизации.
- •Синхронизация потоков.
- •Критические секции (кс). Критические секции.
- •Работа потока с несколькими критическими секциями.
- •Синхронизация потоков с объектами ядра. Ожидание завершения потока или процесса. Ожидание завершения нескольких потоков или процессов. Синхронизация объектов.
- •События со сбросом вручную.
- •События с автоматическим сбросом.
- •Объекты Мutex.
- •Синхронизация потоков с помощью семафоров.
- •Синхронизация потоков с помощью событий. События со сбросом вручную и с автоматическим сбросом.
- •События со сбросом вручную.
- •События с автоматическим сбросом.
- •Динамически подключаемые библиотеки (dll). Явная и неявная загрузка dll.
- •Обработка сообщения в ос Window. Структура threadinfo.
- •Посылка асинхронных сообщений в очередь потока
- •Системная очередь аппаратного ввода сообщений.
- •Работа с окнами в ос Windows. Классы окон. Z-порядок окон. Описание окон в ос Windows. Структуры управления окнами.
- •Существующие форматы исполняемых файлов. Формат pe-файла. Заголовок pe-файла. Основные секции pe-файла. Формат pe-файла.
- •Особенности ре-формата.
- •Заголовок ре-файла.
- •Основные секции исполняемого pe-файла.
- •Секция программного кода, импорт и экспорт в pe-файлах. Ресурсы pe-файла. Базовые поправки pe-файла. Импорт в pe-файлах.
- •Экспорт в pe-файлах
- •Ресурсы ре-файла.
- •Базовые поправки ре-файла.
- •Методы отслеживания изменений файловой системы.
- •Файловая система fat. Структура системной области и области данных в fat.
- •Назначение ntfs. Основные особенности и возможности ntfs. Структура файловой системы ntfs. Понятие тома и файла в ntfs.
- •Особенности ntfs.
- •Возможности ntfs.
- •Структура файловой системы ntfs.
- •Тома в ntfs.
- •Кластеры в ntfs.
- •Основные файлы ntfs, назначение основных файлов ntfs. Главная таблица файлов.
- •Назначение основных файлов ntfs.
- •Генерация имен файлов ms dos в ntfs.
- •Структура главной файловой таблицы (mft). Атрибуты файла ntfs. Заголовок атрибута, значение атрибута. Резидентные и нерезидентные атрибуты. Структура главной файловой таблицы (mft).
- •Структура файловых ссылок.
- •Атрибуты файла ntfs
- •Резидентные атрибуты.
- •Нерезидентные атрибуты.
- •Записи главной файловой таблицы ntfs (mft) для резидентных атрибутов и для нерезидентных атрибутов. Виртуальные и логические номера кластеров.
- •Структура больших файлов и каталогов в ntfs. Индексация файлов в ntfs. Структура каталогов в ntfs
- •Структура больших файлов в ntfs
- •Индексация файлов в ntfs.
- •Битовая карта.
- •Восстанавливаемость ntfs. Протоколирование транзакций. Журнал транзакций. Восстанавливаемость ntfs.
- •Протоколирование транзакций.
- •Журнал транзакций.
- •Записи модификации, записи контрольной точки, таблица транзакций, таблица измененных страниц в журнале транзакций. Записи модификации.
- •Записи контрольной точки.
- •Восстановление данных в ntfs. Проход анализа. Проход повтора. Проход отмены. Восстановление данных в ntfs.
- •Проход анализа.
- •Проход повтора.
- •Проход отмены.
- •Замена плохих секторов в ntfs. Файл плохих кластеров. Переназначение плохих кластеров.
- •Переназначение плохих кластеров.
- •Компрессия данных в фс ntfs.
- •Сжатие разрежённых файлов.
- •Сжатие обычных файлов.
- •Система шифрования данных (efs) в файловой системе ntfs .
- •Загрузка ос Windows 2000.
- •Предварительная загрузка.
- •Загрузка.
- •Загрузка ядра.
- •Инициализация ядра
- •Регистрация
- •Процесс разработки программы на ассемблере.
- •Трансляция программы
- •Компоновка программы
- •Основные регистры процессора Pentium.
- •Ассемблерные команды пересылки данных. Пример программы.
- •Работа с адресами и указателями на ассемблере. Пример программы.
- •Ассемблерные команды для работы со стеком. Пример программы.
- •Ассемблерные команды сложения и вычитания. Пример программы.
- •Ассемблерные команды умножения, деления и изменения знака. Пример программы.
- •Использование в Delphi встроенного ассемблера. Пример программы.
- •Ассемблерные команды линейного и циклического сдвига. Пример программы.
- •Ассемблерные команды условного и безусловного перехода. Состояние флагов. Пример программы.
- •Перечень команд условного перехода для команды cmp
- •Организация циклических программ на ассемблере. Пример программы.
Ассемблерные команды пересылки данных. Пример программы.
К группе команд пересылки данных относятся следующие команды:
mov <операнд назначения>,<операнд-источник>
xchg <операнд!>,<операнд2>
MOV — это основная команда пересылки данных. Она реализует самые разнообразные варианты пересылки.
Основные особенности применения этой команды:
1. Командой MOV нельзя осуществить пересылку из одной области памяти в другую. Если такая необходимость возникает, то нужно использовать в качестве промежуточного буфера любой доступный в данный момент регистр общего назначения.
masm
model small
.data
fls db 5
fld db ?
.code
start:
…..
mov al, fls
mov fld,al
end start
2. Нельзя загрузить в сегментный регистр значение непосредственно из памяти. Для такой загрузки требуется промежуточный объект. Это может быть регистр общего назначения или стек.
Например:
mov ax,dseg ; в регистр ах записывается адрес сегмента данных
mov ds,ax ;адрес сегмента данных записывается в регистр ds
; сегмент данных
dseg segment
mes db 64 dup('~')
dseg ends
В начале сегмента кода две команды MOV, выполняющие настройку сегментного регистра DS.
3. Нельзя переслать содержимое одного сегментного регистра в другой сегментный регистр. Выполнить такую пересылку можно, используя в качестве промежуточных все те же регистры общего назначения:
mov ax,ds
mov es,ax
Но есть и другой способ выполнения данной операции -использование стека и команд PUSH и POP:
push ds ;поместить значение регистра ds в стек
pop es ;записать в es число из стека
Для двунаправленной пересылки данных применяют команду XCHG. Естественно, что операнды должны иметь один тип. Не допускается (как и для всех команд ассемблера) напрямую обменивать между собой содержимое двух ячеек памяти. К примеру:
xchg ax,bx ;обменять содержимое регистров ах и bx
xchg ax, word ptr [si] ;обменять содержимое регистра ах и слова в памяти по адресу в [si]
Работа с адресами и указателями на ассемблере. Пример программы.
При написании программ на ассемблере производится интенсивная работа с адресами операндов, находящимися в памяти. Для поддержки такого рода операции есть специальная группа команд, в которую входят следующие команды:
,<источник> — загрузка эффективного адреса;
lds <приемник>,< а указателя в регистр сегмента данных ds;
les <приемник>,<источник> — загрузка указателя в регистр дополнительного сегмента данных es;
lgs <приемник>,<источник> — загрузка указателя в регистр дополнительного сегмента данных gs;
lfs <приемник>,<источник> — загрузка указателя в регистр дополнительного сегмента данных fs;
Iss <приемник>,<источник> — загрузка указателя в регистр сегмента стека ss.
В команде в качестве источника нельзя указывать непосредственно имя операнда в памяти, на который мы бы хотели получить указатель. Предварительно необходимо получить само значение полного указателя в некоторой области памяти и задать в команде получения полного адреса имя этой области.
Листинг Копирование строки
<1> ; - Prg.asm -
<2> masm
<3> model small
<4> .data
<5> ...
<6> str_l db "Ассемблер - базовый язык компьютера"
<7> str_2 db 35 dup (" ")
<8> full_pnt dd str_l
<9> ...
<10> .code
<11> start:
<12> ….
<13> lea si ,str_l ;загружаются значения эффективных адресов переменных
<14> lea di ,str_2 ;загружаются значения эффективных адресов переменных
<15> les bx,full_pnt ;полный указатель на str_l в пару es:bx
<16> mov сx, 35 ;счетчик цикла для loop ml
<17> ml:
<18> mov al , [si] ; пересылка очередного байта из одной строки в другую
<19> mov [di] ,al ; пересылка очередного байта из одной строки в другую
<20> inc si
<21> inc di
<22> loop m1 ;цикл на метку ml до пересылки всех символов
<23> ..........
<24> end start