Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Виртуальная память
 
 автор: Mookapek   (23.12.2007 в 23:24)   письмо автору
 
 

Что это такое?

   
 
 автор: Unkind   (23.12.2007 в 23:46)   письмо автору
 
   для: Mookapek   (23.12.2007 в 23:24)
 

RAM (+ файл подкачки)

   
 
 автор: Mookapek   (24.12.2007 в 00:06)   письмо автору
 
   для: Unkind   (23.12.2007 в 23:46)
 

а что такое файл подкачки?

   
 
 автор: sim5   (24.12.2007 в 05:43)   письмо автору
 
   для: Mookapek   (24.12.2007 в 00:06)
 

Физически это зарезервированный участок на винчестере - файл pagefile.sys. Если для работы приложения не хватает оперативной памяти, то система будет организовывать такую память на винчестере, в выше названном файле, записывая и считывая ее блоками. Например, если открыто несколько приложений, и на данный момент времени активным является одно из них, то участки памяти RAM занятые неактивными приложениями будут "сброшены" в виртуальную память, а реальная память будет отдана активному приложению.
Файл подкачки расположен в корне системного диска, но так как он интенсивно используется системой, то лучше его держать на другом физическом (худший вариант - логическом) диске в самом его начале. Если в системе установлено достаточно оперативной памяти, то файл подкачки лучше вообще отключить.
Если на компьютере установлено несколько операционных систем: win 98, win XP, Vista, например, то можно указать этим системам использовать один файл подкачки.

   
 
 автор: sim5   (24.12.2007 в 05:30)   письмо автору
 
   для: Unkind   (23.12.2007 в 23:46)
 

RAM не входит в виртуальную память, это как раз реальная.)

   
 
 автор: Trianon   (24.12.2007 в 09:44)   письмо автору
 
   для: sim5   (24.12.2007 в 05:30)
 

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

   
 
 автор: sim5   (24.12.2007 в 11:22)   письмо автору
 
   для: Trianon   (24.12.2007 в 09:44)
 

Нет, это вы ошибаетесь.) RAM - это физическая память, своп - виртуальная. Не надо путать понятия памяти занятой процессом и вообще памятью, приложению может вообще потребоваться минимум памяти и при этом хватит мизерной доли от RAM. Например, у меня достаточно памяти RAM установленной в системе, чтобы отключать вообще свопинг, включаю его только тогда, когда системе не хватает ресурсов памяти RAM.
Вы просто говорите о понятии адресного пространства в системе, которое в Windows может быть огромного размера (вроде 4ТГбайт, если помню точно) за счет виртуальной памяти, но это ведь совсем другое понятие.
Вот вам пример - 8-разрядный микроконтроллер. Для простоты считаем, что его адресная шина также имеет 8 разрядов, и он может адресовать 256 ячеек памяти плоского адресного пространства. Причем, в микроконтроллерах память разделяется на два типа - память программ и память данных. В первом случае это ПЗУ, во втором ОЗУ. Тем не менее, я могу подключить еще дополнительные ПЗУ и ОЗУ к микроконтроллеру, и организовать доступ к этой дополнительной памяти постранично. В пределах каждой страницы это будет плоское представление памяти, а в целом же всю память нельзя представить как плоскую, контороллер будет работать с виртуальной памятью. Все это достигается чисто программно-аппаратным способом. В данном случае понятия реальности и виртуальности явно не одно и то же.

   
 
 автор: cheops   (24.12.2007 в 12:23)   письмо автору
 
   для: sim5   (24.12.2007 в 11:22)
 

/*Задумчиво листая Рихтера*/ Что-то я больше к мнению Trianon склоняюсь...

Понятие виртуальной памяти насколько я считал до этого момента - всё-таки программная вещь, а не железная и реализуется она программно.

   
 
 автор: sim5   (24.12.2007 в 12:34)   письмо автору
 
   для: cheops   (24.12.2007 в 12:23)
 

А я работаю без своп файла вообще, какая у меня тогда память? И чему она равна?

   
 
 автор: cheops   (24.12.2007 в 13:00)   письмо автору
 
   для: sim5   (24.12.2007 в 12:34)
 

Хм... а в диспетчере задач колонка виртуальной памяти тоже вся по нулям?

   
 
 автор: sim5   (24.12.2007 в 13:23)   письмо автору
 
   для: cheops   (24.12.2007 в 13:00)
 

У меня нет в системе виртуальной памяти вообще, я работаю с отключенным своп файлом, и весь объем памяти в системе, это реально существующая память - 4 ГБайта с двойным доступом.
Я не понимаю, как можно понятия виртуальности применять к реальности. Если, например, 32-разрядная шина может обеспечить не более 4 ГБ памяти, то сколько бы мы не говорили о виртуальности, больше от этого памяти не станет, пока мы не обеспечим эту самую виртуальность. Но мы обеспечиваем не память как таковую, а временное хранение данных реальной памяти в виртуальной.
Да, в системе может быть запущеного много процессов, много приложений, и система каждому приложению будет квотировать свои системные ресурсы, устройства ввода/вывода, устройства хранения данных, и конечно память. При этом каждое приложение работает в виртуальной области, и каждому приложениею кажется, что оно одно любимое в системе, и только оно владеет всем. Но система предоставляет приложению память, которую оно запрашивает, а не приложение ею владеет, и если этой реальной памяти не хвататет, то и будет задействована виртуальная, в Widows это винчестер. Сам винчестер назвать ОЗУ можно только с очень-очень большой натяжкой, потому, надо еще загрузить эту виртуальную память в реальную, а только потом отдать приложению. "Громыхающая" работа такой виртуальной памяти очень хорошо наблюдалась на старых машинах.

   
 
 автор: ddhvvn   (24.12.2007 в 14:31)   письмо автору
 
   для: sim5   (24.12.2007 в 13:23)
 

sim5, извините, что прерываю Вашу дискуссию с Трианоном и Хеопсом...

>Файл подкачки расположен в корне системного диска, но так как он интенсивно используется системой, то лучше его держать на другом физическом (худший вариант - логическом) диске в самом его начале.

Я не понял, если файл подкачки на другом логическом диске, то это еще хуже чем, если он находится на системном диске?

   
 
 автор: sim5   (24.12.2007 в 14:51)   письмо автору
 
   для: ddhvvn   (24.12.2007 в 14:31)
 

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

   
 
 автор: ddhvvn   (24.12.2007 в 16:40)   письмо автору
 
   для: sim5   (24.12.2007 в 14:51)
 

Все ясно.. спасибо!

   
 
 автор: cheops   (24.12.2007 в 20:29)   письмо автору
 
   для: sim5   (24.12.2007 в 13:23)
 

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

PS Если честно, но мне всё равно, так как памятью операционная система распоряжается, а самостоятельно управлять ей желаение ни разу не возникало (хотя Windows API предоставляет широкие средства для этого).

   
 
 автор: ddhvvn   (24.12.2007 в 20:33)   письмо автору
 
   для: cheops   (24.12.2007 в 20:29)
 

>...самостоятельно управлять ей желаение ни разу не возникало (хотя Windows API предоставляет широкие средства для этого).

Ссори за нескромный вопрос: а для чего? Ну хоть Вы и не пользовались этой возможностью, но навреняка знаете, что можно сделать? Увеличить/уменьшить размер? Или по-совему усмотрению кидать файлы туда-сюда?

   
 
 автор: cheops   (25.12.2007 в 00:41)   письмо автору
 
   для: ddhvvn   (24.12.2007 в 20:33)
 

Нет, там всё гораздо сложнее - это Linux начинает скидывать страницы, когда заканчивается оперативная память, Windows задействует виртуальную память гораздо раньше, позволяя отображать динамические библиотеки в виртуальную память, назначать конкретные блоки программы для размещения на диске или в оперативной памяти... Если интересно, можно почитать в книге Дж. Рихтера Windows для профессионалов, которая является библией системных программистов под Windows.

   
 
 автор: Trianon   (24.12.2007 в 20:47)   письмо автору
 
   для: sim5   (24.12.2007 в 13:23)
 

http://ru.wikipedia.org/wiki/Виртуальная_память

Собственно, это не в качестве аргумента в споре... предмета не вижу.

   
 
 автор: sim5   (25.12.2007 в 03:03)   письмо автору
 
   для: Trianon   (24.12.2007 в 20:47)
 

Так я и не говорю, что вы Дон Кихот, а я пустая мельница. :)
Память на компьютере ведь, это не только OЗУ как таковое, это адресное пространство, которым физически может управлять процессор, и в котором часть адресов отдана под устройства ввода/вывода, часть под ПЗУ, часть под ОЗУ и т.д.. Физическую память подключаемых устройств также можно рассматривать как продолжение этого адресного пространства, так как мы можем иметь к этой памяти доступ, к таковым естественно можно отнести и винчестер. Вот от куда и растут ноги идеи виртуальности.
Каждое приложение имеет право на все это адресное пространство, и оно получает это право, но "вроде бы как", так как рядом с любым приложением, работает другое, точно также претендующее на все пространство адресов. Но все это обман по большому счету, все они работают в одном реальном адресном пространстве, причем не все одновременно, а по временным квотам, которые дает система каждому приложению - каждому Nn процессорного времени. И получается, что одновременно виртуально существует множество одинаковых адресных пространств, в которых работает множество процессов.
Первые дамашние компьютеры на 8-разрядных i8080 не имели операционных систем, и в них нельзя было запустить несколько приложений, да и программист должен был указывать сам область адресов этих приложений, следить за этим, так как о программах с перемещаемыми адресами и речи не было. Хотя это можно было сделать, вот только управлять этим было некому. Но ведь и тогда уже программы хранили свои данные на дискете, по мере их надобности считывали их - и чем это отличается от виртуальности по принципу?
С появлением Windows 95 появились понятия вытесняющей многозадачности, виртуального пространства адресов, а ведь зачатки всего этого были еще в Windows 3.11, но как-то об этом не говорилось, просто подход к этому у этих ОС очень разителен.
Вероятно на 100%, вы заметили, что если у вас в системе запущенных приложений мизер, да и они сами по себе "не прожорливые", даже в этом случае Windows работает со свопингом. Если у вас достаточно реальной памяти в системе, отключите своп, и вы заметите, что ваш компьтер будет шевелиться быстрее, и можно забыть о виртуальной памяти в части RAM, но уж виртуальные процессы в виртуально-реальных адресных простанствах так и будут работать.
Виртуальность это миф и химера, наваждения и галлюцинации. :))

   
 
 автор: Trianon   (25.12.2007 в 13:14)   письмо автору
 
   для: sim5   (25.12.2007 в 03:03)
 

Пурга.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования