В 1 регистр загружается длина программы

Память представляет собой очень важный ресурс, требующий четкого управления.

В наши дни объем памяти среднего домашнего ПК в десятки тысяч раз превышает ресурсы первых IBM начала 60-х годов, несмотря на это программы увеличиваются в размерах, стремясь заполнить всю память, доступную для их размещения.

Историческим путем была разработана концепция иерархии памяти, согласно которой компьютеры обладают:

— несколькими мегабайтами очень быстродействующей, дорогой и энергозависимой кэш-памяти;

— несколькими гигабайтами памяти, средней как по скорости, так и по цене;

— несколькими терабайтами памяти на довольно медленных, сравнительно дешевых дисковых накопителях,

— сменными накопителями, таких как CD, DVD, флеш-устройства USB.

Превратить эту иерархию в абстракцию, то есть в удобную модель, а затем управлять этой абстракцией – и есть одна из задач операционной системы.

Если очень просто, то абстракция памяти – запрет программам прямого доступа к памяти, и предоставление программам вместо подлинных адресов памяти — фиктивных (определенных операционной системой). Выделение под каждую программу собственного адресного пространства, которое, собственно, и является абстракцией памяти.

Сумасшедший реестр!

Часть операционной системы, которая управляет иерархией памяти (или ее частью), называется менеджером, или диспетчером памяти. Он предназначен для действенного управления памятью и должен следить за тем, какие части памяти используются, выделять память процессам, которые е ней нуждаются, и освобождать память, когда процессы завершат свою работу.

Рассмотрим несколько возможных реализованных схем.

Память без использования абстракций

Ранние универсальные машины (до 1960 года), ранние мини компьютеры (до 1970 года) и ранние персональные компьютеры (до 1980 года) не использовали абстракции памяти. Каждая программа просто видела физическую память. Когда программа выполняла следующую команду MOV REGISTER1,1000 компьютер просто перемещал содержимое физической ячейки памяти 1000 в REGISTER1. Таким образом, модель памяти, предоставляемая программисту, была простой физической памятью, набором адресов от 0 до некоторого максимального значения, где каждый адрес соответствовал ячейке, содержащей какое-нибудь количество бит, которое обычно равнялось восьми.

Содержание в памяти сразу двух работающих программ не представлялось возможным.

Если первая программа, к примеру, записывала новое значение в ячейку 2000, то она тем самым стирала то значение, которое сохранялось там второй программой. Работа становилась невозможной, и обе программы практически сразу же давали сбой.

Даже в условиях, когда в качестве модели памяти выступает сама физическая память, возможны несколько вариантов использования памяти.

Три из них показаны на рисунке.

ОС может (рис. а) размещаться в нижней части адресов, в оперативном запоминающем устройстве (ОЗУ), или, по-другому, в памяти с произвольным доступом – RAM (Random Access Memory).

2. Как правильно загружать данные в 1С из файла

ОС может размещаться также в постоянном запоминающем устройстве (ПЗУ), или, иначе, в ROM (ReadOnly Memory), в верхних адресах памяти (рис. б).

Или же драйверы устройств могут быть в верхних адресах памяти, в ПЗУ, а остальная часть системы – в ОЗУ, в самом низу (рис. в).

Первая модель прежде использовалась на универсальных машинах и мини-компьютерах, а на других машинах – довольно редко.

Вторая модель использовалась на некоторых КПК и встроенных системах.

Третья модель использовалась на ранних персональных компьютерах (например, на тех, которые работали под управлением MS-DOS), где часть системы, размещавшаяся в ПЗУ, называлась базовой системой ввода-вывода – BIOS (Basic Input Output System).

Недостаток моделей, изображенных на рис. а и в, заключается в том, что ошибка в программе пользователя может затереть операционную систему, и, возможно, с весьма пагубными последствиями.

