Форум программистов, компьютерный форум, киберфорум
Наши страницы
Низкоуровневое программирование
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1nquisitor
3 / 3 / 1
Регистрация: 24.02.2014
Сообщений: 96
1

Свойства сегментации Виртуальной памяти

08.07.2019, 13:09. Просмотров 1402. Ответов 9
Метки нет (Все метки)

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


Простой микропроцессор с 16-битной шиной данных и 24-битной адресной шиной поддерживает виртуальную адресацию. Используются 64 16-битных регистров DPPi=0...63 (см картирку). Однако, доступно только 14 младших бит. Длина виртуального адреса составляет 16 бит. Шесть верхних битов указывают на один из 64 регистров. Физическая память получается путем унификации 14-битного адреса страницы и 10 смещенных битов.

Вопросы Каков объем памяти в килобайтах каждого сегмента?

Предлагаемый мною ответ 2^14 * 16bit=256kb

Какое максимальное количество сегментов в физической памяти?

Мой предполагаемый ответ 64*2^14

Какой общий объем физической памяти?

Мой предлагаемый ответ 64*2^14*256kb

Спасибо
0
Миниатюры
Свойства сегментации Виртуальной памяти  
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2019, 13:09
Ответы с готовыми решениями:

Ошибка сегментации(дамп памяти)
Возникает ошибка сегментации. Ошибка связана с методом calcultr(). Не знаю почему так происходит.

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

Свойства шины памяти и подбор планки памяти
Имеется такая конфигурация: Свойства шины памяти Тип шины Dual DDR3...

Подскажите по виртуальной памяти
Привет. Хотле узнать - влияет ли кол-во виртуальных дисков, ну и объём конеш, на произв.,...

Мало виртуальной памяти
Ответьте пожалуйста в каких случаях по переменно машина с системой W XP все время выдает сообщение...

9
Ethereal
7696 / 2255 / 308
Регистрация: 17.02.2013
Сообщений: 3,330
09.07.2019, 07:09 2
Физическая память получается путем унификации 14-битного адреса страницы и 10 смещенных битов.

Вопросы Каков объем памяти в килобайтах каждого сегмента?
Ну там наверно не "смещенных битов", а "битов смещения".
И да, в описании процессора про страницы, а в вопросе про сегменты. Это одно и то-же в терминологии принятой для данного процессора ?

Добавлено через 7 минут
Какой общий объем физической памяти?
Может не общий объем, а максимальный объем ? К данному процессору можно подключить максимум 2^24 байт физической памяти, раз шина адреса 24-х разрядная. Т.е. 16 мегабайт. Но можно ведь подключить и меньше, оставив один или больше старших линий адреса болтаться в воздухе.
Короче, максимальный объем физической памяти 16 мегабайт, а не как ты сосчитал.

Добавлено через 2 минуты
Вопросы Каков объем памяти в килобайтах каждого сегмента?

Предлагаемый мною ответ 2^14 * 16bit=256kb
Если сегмент=страница, то его(ее) размер 2^10 байт, раз под смещение отведено 10 бит. Т.е. килобайт

Добавлено через 6 минут
Какое максимальное количество сегментов в физической памяти?

Мой предполагаемый ответ 64*2^14
Если сегмент есть страница, то 2^14, раз адрес страницы 14-битный.
Или по другому
кол-во.сегментов = макс.объем.физ.памяти / размер.сегмента = 16 мегабайт / килобайт = 2^14
1
1nquisitor
3 / 3 / 1
Регистрация: 24.02.2014
Сообщений: 96
09.07.2019, 10:31  [ТС] 3
Спасибо за ответ. Всё оказалось гораздо проще, чем я думал.
Действительно речь шла о страницах, а не о сегментах. К сожалению, сказались трудности перевода т.к изначально задача у меня на немецком.
Ну и ещё небольшой вопрос. Адресная шина у нас 24бита, а шина данных 16 бит согласно условию задачи.
Вот тут мне не понятно следующее. С помощью адресной шины мы можем выбрать любой адрес в пределах 2^24. Но что делает шина данных? Выходит, найдя адрес в пределах 16мб мы можем взять из него только 16 бит данных за раз (за такт) ? И зачем данные о размере шины данных вообще указаны в задаче, если для решения они не используются.

Добавлено через 35 минут
И еще один вопрос.
У нас есть 64 регистра, каждый из которых хранит адрес одной страницы. Выходит всего 64 страницы, хотя максимальное количество страницы 2^14. Как происходит обновление данных в этих 64 х регистрах? По принцепу Кеша? Типа Cache Miss?
0
Ethereal
7696 / 2255 / 308
Регистрация: 17.02.2013
Сообщений: 3,330
10.07.2019, 06:31 4
Лучший ответ Сообщение было отмечено 1nquisitor как решение

