- •Лихачёв д.С.
- •1 Понятие операционной системы. Классификация операционных систем
- •2 Сетевые операционные системы
- •3 Назначение и основные функции операционных систем. Требования к современным операционным системам.
- •4 Назначение и основные функции операционных систем. Функции операционных систем по управлению ресурсами компьютера.
- •5 Функции операционных систем по управлению ресурсами компьютера. Управление процессами.
- •6 Функции операционных систем по управлению ресурсами компьютера. Управление памятью.
- •7 Функции операционных систем по управлению ресурсами компьютера. Управление файлами и внешними устройствами. Поддержка пользовательского интерфейса.
- •8 Функции операционных систем по управлению ресурсами компьютера. Защита данных и поддержка администрирования. Поддержка интерфейса прикладного программирования.
- •9 Обобщённая структура операционной системы.
- •10 Архитектура операционных систем на основе монолитного ядра.
- •11 Особенности работы ядра в привилегированном режиме.
- •12 Многослойная структура операционной системы.
- •13 Микроядерная архитектура.
- •14 Подсистема операционной системы управления памятью. Понятие виртуальной памяти.
- •15 Методы распределения памяти. Распределение памяти фиксированными разделами.
- •16 Методы распределения памяти. Распределение памяти динамическими разделами.
- •17 Методы распределения памяти. Распределение памяти перемещаемыми разделами.
- •18 Методы распределения памяти. Страничное распределение.
- •19 Методы распределения памяти. Сегментное распределение.
- •20 Методы распределения памяти. Странично-сегментное распределение. Свопинг.
- •21 Многозадачность. Особенности реализации многозадачности в системах пакетной обработки.
- •22 Многозадачность. Особенности реализации многозадачности в системах разделения времени.
- •23 Понятие процесса. Подсистема операционной системы управления процессами. Состояния процесса. Контекст и дескриптор процесса.
- •24 Совместное использование объектов ядра несколькими процессами. Наследование описателя объекта.
- •25 Совместное использование объектов ядра несколькими процессами. Именованные объекты
- •26 Совместное использование объектов ядра несколькими процессами. Дублирование описателей объектов
- •27Планирование и диспетчеризация потоков.
- •28 Вытесняющие и невытесняющие алгоритмы планирования.
- •29 Алгоритмы планирования, основанные на приоритетах.
- •30 Алгоритмы планирования, основанные на квантовании.
- •31 Принципы работы с потоками вWindows. Распределение процессорного времени между потоками
- •32 Приостановка и возобновление потоков/процессов
- •33 Потоки вWindows. Приоритеты потоков и процессов
- •34 Задача синхронизации потоков
- •35 Синхронизация потоков с объектами ядра. Функции ожидания объектов ядра
- •36 Мьютексы. Создание, открытие, освобождение и удаление мьютекса. Отказ от мьютекса
- •37 Семафоры. Создание, открытие, освобождение и удаление семафора
- •38 Понятие сетевой операционной системы. Компьютерная сеть
- •39 Типичная структура сетевых операционных систем.
- •40 Сетевые службы и сетевые ресурсы
- •41 Архитектура взаимодействия типа клиент – сервер.
- •42 Многоуровневая структура коммуникаций. Эталонная модель взаимодействия открытых систем osi. Принцип пакетной передачи данных.
- •43 Технологии, используемые для построения компьютерных сетей.
- •44 Стек протоколов tcp/ip. Ip-адресация.
- •45 Понятие программной модели ia-32. Регистры общего назначения. Сегментные регистры.
- •46 Понятие программной модели ia-32. Регистры состояния и управления.
- •47 Режимы работы микропроцессора
- •48 Понятие оперативной памяти. Формирование адреса в процессорах с архитектурой ia-32.
- •49 Режимы адресации для процессоров с архитектурой ia-32. Работа с массивами на ассемблере.
- •50 Понятие модульного программирования. Понятие подпрограммы. Ассемблерные процедуры и функции.
- •51 Способы передачи аргументов в процедуру.
- •52 Программная модель математического сопроцессора.
- •2. Три служебных регистра:
49 Режимы адресации для процессоров с архитектурой ia-32. Работа с массивами на ассемблере.
Режимы адресации для процессоров с архитектурой IA-32.
Есть 11 основных режимов адресации.
1. Регистровый режим адресации.
Здесь все достаточно просто. В командах в качестве операндов используются регистры.
Например:
MOV AL,BH //8-разрядный регистровый режим адресации
MOV AX,BX //16-разрядный регистровый режим адресации
MOV ЕАХ,ЕВХ //32-разрядный регистровый режим адресации
2. Непосредственный режим адресации.
В команду непосредственно встраивается константа.
Например:
ADD АН,6
ADD AX,12345
ADD ЕАХ,123456
3. Режим прямой адресации.
Адрес операнда задается в виде 8-, 16- или 32-битового смещения в самой команде, например:
DEC WORD PTR h[500]
или:
DEC WORD PTR h+500
INC DWORD PTR a
4. Режим регистровой косвенной адресации.
В этом случае базовый или индексный регистр содержат адрес операнда.
Например:
SDB DX, [SI]
SUB EDX, [ЕСХ]
5. Базовая адресация.
Содержимое базового регистра суммируется со смещением.
Например:
ADD DX, [BX]+100
SUB EDX, [ЕАХ]+10
6. Индексная адресация.
Содержимое индексного регистра суммируется со смещением.
Например:
ADD DX, brr[BP]
SUB EAX,arr[ЕАХ]
7. Индексная адресация с масштабированием.
Содержимое индексного регистра умножается на масштабный коэффициент и суммируется со смещением.
Например:
SUB EAX,arr[EAX*4]
8. Базово-индексная адресация.
Содержимое базового регистра складывается с содержимым индексного регистра.
Например:
ADD EAX,[EBX+ESI]
9. Базово-индексная адресация с масштабированием.
Содержимое индексного регистра умножается на масштабный коэффициент, и результат суммируется с содержимым базового регистра.
Например:
SUB ECX,[EBX+EAX*8]
10. Базово-индексная адресация со смещением.
Содержимое базового регистра складывается с содержимым индексного регистра и со смещением.
Например:
SUB EDX, ЕСХ[ЕАХ+10]
ADD EAX, [ESI][EBP+00ABCFh]
Аналог предыдущей команды:
ADD EAX, [ESI+EBP+00ABCFh]
11. Базово-индексная адресация со смещением и масштабированием.
Содержимое индексного регистра умножается на масштабный коэффициент, и результат добавляется к содержимому базового регистра, которое суммируется со смещением.
Например:
SUB ECX, table[EBX+36+EAX*8]
Аналог предыдущей команды:
SUB ECX, table[EAX*8][EBX+36]
Работа с массивами на ассемблере.
Массив— структурированный тип данных, состоящий из некоторого числа элементов одного типа.
Все элементы массива располагаются в памяти компьютера последовательно.
Интерпритация структуры данных в массиве зависит только от алгоритма обработки этих данных в конкретной программе, а не от особенностей раположения в памяти.
Нумерация элементов массива в ассемблере начинается с нуля.
Для получения адреса элемента в массиве необходимо начальный (базовый) адрес массива сложить с произведением индекса (номер элемента минус единица) этого элемента на размер элемента массива:
база + (индекс*размер элемента)
В качестве базового регистраможет использоваться любой из восьми регистров общего назначения. В качествеиндексного регистратакже можно использовать любой регистр общего назначения, за исключениемESP/SP.
Иногда удобно использовать ECX в качестве номера элемента массива в цикле, организованном с помощью командыloop.
Пример: //сумма всех элементов массива
int mas1[2][4];
asm {
mov ecx,8;
xor eax,eax;
lea ebx,mas1[0];
m1: add eax, [ebx][ecx*4-4];
loop m1;
}
//2 вариант кода
asm {
mov ecx,8;
xor eax,eax;
m1: add eax, dword ptr mas1[ecx*4-4];
loop m1;
}