Вторая схема предполагала прибавление постоянного значения к каждому адресу физической памяти. При всей исправности работы этого механизма он был не самым универсальным решением, и к тому же замедлял загрузку. Более того, это решение требовало дополнительной информации обо всех исполняемых программах, сообщающей, в каких словах содержатся, а в каких не содержатся перемещаемые адреса.

Абстракция памяти: адресные пространства

— если пользовательские программы могут обращаться к каждому байту памяти, они легко могут преднамеренно или случайно испортить операционную систему, раздробить ее код и довести до остановки работы

— довольно сложно организовать одновременную (поочередную, если имеется лишь один центральный процессор) работу нескольких программ. На персональных компьютерах вполне естественно наличие нескольких одновременно открытых программ (текстовый процессор, программа электронной почты, веб-браузер), с одной из которых в данный момент взаимодействует пользователь, а работа других возобновляется щелчком мыши. Этого трудно достичь при отсутствии абстракций на основе физической памяти.

Понятие адресного пространства создает своеобразную абстрактную память, в которой существуют программы.

Адресное пространство – это набор адресов, который может быть использован процессом для обращения к памяти.

У каждого процесса имеется свое собственное адресное пространство, независимое от того адресного пространства, которое принадлежит другим процессам (за исключением тех особых обстоятельств, при которых процессам требуется совместное использование их адресных пространств).

Примеры адресных пространств:

Классическое решение заключается в оснащении каждого центрального процессора двумя специальными аппаратными регистрами, которые обычно называются базовым и ограничительным регистрами.

При использовании этих регистров программы загружаются в последовательно расположенные свободные области памяти без модификации адресов в процессе загрузки.

При запуске процесса в базовый регистр загружается физический адрес, с которого начинается размещение программы в памяти, а в ограничительный регистр загружается длина программы.

Читайте также:
Измените программу отгадай число таким образом чтобы у игрока было ограниченное количество попыток

Недостатком перемещений с использованием базовых и ограничительных регистров является необходимость применения операций сложения и сравнения к каждой ссылке на ячейку памяти. Сравнение может осуществляться довольно быстро, но сложение является слишком медленной операцией из-за затрат времени на вспомогательный сигнал переноса, если, конечно, не используются специальные сумматоры.

На практике суммарный объем оперативной памяти, необходимый для размещения всех процессов, часто значительно превышает имеющийся объем ОЗУ.

Абстракция памяти: свопинг

Для преодоления перегрузки памяти были разработаны два основных подхода.

1. Самый простой из них, называемый свопингом[1], заключается в размещении в памяти всего процесса целиком, в запуске его на некоторое время, а затем в сбросе его на диск. Бездействующие процессы большую часть времени хранятся на диске и в нерабочем состоянии не занимают пространство оперативной памяти.

2. Второй подход называется виртуальной памятью, он позволяет программам запускаться даже в том случае, если они находятся в оперативной памяти лишь частично.

Недостатки

По сути, недостаток только один: очень медленная скорость. Если рабочий процесс помещается в файл подкачки, то его работоспособность резко снижается. Дело в том, что скорость чтения данных с жесткого диска в несколько десятков раз меньше, чем из флеш-памяти физической «оперативки». Потому и скорость работы процесса будет никакой. Возможны различные тормоза и глюки.

Но это случается редко, так как в файл подкачки обычно помещаются процессы, которые не работают в данный конкретный момент времени.

Также весьма распространена проблема с твердотельными накопителями. Если разместить файл подкачки на SSD, то свопинг быстро убьет его. Ресурс такого диска все еще ограничен. Потому и рекомендуется размещать файлы подкачки исключительно на механических жестких дисках. У них ресурс возможных операций куда больше, чем у твердотельных накопителей.

Дополнительный материал: как из флешки сделать оперативную память https://lumpics.ru/how-make-ram-from-flash-drive/

Битовая матрица

При использовании битовых матриц память делится на единичные блоки размером от нескольких слов до нескольких килобайт. С каждым единичным блоком соотносится один бит в битовой матрице, который содержит 0, если единичный блок свободен, и 1, если он занят (или наоборот).

