Cтраница 4
СМ-4 без диспетчера памяти обеспечивают 16-разрядную адресацию памяти, в распоряжении программиста остается только 28 Кслов ( 56 Кбайт) адресного пространства. Старшие 4 Кслов памяти с адресами от 1600008 до 177776s в этом случае не используются, а соответствующие им старшие адреса ОШ зарезервированы для регистров внешних устройств и для отдельных регистров процессора. [46]
![]() |
Распределение памяти. [47] |
Во-первых, процессор воспринимает 32К - словное адресное пространство программы как один непрерывный блок памяти, в то время как ее страницы могут располагаться в несмежных участках физического адресного пространства. Во-вторых, в зависимости от диапазона виртуальных адресов и содержимого соответствующих регистров диспетчера памяти, страницы виртуального адресного пространства программы могут отображаться как в младшие, так и в старшие адреса физической памяти. [48]
Фрагментация ОП наблюдается не только между зонами пользовательских задач, но и внутри них. Если ЭВМ не имеет аппаратных средств реализации виртуальной памяти, ее страничной организации, то фрагментация ОП - существенное препятствие на пути увеличения пропускной способности ВС и эффективного использования всех ее вычислительных ресурсов. К мерам по устранению фрагментации ОП относят, например, динамическое перемещение программ, при котором пользовательские программы постоянно сдвигаются к одному краю динамической зоны задач, например в область старших адресов ОП, освобождая тем самым в области младших адресов связную зону, достаточную по своим размерам для загрузки еще одной пользовательской задачи. [49]
Недопустимо, чтобы одна из программ пользователя использовала средства, которые могут повлиять на состояние других программ. Если в программе пользователя встречается одна из недопустимых команд, то эта команда не выполняется и происходит внутреннее прерывание. Кроме того, она не может осуществлять операции ввода-вывода, что обеспечивается следующим образом. Поэтому при обращении к старшим адресам процессор автоматически выставляет единицы на двух старших адресных линиях интерфейса Общая шина. В УВК СМ-4, если включен диспетчер памяти, состояние этих линий зависит от регистров смещения страниц. Таким образом, системная программа получает возможность доступа к ВУ. [50]
![]() |
Виды сдвигов. [51] |
В микропроцессорном устройстве на МПК КР580 стек организуется следующим образом. В оперативной памяти ( ОЗУ) команды размещаются в ячейках с младшими, последовательно нарастающими адресами. Стек использует ячейки со старшими адресами и по мере заполнения стека занимаются ячейки с адресами, последовательно убывающими. [52]
Для обмена данными с пространством ВВ имеются две команды ввода IN и две команды вывода OUT. Первая пара команд IN и OUT работает с коротким 8-разрядным адресом, обеспечивающим доступ к первым 256 портам ВВ с младшими адресами. При обращении к портам со старшими адресами реализуется второй вариант команд IN и OUT с косвенной регистровой адресацией, когда регистр DX служит 16-разрядным указателем порта. [53]
![]() |
Расположение программы и информации в оперативной памяти - ЭВМ. [54] |
Это позволяет программисту организовать оптимальное распределение памяти между программой и данными. На рис. 1 представлена схема такого расположения. Текст программы размещается, начиная со старших адресов ( с конца ОЗУ), а регистры - с младших адресов ОЗУ. [55]
Сегментные регистры соответствуют четырем сегментам памяти: данных - DS, стека - SS, кода - CS и промежуточных данных - ES. В каждом из этих регистров хранятся 16 старших разрядов кода адреса соответствующего сегмента памяти; 20-разрядный физический адрес, позволяющий работать с памятью емкостью до 1 Мбайт, образуется в СМА путем сдвига базового адреса сегмента на четыре разряда влево и сложения его с 16-разрядным адресом смещения. Адрес смещения находится в одном из регистров указателей или индексов УО и позволяет адресовать байты или слова в пределах 64 Кбайт выбранного сегмента. Если полученное в СМА значение превышает значение самого старшего адреса сегмента, то физический адрес вновь отсчитывается от начала сегмента до значения превышения. При вычислении физического адреса операнда в качестве базового адреса используется содержимое регистров сегмента данных и сегмента промежуточных данных, а при вычислении физического адреса команды - содержимое регистра сегмента кода. Регистр адреса команд ( указатель команд) IP соответствует счетчику команд микропроцессора К580ВМ80А и указывает следующую команду, которая будет выполняться после текущей команды. Устройство сопряжения записывает в него из У О смещение следующей команды от начала текущего сегмента кода. Если содержимое регистра адреса команд засылается в стек, то происходит автоматическая настройка его на адрес следующей команды. [56]
На рис. 3.1 показана схема исполнения этой команды. Обратите внимание на то, что против ожидания микропроцессор 8088 заполняет данные в памяти в обратном порядке. Старший байт слова следует за младшим байтом, а не предшествует ему. Чтобы усвоить это, запомните, что старшая часть ( старшие биты) данных располагается в ячейках памяти со старшими адресами. [57]
Одна позволяет продолжать работу системы после отказа одного из устройств-системной памяти. Модель 165 также включает аппаратные средства проверки памяти путем пульсирующей записи или чтения нулей и единиц в доступных ячейках памяти с целью обнаружения запоминающего устройства, дающего сбой. Такая проверка памяти может проводиться в совмещенном режиме во время нормальной работы вычислительной машины. Средства проверки памяти, работающие в совмещенном режиме, применимы к тому запоминающему устройству, которое отключено от системы; ему присваиваются при этом старшие адреса. [58]
Точные детали процесса загрузки операционной системы UNIX варьируются от системы к системе. Ниже будет кратко рассмотрено, как загружается 4.4 BSD, но в своей основе это описание применимо и для других версий. Когда компьютер включается, в память считывается и исполняется первый сектор ( главная загрузочная запись) загружаемого диска. Этот сектор содержит небольшую ( 512-байтовую) программу, загружающую автономную программу под названием boot с загрузочного устройства, как правило, с IDE или SCSI-диска Программа boot сначала копирует саму себя в фиксированный адрес памяти в старших адресах, чтобы освободить нижнюю память для операционной системы. [59]