Решение

Цитата Сообщение от 1nquisitor Посмотреть сообщение
И зачем данные о размере шины данных вообще указаны в задаче, если для решения они не используются.
Не знаю. Речь ведь идет о гипотетическом процессоре, реально не существующем. А на существующих, массовых процессорах ширина шины данных определяет только какими порциями процессор данные черпает из памяти.
Вот у самого первого процессора для Intel-овских персоналок были два варианта - 8086 (шина данных 16 бит) и 8088 (шина данных 8 бит). Так вот для программиста они ничем не отличались вообще. Отличались только для схемотехника, который строил электронную схему компьютера. 8086 работал побыстрее, поскольку черпал из памяти слово за раз (а 8088 делал это за два приема), ну а 8088 требовал более простой схемы с меньшим числом обслуживающих микросхем и проводников на печатной плате. Только эта разница для программиста была совершенно скрыта.

Добавлено через 10 минут
Цитата Сообщение от 1nquisitor Посмотреть сообщение
Как происходит обновление данных в этих 64 х регистрах? По принцепу Кеша? Типа Cache Miss?
Ну опять ведь идет речь о гипотетическом процессоре. Так-что могу только гипотетически предполагать. И думаю, что по логике вещей значения этих регистров заполняются не аппаратно, а программно. Либо прикладной программой, либо операционной системой.
Вариант 1. Процессор сделан 16-разрядным. Его шина данных 16-разрядна, АЛУ оперирует только 16-разрядными числами. Но 16 разрядов позволяют адресоваться только к 64к памяти. А этом маловато. Хочется работать не с 64К ОЗУ, а с 16М ОЗУ. Вот для этого 24-х разрядная шина адреса, виртуальная адресация и эти регистры. Их значение будет переключаться программно чтобы адресоваться к тому или иному участку большого по объему ОЗУ. Переключать в программе страницы ОЗУ с которами работаешь.
Вариант 2. Значения этих регистров переключает многозадачная операционка, чтобы спроецировать в разные участки памяти разные задачи. Задачи оперируют виртуальными адресами, написаны в понятиях виртуальных адресов и не знают в какое место физической памяти попадут. Это знает операционка, которая переключая задачи манипулирует этими регистрами и по разному проецирует виртуальную память разных задач на физическую. Одни и те-же адреса виртуальной памяти у разных задач будут прецироваться в разные места физической.

Добавлено через 8 минут
Цитата Сообщение от 1nquisitor Посмотреть сообщение
принцепу Кеша? Типа Cache Miss?
Кеш это совсем не то, что виртуальная адресация. Кеш это посредник между процессором и памятью. Причем он должен был сделан так и работать так, чтобы можно было считать, что его и вовсе не существует. Т.е. он должен быть прозрачен для программиста, пока тот не заинтересуется что там у процессора унутре.
1
10.07.2019, 06:31
1nquisitor
3 / 3 / 1
Регистрация: 24.02.2014
Сообщений: 96
10.07.2019, 14:41  [ТС] 5
Ethereal,

Цитата Сообщение от Ethereal Посмотреть сообщение
Кеш это совсем не то, что виртуальная адресация.

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

Короче, дорогая редакцая, следствие зашло в тупик.