Битовая матрица предоставляет довольно простой способ отслеживания слов памяти в фиксированном объеме памяти, поскольку ее размер зависит только от размера памяти и размера единичного блока памяти.

Основная проблема заключается в том, что при решении поместить в память процесс, занимающий k единичных блоков, диспетчер памяти должен искать в битовой матрице непрерывную последовательность нулевых битов. Поиск в битовой матрице последовательности заданной длины – довольно медленная операция (поскольку последовательность может пересекать границы слов в матрице), и это обстоятельство служит аргументом против применения битовых матриц.

Связанный список

Когда процессы и пустые пространства содержатся в списке отсортированными по адресам, то для выделения памяти новому создаваемому процессу (или существующему процессу, загружаемому в результате свопинга с диска) могут быть использованы несколько алгоритмов:

Алгоритм «Первое подходящее»

Диспетчер памяти сканирует список сегментов до тех пор, пока не найдет пустое пространство подходящего размера. Затем пустое пространство разбивается на две части: одна для процесса и одна для неиспользуемой памяти, за исключением того статистически маловероятного случая, когда процесс в точности помещается в пустое пространство.

«Первое подходящее» – это быстрый алгоритм, поскольку поиск ведется с наименьшими затратами времени.

Алгоритм «Следующее подходящее»

Работает так же, как и «Первое подходящее», за исключением того, что отслеживает свое местоположение, как только находит подходящее пустое пространство. При следующем вызове для поиска пустого пространства он начинает поиск в списке с того места, на котором остановился в прошлый раз, а не приступает к поиску с самого начала, как при работе алгоритма «Первое подходящее».

Его производительность несколько хуже, чем алгоритма «Первое подходящее».

Алгоритм «Наиболее подходящее»

При нем поиск ведется по всему списку от начала до конца и выбирается наименьшее соответствующее пустое пространство. Вместо того чтобы разбивать большое пустое пространство, которое может пригодиться чуть позже, алгоритм «Наиболее подходящее» пытается подыскать пустое пространство, близкое по размеру к необходимому, чтобы наилучшим образом соответствовать запросу и имеющимся пустым пространствам.

Алгоритм «Наиболее подходящее» работает медленнее, чем «Первое подходящее», поскольку он должен при каждом вызове вести поиск по всему списку. Как ни странно, но его применение приводит к более расточительному использованию памяти, чем при использовании алгоритмов «Первое подходящее» и «Следующее подходящее», поскольку он стремится заполнить память, оставляя небольшие бесполезные пустые пространства.

Алгоритм «Наименее подходящее»

Попытка обойти проблему разбиения практически точно подходящих пространств памяти на память, отводимую под процесс, и на небольшие пустые пространства, то есть к неизменному выбору самого большого подходящего пустого пространства, чтобы вновь образующееся пустое пространство было достаточно большим для дальнейшего использования.

Моделирование показало, что применение алгоритма «Наименее подходящее» также далеко не самая лучшая идея.

[1] Свопинг в мире акций. Таким термином брокеры на биржах обозначали быстрый обмен акциями. На «Форексе» тоже есть такое понятие, но там оно обозначает быструю продажу всех акций.

Свопинг в компьютерном мире. В мире ПК и ноутбуков этим термином обзывают процесс освобождения части оперативной памяти и перенесение данных в заранее созданный файл подкачки на жестком диске.

Дата добавления: 2021-11-30 ; просмотров: 145 ; Мы поможем в написании вашей работы!

Поделиться с друзьями:

Источник: studopedia.net

7 Базовый и предельный регистры. Диспетчер памяти.

При использовании базовых и предельных регистров программы загружаются в последовательно расположенные свободные области памяти без модификации адресов в процессе загрузки. При запуске процесса в базовый регистр загружается физический адрес, с которого начинается размещение программы в памяти, а в ограничительный регистр загружается длина программы. Использование базового и ограничительного регистров — это простой способ предоставления каждому процессу своего собственного закрытого адресного

Читайте также:
Глобальные экологические проблемы программа

