![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.09.2014
Сообщений: 13
|
![]()
Вечер добрый)
Читаю Таненбаума, отвечаю на вопросы. Вопрос звучит так: "В современных ОС адресное пространство процесса отделено от физической памяти машины. 2 преимущества такой системы?" Как я понимаю, адресное пространство это "Виртуальное представление физической памяти". Чтобы обратиться к памяти, нужно спроецировать адресное пространство на физическую память. 1) вероятно, чтобы процесс не мог обратиться в чужую память и системе легче было отслеживать действия процесса(он как-будто в клетке, заключённый в своё адресное пространство) 2)?? Какие есть у вас мысли по этому поводу? |
![]() |
![]() |
![]() |
#2 | ||
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
![]() Цитата:
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
||
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 20.09.2014
Сообщений: 13
|
![]() |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,831
|
![]()
Поехали:
1. программисту нет необходимости знать реальное количество памяти и её распределение по адресам 2. независимость программы от аппаратуры 3. ОС имеет возможность эффективно изолировать процессы один от другого 4. виртуальная память имеет размер, превосходящий имеющуюся в наличии оперативную память компьютера 5. ОС может свободно перемещать процессы внутри памяти, при этом они не подозревают об этих изменениях 6. процесс можно разделить на несколько частей, каждая из которых отдельно отображается на реальную память, т.е. процесс не обязан размещаться в смежном блоке памяти 7. объем ввода-вывода для выгрузки части программы на диск может быть меньше, чем в варианте классического свопинга, в итоге, каждая программа будет работать быстрее 8. поскольку появляется возможность частичного помещения программы (процесса) в память и гибкого перераспределения памяти между программами, можно разместить в памяти больше программ, что увеличивает загрузку процессора и пропускную способность системы |
![]() |
![]() |
![]() |
#5 | ||
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
![]()
Товарищ p51x пояснил все строго и по делу.
Но позвольте я попытаюсь вам немного разжевать этот вопрос более подробно. По поводу названия темы: Цитата:
Виртуальная память - это другой механизм, о котором вы узнаете в последующем. И он берет на себя совсем иную задачу. Но он частично дополняет преимущество виртуального адресного пространства. Но давайте условимся, что этот механизм мы не будем сейчас учитывать. Его будто бы нет. Поэтому, просто вспоминайте лишний раз о том, что программисту необходимо учитывать размер физической памяти (оперативная память). Но это сейчас лишнее. Сперва уточним, что мы говорим о многозадачных ОС. ОС - которые берут на себя обязательства организовывать доступ к ресурсам машины сразу нескольким задачам. Так будет несколько проще понять саму суть.( для однозадачных систем тоже есть свое преимущество в понятии виртуального адресного пространства) В подобных условиях, очень тяжело предугадать, где именно найдется свободное место вашей программе в памяти. Но сам факт того, что оно будет (свободное место) имеет место быть. И вот, собственно, введение понятия виртуального адресного пространства, позволяет представить вашу программу операционной системе в таком виде, в котором позволит ей (операционной системе) загрузить вашу программу в физическую память без нарушения логики ее работы в отношении своих адресов (здесь речь идет только о тех адресах, которые входят именно в ваше виртуальное адресное пространство). Т.е. если вы опираетесь на какой-то конкретный адрес в вашем виртуальном адресном пространстве, то он должен остаться действительным и при расположении вашей программы в физической памяти. Если бы идея о предоставлении каждой программе своего ИНДИВИДУАЛЬНОГО, НЕЗАВИСИМОГО адресного пространства не существовала. Программист заранее должен был бы учитывать это и соотв. вычислять для своей программы только те адреса, которые со 100% вероятностью будут свободны в момент загрузки в память. Т.е. получается, кусочек (я бы даже сказал кусище) обязательств самой ОС программист бы брал на себя. В условиях многозадачности это, скорее всего, недостижимо. Эта проблема отпадает, когда мы говорим о действительно единоличном владении памятью машины (опять же, при условии, что мы не рассматриваем сейчас механизм виртуальной памяти.). В таких условиях можно и отказаться от понятия виртуального адресного пространства. Подводя маленькие итоги. Виртуальное адресное пространство, это скорее не преимущество в сравнении с чем-то. Это попросту НЕОБХОДИМОЕ условия для поддержания многозадачности в системе. Аналогию кстати тоже можно привести. Вы когда идете в кино. Вы заранее не знаете какой ряд и какое место вы займете. Его вам назначает кассир при покупке билета (выдает билет с номером вашего ряда и места). Теперь представьте, что вы оплачиваете билет, а место выбираете сами для себя ЗАРАНЕЕ без какого-либо контроля со стороны кассира (идете по направлению в зал с уверенностью, что ваше место свободно), при этом, если в последствии вы обнаруживаете, что ваше место уже занято кем-то другим, уходили бы попросту домой, или прогоняли бы домой человека, который занимал ваше место. По крайней мере, кто-то из вас в данной ситуации останется обделенным. Некорректно было бы тогда со стороны кинотеатра осуществлять продажу билетов на показ фильма. Какой же это тогда кинотеатр, если не осуществляется контроль мест в зале? (наличие зала и большого экрана давало бы право называться ему кинотеатром, но это был бы плохой кинотеатр) Я не исключаю того, что где-то что-то недоговорил. Если что-то осталось не понятным, спрашивайте. min@y™ Цитата:
Последний раз редактировалось Базиля; 28.11.2015 в 03:04. |
||
![]() |
![]() |
![]() |
#6 | ||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]() Цитата:
Цитата:
1) Виртуализация АПпредназначена в первую очередь для решения вопросов дефрагментации памяти. Что увеличивает эффективность работы динамических программ, а также ОС. Повышая скорость работы. 2) Позволяет задействовать зарезервированную, но не используемую память. Как бы увеличивая память. 3) Возможность экономить память. За счёт объединения одинаковых кусков в один. Что как оказалось малоэффективно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 28.11.2015 в 07:00. |
||
![]() |
![]() |
![]() |
#7 | ||
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
![]() Цитата:
Цитата:
Но, перед этим идет понятие виртуального адресного пространства, без которого в способах распределения особо не разбежишься. Последний раз редактировалось Базиля; 28.11.2015 в 12:07. |
||
![]() |
![]() |
![]() |
#8 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]() Цитата:
в прошлом веке первые CPU прланировались под выполнение одной задачи и вся память принадлежала одной задаче. когда поняли как круто будет выполнять несколько задач "одновременно" на одной железяке полезли проблемы с распределением и управлением памятью, для решения проблемы была предложена модель ремапа памяти, которая теперь используется во всех CPU. |
|
![]() |
![]() |
![]() |
#9 | |
Пользователь
Регистрация: 20.09.2014
Сообщений: 13
|
![]()
Ух ты! Тут прям дискуссия развернулась)
Большое всем спасибо за столь подробные ответы! Пища для мозгов) А теперь вопросики: Цитата:
Что подразумевает под собой слово "действительный"? P.S. Базиля, C кинотеатром отличная аналогия! |
|
![]() |
![]() |
![]() |
#10 | |||
Участник клуба
Регистрация: 03.12.2009
Сообщений: 1,013
|
![]() Цитата:
![]() ![]() Вот это самое последнее преобразование никоим образом не должно разрушить наши ВИРТУАЛЬНЫЕ АДРЕСА (на которые и опирается наш код при своей работе). Они должны остаться действительными (сохранять свою силу действия) ![]() Множество виртуальных адресов - можно интерпретировать как виртуально адресное пространство ![]() В этом сообщении я раскрыл маленькие особенности. Но сам смысл, назначение и цель, никоим образом не поменялись. Процитирую: Цитата:
Буду очень рад, если у вас возникнут новые вопросы. Цитата:
Хотелось бы побольше подробностей. Последний раз редактировалось Базиля; 04.12.2015 в 01:46. |
|||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Управление виртуальной памятью | Donat_Oshchepkov | Visual C++ | 3 | 13.12.2013 16:12 |
Чтение виртуальной памяти процесса | Tambel | Win Api | 9 | 25.11.2013 12:58 |
Управление виртуальной памятью. Курсовая | tuul_wq | Помощь студентам | 0 | 25.11.2012 20:44 |
Архитектура виртуальной памяти Vista | alexabinsk | Помощь студентам | 0 | 25.06.2009 14:36 |
Проблемы с виртуальной памятью. | DeKot | Операционные системы общие вопросы | 13 | 29.05.2009 11:10 |