- •Лихачёв д.С.
- •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. Три служебных регистра:
50 Понятие модульного программирования. Понятие подпрограммы. Ассемблерные процедуры и функции.
Понятие модульного программирования.
Применительно к языку ассемблера при использовании концепции модульного программирования можно выделить несколько форм организации управляющих связей.
1. Использование механизма макроподстановок, позволяющего изменять исходный текст программы в соответствии с некоторыми предварительно описанными параметризованными объектами, имеющими формальные аргументы.
2. Использование механизма подпрограмм, написанных на ассемблере и структурно входящих в одну программу.
3. Использование механизма подпрограмм, написанных на разных языках программирования и соединяемых в единый модуль на этапе компоновки.
При описании модулей и процедур часто оперируют такими понятиями как аргумент, переменная, константа.
Аргумент– это ссылка на некоторые данные, которые требуются для выполнения возложенных на модуль функций и размещенных вне этого модуля.
Переменная– это нечто, размещенное в регистре или ячейке памяти, что может в дальнейшем подвергаться изменению.
Константа– данные, значение которых никогда не изменяется.
Если некоторые данные в модуле могут подвергаться изменению, то это переменные. Если переменная находится за пределами модуля (процедуры) и должна быть как-то передана в него, то для модуля она является формальнымаргументом. Значение переменной передается в модуль для замещения соответствующего параметра при помощи фактическогоаргумента.
Понятие подпрограммы.Ассемблерные процедуры и функции.
Процедура (подпрограмма) – это основная функциональная единица декомпозиции (разделения на несколько частей) некоторой задачи и представляет собой группу команд для решения конкретной подзадачи, обладает средствами получения управления из точки вызова задачи более высокого уровня и возврата управления в эту точку.
В простейшем случае программа может состоять из одной процедуры. Другими словами, процедуру можно определить как правильным образом оформленную совокупность команд, которая, будучи однократно описана, при необходимости может быть вызвана в любом месте программы.
Процедура может размещаться в любом месте программы, но так, чтобы на нее случайным образом не попало управление. Если процедуру просто вставить в общий поток команд, то микропроцессор будет воспринимать команды процедуры как часть этого потока и, соответственно, будет осуществлять выполнение команд процедуры. Учитывая это обстоятельство, есть следующие варианты размещения процедуры в программе:
в начале программы, до первой исполняемой команды;
в конце, после команды, возвращающей управление операционной системе;
промежуточный вариант – тело процедуры располагается внутри другой процедуры или основной программы, в этом случае необходимо предусмотреть обход процедуры с помощью команды безусловного перехода JMP;
в другом модуле.
При разработке процедур следует учитывать специфику механизма вызова процедур, благодаря которому сохраняется информация о контексте программы в точке вызова процедуры.Контекст – информация о состоянии программы в точке вызова процедуры.
В системе команд микропроцессора есть две команды, осуществляющие работу с контекстом. Это команды callиret:
CALL [модификатор] имя процедуры – вызов процедуры (подпрограммы). КомандаCALL, подобноJMP, передает управление по адресу с символическим именемимя процедуры, но при этом в стеке сохраняется адрес возврата.Адрес возврата– это адрес команды, следующей после командыcall;
RET[число] – возвращает управление вызывающей программе, т.е. считывает адрес возврата из стека и загружает его в регистрыCSиIP/EIP, тем самым возвращая управление на команду, следующую в программе за командойCALL,[число] – необязательный параметр, обозначающий количество элементов, удаляемых из стека при возврате из процедуры.
При использовании CALL необходимо учитывать особенности организации ближних и дальних переходов (параметр [модификатор]).