- •Лихачёв д.С.
- •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. Три служебных регистра:
51 Способы передачи аргументов в процедуру.
В языке ассемблера практически нет никаких ограничений по способам передачи аргументов в процедуру и решение проблемы передачи аргументов полностью предоставлено программисту.
Существуют следующие варианты передачи аргументов в процедуру:
через регистры;
через общую область памяти;
через стек;
Передача аргументов через регистры
Это наиболее простой в реализации способ передачи данных. Данные, переданные подобным способом, становятся доступными немедленно после передачи управления процедуре. Этот способ хорошо применять при небольшом объеме передаваемых данных.
Ограничения на способ передачи аргументов через регистры:
небольшое число доступных для пользователя регистров;
нужно постоянно помнить о том, какая информация в каком регистре находится;
ограничение размера передаваемых данных размерами регистра.
Если размер данных превышает 8, 16 или 32 бита, то передачу данных посредством регистров произвести нельзя. В этом случае передавать нужно не сами данные, а указатели на них.
Такой способ передачи аргументов широко применяется при вызове функций операционной системы DOS.
Передача аргументов через общую область памяти
Этот вариант передачи аргументов предполагает, что вызывающая и вызываемая программы условились использовать некоторую область памяти как общую.
Недостаток:в реальном режиме работы микропроцессора отсутствуют средства защиты данных от разрушения, так как нельзя проконтролировать соблюдение правил доступа к этим данным.
Передача аргументов через стек. Пролог и эпилог ассемблерных процедур.
Этот способ наиболее часто используется для передачи аргументов при вызове процедур. Вызывающая процедура самостоятельно заносит в стек передаваемые данные, после чего производит вызов вызываемой процедуры.
При передаче управления процедуре микропроцессор автоматически записывает в вершину стека адрес возврата в вызывающую программу. Если перед передачей управления процедуре командой call в стек были записаны переданные процедуре данные или указатели на них, то они окажутся под адресом возврата.
Стек обслуживается тремя регистрами: SS,ESPиEBP. Содержимое регистров SSиESPизменять не рекомендуется, поскольку микропроцессор работает с регистрамиSSиESPв предположении, что они всегда указывают на вершину стека.
Для осуществления произвольного доступа к данным в стеке архитектура микропроцессора имеет специальный регистр EBP (Base Point – указатель базы). Так же как и для регистра ESP, использование EBP автоматически предполагает работу с сегментом стека. Перед использованием этого регистра для доступа к данным стека его содержимое необходимо правильно инициализировать, что предполагает формирование в нем адреса, который бы указывал непосредственно на переданные данные.Для этого в начало процедуры включается дополнительный фрагмент кода, который называетсяпрологом процедуры:
//пролог
push EBP // сохраняет содержимое EBР в стеке с тем, чтобы //исключить порчу находящегося в нем значения в вызываемой //процедуре
mov EBP,ESP // настраивает EBP на вершину стека
Аргументы процедуры находятся в стеке, начиная с адреса [EBP+8] – для 32 разрядной адресации дляfar-процедур.
Конец процедуры (эпилог) также должен быть оформлен особым образом и содержать действия, обеспечивающие корректный возврат из процедуры.
Эпилог процедуры – фрагмент кода, который восстанавливает контекст программы в точке вызова вызываемой процедуры из вызывающей программы.
Необходимо откорректировать содержимое стека, убрав из него ставшие ненужными аргументы, передававшиеся в процедуру. Это можно сделать следующими способами:
использовать последовательность из п командPOP xx, лучше всего это делать в вызывающей программе сразу после возврата управления из процедуры;
откорректировать регистр указателя стека ESPна величинуk*п, например, командойADD ESP, NN, гдеNN=k*n, ип – количество аргументов,k-длина аргумента в байтах. Это также лучше делать после возврата управления вызывающей процедуре;
используя машинную команду RET n в качестве последней исполняемой команды в процедуре, гдеп – количество байт, на которое нужно увеличить содержимое регистраESPпосле того, как со стека будут сняты составляющие адреса возврата. Этот способ аналогичен предыдущему, но выполняется автоматически микропроцессором.
Например:
//эпилог
pop EBP // извлекает содержимое EBР из стека
ret // возврат из подпрограммы