[
Цитата Сообщение от Ethereal Посмотреть сообщение
Ну опять ведь идет речь о гипотетическом процессоре. Так-что могу только гипотетически предполагать. И думаю, что по логике вещей значения этих регистров заполняются не аппаратно, а программно. Либо прикладной программой, либо операционной системой
В самом деле, вышло наоборот. Данные заполняются аппаратно. Заполняются адреса, которые использовались реже всего.
0
Ethereal
7696 / 2255 / 308
Регистрация: 17.02.2013
Сообщений: 3,330
11.07.2019, 01:15 6
Цитата Сообщение от 1nquisitor Посмотреть сообщение
"физическая память выступает в роли односекционного кэша для виртуальной памяти".
Ты имеешь ввиду выгрузку и подкачку виртуальной памяти на жесткий диск в Виндах ? Так, а какое отношение имеют Винды к тому гипотетическому процессору о котором речь в задаче ? И где упоминание про какой-либо жеский диск в задаче ? Где упоминание про операционку, которая осуществляет своп виртуальной памяти на диск в задаче ?

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

Цитата Сообщение от 1nquisitor Посмотреть сообщение
В самом деле, вышло наоборот. Данные заполняются аппаратно. Заполняются адреса, которые использовались реже всего.
Бред. Ну как в твоей задаче хоть что-нибудь будет работать, если вместо физического адреса данных которые программе нужно прочитать будут подставляться адреса памяти, которые используются реже всего ? Ведь этих адресах находится мусор, который программе совершенно не нужен.

В твоей задаче просто маленький процессор в котором программа работает в виртуальном 16-разрядном адресном пространстве, а адреса физической памяти 24-разрядны. Есть виртуальная память и есть физическая. Программа работает в виртуальной. Виртуальная память проецируется на физическую. Никаких кешей в любом смысле (не только в аппаратном) тут и близко нет.

Добавлено через 9 минут
Цитата Сообщение от 1nquisitor Посмотреть сообщение
то с виртуальной памятью ситуация похожая, только вместо регистров у нас работают ячейки физ памяти.
Виртуальная память это по смыслу то, чего не существует. Не может физическая память, которая существует, быть посредником к тому чего нет.
Проецирование абстракции на реальность может быть. Реальность посредником к абстракции быть не может.
1
1nquisitor
3 / 3 / 1
Регистрация: 24.02.2014
Сообщений: 96
11.07.2019, 13:20  [ТС] 7
Ethereal,
Спасибо, что все еще отвечаешь на мои глупые вопросы.

Ситуация такая. Я не рассматриваю никакую операционную систему. Есть просто примитивный процессор (у нас в учебной программе вообще чаще всего упоминается MIPS, но в данном случае это просто какой то себе процессор в вакууме).
На лецкции нам обьясняли принцип работы так. Процессор обращается к ячеке в физ памяти. Если ничего там не находит, берет информацию в виртуальной памяти с одновременной (или последующей записью в соответствующую ячейку физ памяти). Если процессор снова обратиться к этой ячейке, то получит адресный HIT, загрузит данные из физ памяти.
Цитата Сообщение от Ethereal Посмотреть сообщение
И любой из этих кешей не имеют отношения к твоей задаче.
Я сейчас немного вышел за рамки задачи, и пытаюсь посмотреть на ситуацию вцелом.


Цитата Сообщение от Ethereal Посмотреть сообщение
В самом деле, вышло наоборот. Данные заполняются аппаратно. Заполняются адреса, которые использовались реже всего.
Наверное, я неверно выразился в терминах.
Короче, я имел ввиду вот это:

Основные функции механизма подкачки выполняются при попытке процессора получить доступ к страницам, в данный момент не отображенным в физическую память (ОЗУ).Для обеспечения эффективной работы система подкачки должна выбирать для выгрузки те страничные кадры, обращение к которым в ближайшее время наименее вероятно. Существуют различные алгоритмы замещения страниц. В операционных системах используются алгоритмы LRU (англ. Last recently used), FIFO (англ. First In First Out) либо алгоритмы с учётом рабочего множества процесса

Я думаю, это ведь можно реализовать аппаратно? Например с помощью информационных битов?


Цитата Сообщение от Ethereal Посмотреть сообщение
Ты имеешь ввиду выгрузку и подкачку виртуальной памяти на жесткий диск в Виндах ? Так, а какое отношение имеют Винды к тому гипотетическому процессору о котором речь в задаче ? И где упоминание про какой-либо жеский диск в задаче ? Где упоминание про операционку, которая осуществляет своп виртуальной памяти на диск в задаче ?
Как я уже говорил, я не привязан к ОС и пр. Я указал лишь цитату из учебника (архитектура MIPS). Там нет привязки к ОС (скрин прилагаю).
0
Миниатюры
Свойства сегментации Виртуальной памяти  
Constantin Cat
5464 / 1250 / 401
Регистрация: 28.02.2015
Сообщений: 2,719
Завершенные тесты: 1
11.07.2019, 14:53 8
1nquisitor,
Цитата Сообщение от 1nquisitor Посмотреть сообщение
Есть просто примитивный процессор
Посмотрите Столлингс Операционные системы. Глава №3, миниатюра от туда. Там указано для *-никс, но практически в любой ОСи, все происходит аналогично +- килограмм.
1
Миниатюры
Свойства сегментации Виртуальной памяти  
Ethereal
7696 / 2255 / 308
Регистрация: 17.02.2013
Сообщений: 3,330
11.07.2019, 16:25 9
Нашел твою книгу. Там глава 8 начинается с такой фразы
Большинство современных вычислительных систем в качестве нижнего уровня в иерархии памяти используют жесткие диски
Т.е. там речь идет о свопе памяти на диск как в Винде. А теперь смотри. Оказалось есть два способа толкования одного и того-же :

Мое : Виртуальная память это некоторая абстракция, ее в реальности нет. Программа работает в адресном пространстве этой абстракции. Операционная система проецирует диапазоны адресов этой абстракции на физическую память, а если физической памяти не хватает, то она начинает скидывать определенный участки физической памяти на жеский диск и подгружать их обратно по мере надобности. Как говорят начинает свопить (swap - обменивать) винтом.

В книге : Виртуальная память находится на жеском диске, а физическая память - быстрый кеш для ее подгрузки.

И мне вот ни фига такой толкование термина не нравится. Ибо
- Если физической памяти для данной задачи хватает и свопа винтом нет, то на жестком диске ничего нет и никаких данных туда не попадет. Какой тогда смысл говорить о том, что виртуальная память на диске ? Гораздо логичнее говорить, что на диске файл подкачки виртуальной памяти, а не сама эта память.
- В твоей задачке физической памяти 2^24 БОЛЬШЕ, чем виртуальной 2^16. Поэтому жесткий диск даром не нужен и даром не нужен своп. Однако термин виртуальная память ТОЖЕ применяется. И очевидно совсем в ином смысле, чем в книге. В книге-то рассматривается ситуация когда виртуальная память больше физической и нужен диск для свопа. А в задачке виртуальная память меньше физической и жесткий диск и своп памяти на него отсутствуют. Однако термин виртуальная память применяется и там и там.

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

Ну а ты сам выбирай какое толкование термина отложить себе в подкорку.

Добавлено через 36 минут
Цитата Сообщение от 1nquisitor Посмотреть сообщение
На лецкции нам обьясняли принцип работы так. Процессор обращается к ячеке в физ памяти. Если ничего там не находит, берет информацию в виртуальной памяти с одновременной (или последующей записью в соответствующую ячейку физ памяти). Если процессор снова обратиться к этой ячейке, то получит адресный HIT, загрузит данные из физ памяти.
Это перепев все той-же песни про то, что виртуальная память на диске.
Но ты написал в раздел ассемблер, а ассемблерщики постоянно работают с этой виртуальной памятью ни разу не понимая, что она на каком-то диске. Вот например та-же Винда. Работающая прикладная программа не умеет обращаться напрямую к адресам физической памяти. Она даже не знает по каким адресам физической памяти она находится. Она думает, что загрузилась с адреса 400000h. И другая программа, работающая одновременно с первой думает, что загрузилась с того-же адреса. А это потому, что обе программы живут в мире виртуальных адресов. Они обращаются к виртуальным адресам. И уже процессор некоторым аппаратным механизмом проецирует эти адреса на адреса физической памяти. И физическая память это именно ОЗУ, а виртуальной на самом деле нет. Она - только иллюзия для программы. И заведует этим механизмом операционка и управляет этим механизмом программно. И вообще
https://ru.bmstu.wiki/%D0%92%D0%B8%D...D0%BC%D1%8B%29
Цитата оттуда :
Виртуальная память — метод управления памятью, которая реализуется с использованием аппаратного и программного обеспечения компьютера. Она отображает используемые программами виртуальные адреса в физические адреса в памяти компьютера. Основная память представляется в виде непрерывного адресного пространства или набора смежных непрерывных сегментов. Операционная система осуществляет управление виртуальными адресными пространствами и соотнесением оперативной памяти с виртуальной.

Так это ровно то, что я выше говорил. Для программиста-системщика виртуальная память - вот это. И в твоей задачке виртуальная память именно это. А своп памяти на диск который имелся ввиду в этих фразах
Цитата Сообщение от 1nquisitor Посмотреть сообщение
Если процессор снова обратиться к этой ячейке, то получит адресный HIT, загрузит данные из физ памяти.
это механизм при частном случае применения виртуальной памяти и дело десятое.

Хотя наверное для пользователя компьютера достаточно представлять виртуальную память на диске и в виде свопа на диск, но как-то неправильно это. Как будьто для одной специальности даем одно знание, а для другой другое. Ну знаешь как при царе в церковно-приходских школах даже учителей не было, а были учащие (разница в сословиях, учитель предполагал минимум личное дворянство) и эти учащие учили, что Земля плоская и по краям хрустальные стены.
0
1nquisitor
3 / 3 / 1
Регистрация: 24.02.2014
Сообщений: 96
11.07.2019, 21:22  [ТС] 10
Ethereal,
Объяснил как Боженька. Спасибо, добрый человек. Ты реально мне помог с тем, что импортные профессора объясняли через пень-колоду.
0
11.07.2019, 21:22
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2019, 21:22

Нехватка виртуальной памяти
Всем привет!) Комп стал глючить при запуске Фотошопа и Оперы пишет что нехватает виртуальной...

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

На ПК не хватает виртуальной памяти
люди добрые помоги пожалусто :-[ у меня такая проблема. У меня нехватает виртуальной памяти. я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru