- •Организация электронно-вычислительных машин
- •07092012 Лекция 1 Сегментная адресация и сегментная структура программ
- •Создание выполнимой программы на ассемблере с использованием 1,2 и 3 сегментов
- •21092012 Лекция 2 Защита памяти
- •Кольца защиты памяти
- •Альтернативные методы защиты
- •05102012 Лекция 3 Средства аппаратной поддержки управления памятью и многозадачность среды процессора класса i386
- •Средства поддержки сегментации памяти
- •19102012 Лекция 4
- •02112012 Лекция 5 Средства вызова подпрограмм и задач
- •30112012 Лекция 6 Параллелизм как основа высокопроизводительных вычислений
- •Уровни параллелизма
- •Классификация параллельных вс
- •14122012 Лекция 7 Организация памяти вычислительной системы
Создание выполнимой программы на ассемблере с использованием 1,2 и 3 сегментов
Выполнить трансляцию компоновки программ, получить листинги программ и определить размер программы, занимаемый в памяти.
1.Чтобы создать выполнимую программу на основе нужно написать исходный код – Edit, Notepad
*.asm
2.Трансляция – TASM
tasm.exe name_file.asm/L – команда для листинга
*.obj
3.Компанока - TLINK
*.exe
4.Отладка – TD (где что лежит и так далее)
Для одного сегмента:
text segment ‘code’; start CS
assume CS:text, DS:text; предположим что сегментные регистры будут указывать на сегмент команд
(директивы ассемблера)
begin: mov AX, text
mov DS, AX
(двухступенчатая загрузка адреса сегмента команд: сначала в аккумулятор, затем в сегмент команд)
mov AH, 09h; функция DOS вывода на экран
mov DS, offset message; загрузка DS адресом выводимого сообщения
int 21h; прерывание DOS (вызов DOS)
mov AH, 4Ch
mov AL, 00h
(4С – функция завершения программ, 00 – успешное завершение программ)
mov 21h
message db ‘Hello!$’; ололо, выводимый текст
text ends; конец сегмента команд
end begin; конец текс та с точкой входа
(последние две строка – директивы)
21092012 Лекция 2 Защита памяти
Разделение доступа к данным (информации) невозможно без контроля над доступом к другим объектам системы: к ОП, к физическим внешним устройствам и драйверам внешних устройств. В общем случае защита осуществляется по записи и по доступу.
В первом случае возможно только прочесть информацию без её искажения, во втором случае – жесткое ограничение как на запись, так и на чтение.
Существует несколько подходов при организации защиты памяти. Их принято делить на:
Аппаратное
Программное
Аппаратно-программное (смешанный тип)
Защита отдельных ячеек
Каждой ячейке выделяется специальный разряд (1- запрещает изменять информацию, 0 – разрешает). Такой подход имеет очень ограниченное применение, обычно используется числовое программное управление и используется при отладке.
На основе граничных регистров
В этом случае используется два граничных регистра, которые указывают на верхнюю и нижнюю границу области памяти, куда программа имеет право доступа. Так же вводятся специальные индикаторы, определяющие режим обращения.
При каждом обращении к памяти проверяется – находится ли используемый адрес в установленных границах. При выходе за границы происходит прерывание.
Запрос прерываний передает управление диспетчеру памяти (супервизору). Содержимое граничных регистров устанавливается супервизором перед оптимизацией очередной программы.
Если для динамического распределения памяти используется базовый регистр процессора, то он одновременно определяет и нижнюю границу. Верхняя граница подсчитывается супервизором в соответствии с длиной программы в ОП.
На основе ключей защиты
В этом случае вся память логически делится на блоки. Каждому блоку вставится в соответствие код – ключ защиты памяти, а каждой соответствующей программе присваивается код ключа программы. Доступ программы к блоку разрешен, если коды ключей соответствуют друг другу.
Код 0 – данная программа имеет высший приоритет (как правило такой приоритет имеет программа ОС).
По сравнению с двумя предыдущими, данный метод считается более гибким, так как позволяет упрощать обращение к несмежным областям памяти.