пространства, поскольку к каждому автоматически сгенерированному адресу перед обращением к памяти добавляется значение базового регистра. Многие реализации предусматривают такую защиту базового и ограничительного регистров, при которой изменить их значения может только операционная система. Недостатком перемещений с использованием базовых и ограничительных регистров является необходимость применения операций сложения и сравнения к каждой ссылке на ячейку памяти. Сравнение может осуществляться довольно быстро, но сложение является слишком медленной операцией из-за затрат времени

на вспомогательный сигнал переноса, если, конечно, не используются специальные сумматоры.

8 Драйвера устройств ввода-вывода. Способы установки драйверов.

Устройства ввода-вывода обычно состоят из двух компонентов: самого устройства и его контроллера. Контроллер представляет собой микросхему или набор микросхем, которые управляют устройством на физическом уровне. Он принимает от операционной системы команды, например, считать данные с помощью устройства, а затем их выполняет.

Программа, предназначенная для общения с контроллером, выдачи ему команды и воспринятая поступающих от него ответов, называется драйвером устройства. Каждый производитель контроллеров должен поставлять вместе с ними драйверы для каждой поддерживаемой операционной системы.

Для использования драйвера его нужно поместить в операционную систему, предоставив ему тем самым возможность работы в режиме ядра. Существует три способа установки драйвера в ядро. Первый состоит в том, чтобы заново скомпоновать ядро вместе с новым драйвером и затем перезагрузить систему. Многие устаревшие UNIX-системы именно так и работают.

Второй: создать запись в специальном файле операционной системы, сообщающую ей о том, что требуется, и затем перезагрузить систему. Во время загрузки операционная система сама находит нужные ей драйверы и загружает их. Именно так и работает система Windows. При третьем способе — динамической загрузке драйверов — операционная система может принимать новые драйверы в процессе своей работы и оперативно устанавливать их, не требуя для этого перезагрузки.

9 Три способа организации ввода-вывода.

Ввод и вывод данных можно осуществлять тремя различными способами. В простейшем из них пользовательская программа производит системный вызов, который транслируется ядром в процедуру вызова соответствующего драйвера. После этого драйвер приступает к процессу ввода-вывода. В это время драйвер

выполняет очень короткий цикл, постоянно опрашивая устройство и отслеживая завершение операции (обычно занятость устройства определяется состоянием специального бита). По завершении операции ввода-вывода драйвер помещает данные (если таковые имеются) туда, куда требуется, и возвращает управление.

Затем операционная система возвращает управление вызывающей программе. Этот способ называется активным ожиданием или ожиданием готовности, а его недостаток заключается в том, что он загружает процессор опросом устройства об окончании работы.

Второй способ заключается в том, что драйвер запускает устройство и просит его выдать прерывание по окончании выполнения команды (завершении ввода или вывода данных). Сразу после этого драйвер возвращает управление. Затем операционная система блокирует вызывающую программу, если это необходимо, и переходит к выполнению других задач. Когда контроллер обнаруживает окончание передачи данных, он генерирует прерывание, чтобы просигнализировать о завершении операции. На первом этапе драйвер передает команду контроллеру, записывая информацию

в его регистры. Затем контроллер запускает само устройство. На втором этапе, когда контроллер завершает чтение или запись заданного ему количества байтов, он выставляет сигнал для микросхемы контроллера прерываний, используя для этого определенные линии шины. На третьем этапе, если контроллер прерываний

готов принять прерывание (а он может быть и не готов к этому, если обрабатывает прерывание с более высоким уровнем приоритета), он выставляет сигнал на контакте микросхемы центрального процессора, информируя его о завершении операции. На четвертом этапе контроллер прерываний выставляет номер устройства на шину, чтобы процессор мог его считать и узнать, какое устройство только что завершило свою работу (поскольку одновременно могут работать сразу несколько устройств). При третьем способе ввода-вывода используется специальный контроллер прямого доступа к памяти (DMA, Direct Memory Access), который может управлять потоком битов между оперативной памятью и некоторыми контроллерами без постоянного вмешательства центрального процессора. Центральный процессор осуществляет настройку контроллера DMA, сообщая ему, сколько байтов следует передать, какое устройство и адреса памяти задействовать и в каком направлении передать данные, а затем дает ему возможность действовать самостоятельно. Когда контроллер DMA завершает работу, он выдает запрос на прерывание, который обрабатывается в ранее рассмотренном порядке.

Источник: studfile.net

ОС. ОС. Лекция 7. Лекция Тема Управление памятью 5 Абстракция памяти

Единственный в мире Музей Смайликов

Самая яркая достопримечательность Крыма

Скачать 3.34 Mb.

Лекция 7. Тема 5. Управление памятью 1.5 Абстракция памяти

Операционные системы и среды

Вопросы:

  • Память без использования абстракций
  • Абстракция памяти: адресные пространства
  • Абстракция памяти: свопинг
  • Абстракция памяти: управление свободной памятью
  • Виртуальная память
  • Подкачка. Алгоритмы замещения страниц

иметь предоставленную только

ему неограниченную по объему и скорости работы ДЕШЕВУЮ память, которая к тому же не теряет своего содержимого при отключении питания.

  • несколькими мегабайтами очень быстродействующей, дорогой и энергозависимой кэш-памяти,
  • несколькими гигабайтами памяти (ОЗУ), средней как по скорости, так и по цене,
  • несколькими терабайтами памяти на довольно медленных, сравнительно дешевых дисковых накопителях,
  • сменными накопителями, CD(DVD)-диски и флеш-устройства USB.
    Превратить эту иерархию в абстракцию, то есть

Концепция иерархии памяти
Ранние универсальные машины (до 1960 года), ранние мини-компьютеры (до 1970 года) и ранние персональные компьютеры (до 1980 года) не использовали абстракции памяти. Каждая программа просто видела физическую память. Когда программа выполняла следующую команду

Читайте также:
Современные методы защиты программ

MOV REGISTER!.1000 ,

компьютер просто перемещал содержимое физической ячейки памяти 1000 в REGISTER1.

Таким образом, модель памяти, предоставляемая программисту, была простой физической памятью, набором адресов от 0 до некоторого максимального значения, где каждый адрес соответствовал ячейке, содержащей какое-нибудь количество бит, которое обычно равнялось восьми.
Содержание в памяти сразу двух работающих программ не представлялось возможным.

Если первая программа, к примеру, записывала новое

значение в ячейку 2000, то она тем самым стирала то значение, которое сохранялось там второй программой. Работа становилась невозможной, и обе программы практически сразу же давали сбой.

Память без использования абстракций

Три простых способа организации памяти при наличии операционной системы и одного пользовательского процесса

Память без использования абстракций

Запуск нескольких программ без абстракций памяти (Вариант 1)

  • сохранить все текущее содержимое памяти в файле на диске, а затем
  • загрузить и запустить следующую программу.
    Поскольку одновременно в памяти присутствует только

Запуск нескольких программ без абстракций памяти (Вариант 2)

Наличие специального дополнительного оборудования позволяет осуществлять параллельный запуск нескольких программ без

Память делилась на блоки по 2 Кбайта, каждому из которых присваивался 4-битный защитный ключ, содержащийся в специальных регистрах за пределами центрального процессора. Машине с объемом памяти в 1 Мбайт нужно было иметь лишь 512 таких 4-битных регистров, и все хранилище ключей занимало в итоге 256 байт памяти.

Слово состояния программы — PSW (Program Status Word) также

содержало 4-битный ключ. Аппаратное обеспечение IBM 360 перехватывало любую попытку запущенного процесса получить доступ к памяти с ключом защиты, отличающимся от ключа PSW. Поскольку изменить ключи защиты могла только операционная система, пользовательские процессы были защищены от вмешательства в работу друг друга и в работу самой операционной системы.

Память без использования абстракций

Запуск нескольких программ без абстракций памяти (Вариант 2)

Проблема абсолютного адреса физической памяти!

Память без использования абстракций

технология статического перемещения.

Она работала следующим образом: когда программа

загружалась с адреса 16384, в процессе загрузки к каждому адресу в программе прибавлялось постоянное значение 16384.

Понятие адресного пространства создает своеобразную абстрактную память, в которой существуют программы.

Адресное пространство — это набор адресов, который может быть использован процессом для обращения к памяти.

У каждого процесса имеется свое собственное адресное пространство, независимое от того адресного пространства, которое принадлежит другим процессам (за исключением тех особых обстоятельств, при которых процессам требуется совместное использование их адресных пространств).

Абстракция памяти: адресные пространства

  • В США и многих других странах местный телефонный номер состоит обычно из семизначного номера. Поэтому адресное пространство телефонных номеров простирается от
  • 0000000 до 9999999, хотя некоторые номера, к примеру, те, что начинаются с 000, не используются.
  • С ростом количества сотовых телефонов, модемов и факсов это пространство стало слишком тесным, а в этом случае необходимо использовать больше цифр.
  • Адресное пространство портов ввода-вывода процессора Pentium простирается от 0 до 16 383.
  • Протокол IPv4 обращается к 32-разрядным номерам, поэтому его адресное пространство простирается от 0 до 232 — 1 (опять-таки с некоторым количеством зарезервированных номеров).

Базовый и ограничительный регистры

Динамическое перераспределения памяти. При этом адресное пространство каждого процесса проецируется на различные части физической памяти.

Классическое решение заключается в оснащении каждого центрального процессора двумя специальными аппаратными регистрами, которые обычно называются базовым и ограничительным регистрами.

Абстракция памяти: адресные пространства

Базовый и ограничительный регистры

При использовании этих регистров программы загружаются в последовательно расположенные свободные области памяти без модификации адресов в процессе загрузки.

При запуске процесса в базовый регистр загружается физический адрес, с которого начинается размещение программы в памяти, а в ограничительный регистр загружается длина программы.

Абстракция памяти: адресные пространства

Для преодоления перегрузки памяти были выработаны два основных подхода.

1. Самый простой из них, называемый свопингом, заключается в размещении в памяти всего процесса целиком, в запуске его на некоторое время, а затем

в сбросе его на диск. Бездействующие процессы большую часть времени хранятся на диске и в нерабочем состоянии не занимают пространство оперативной памяти.

2. Второй подход называется виртуальной памятью, он позволяет программам запускаться даже в том случае, если они находятся в оперативной памяти лишь частично.

Абстракция памяти: свопинг

Абстракция памяти: свопинг

Если предполагается, что большинство процессов по мере выполнения будут разрастаться, то будет лучше распределять небольшой объем дополнительной памяти при каждой загрузке из области свопинга на диске в память или перемещении процесса, чтобы сократить потери, связанные со свопингом или

перемещением процессов, которые больше не помещаются в отведенной им памяти.

Свопингу на диск должна подвергаться только реально задействованная память, копировать при этом еще и дополнительно выделенную память будет слишком расточительно.

Абстракция памяти: свопинг

Абстракция памяти: свопинг

Битовая матрица предоставляет довольно простой способ отслеживания слов памяти в фиксированном объеме памяти, поскольку ее размер зависит только от размера памяти и размера единичного блока памяти.

Абстракция памяти: управление свободной памятью

Когда процессы и пустые пространства содержатся в списке отсортированными по адресам, то для выделения памяти новому создаваемому процессу (или существующему процессу, загружаемому в результате свопинга с диска) могут быть использованы несколько алгоритмов.

Связанный список (Алгоритмы)

Простейший алгоритм называется первое подходящее.

Алгоритм следующее подходящее.

Алгоритм наиболее подходящее.

Алгоритм наименее подходящее.

Алгоритм быстро искомое подходящее.

Абстракция памяти: управление свободной памятью

Источник: topuch.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru