Скільки озу бачить windows 7 x64

Максимальний розмір оперативної пам'яті, який підтримують 32-розрядні системи

Поставимо питання: чи можуть 32-розрядні системи працювати з фізичною пам'яттю більше 4 ГБ в принципі і якщо так, то яким чином.

Головне, що треба зробити на початку, це чітко розділити між собою три поняття:

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

Звернемося до таблиці основних характеристик популярних процесорів від Intel:

Ця таблиця потрібна нам для того, щоб наочно показати той факт, що розрядність адресної шини не завжди збігалася з розрядністю архітектури процесора.
Для початку звернемо увагу на 16-розрядні процесори. Якби вони мали 16-розрядну адресну шину, то максимальний розмірдоступною їм фізичної пам'яті становив би всього 64 КБ (2 16-го ступеня дорівнює 65536). Проте вже Intel 8086 міг працювати з пам'яттю до 1 МБ, а 80286 вже до 16 МБ завдяки 20 і, відповідно, 24 бітам адреси шини.
Епоха процесорів x86 сумісних процесорів з 32-х розрядними регістрами та 4 ГБ ОЗУ почалася з Intel 80386 далекого 1985 року. Протягом наступних 10 років 32-х розрядні процесори архітектури х86 не мали фізичної можливості працювати з пам'яттю понад 4 ГБ.
У 1995 році був представлений процесор Intel Pentium Pro. Поряд із абсолютно новою архітектурою ядра цей процесор отримав 36-бітну адресну шину завдяки чому, як не важко підрахувати, максимальний розмір доступної йому фізичної пам'яті збільшився до 64 ГБ (у сучасних 64-розрядних процесорах використовуються 37 розрядів, що збільшує межу фізичної пам'яті, що адресується до 128 ГБ).
Крім того, в процесорі був реалізований «хитрий» механізм управління пам'яттю, який відображав фізичну пам'ять, розташовану за межами 4 ГБ, в 32-розрядну віртуальну пам'ять в діапазоні 0 - 4 ГБ «обманюючи» таким чином 32-розрядні програми. Такий режим управління пам'яттю процесором х86 отримав назву PAE (Physical Address Extension – розширення фізичних адрес).
Pentium Pro позиціонувався у той час як процесор для серверів та робочих станцій. Справді, уявити 1995 року настільний комп'ютер із обсягом оперативної пам'яті не те що більше, а хоча б віддалено наближається до 4 ГБ, було непросто. Пам'ять вимірювалася тоді мегабайтами. Наприклад, 1998 року обсяг ОЗУ стандартного настільного комп'ютера в 32МБ не вважався невеликим. А коштувала така планка пам'яті від 60 $. І в наш час (2014 рік) повним ходом використовуються комп'ютери менш ніж з 4 ГБ пам'яті. Для роботи офісних програм у зв'язці з Windows XP такого обсягу пам'яті навіть багато. Крім того, процесор Pentium Pro був дуже дорогим і мав проблеми зі швидкодією при виконанні популярних на той час 16-розрядних програм.
Можна сказати, що таке рішення було новим для 32-розрядних процесорів, проте через те, що раніше подібна практика повсюдно застосовувалася в 16-розрядних процесорах, революційної її назвати складно. Адже ще з часів DOS широко застосовувався трюк із сегментною адресацією, коли вся пам'ять була розбита на сегменти в 64КБ і адреса складалася з двох частин: сегмента та зміщення всередині сегмента, таким чином вдавалося використовувати більше 64КБ пам'яті.
Не всі, але переважна більшість сучасних процесорів х86 для настільних комп'ютерів є 64-розрядними та мають підтримку PAE. Завдяки цьому вони не тільки можуть працювати з пам'яттю понад 4 ГБ, а й надають таку можливість 32-бітовим операційним системам.

Найпростіше визначити підтримку режиму PAE процесором виявилося в Linux. У Ubuntu, або в будь-якому з її численних клонів, можна набрати в терміналі:
grep -color=always -i PAE /proc/cpuinfo
В результаті має вийти щось на кшталт цього:


32-розрядні операційні системи

Першою серед 32-розрядних ОС Microsoft стала Windows NT 3.1, випущена 1993 року. Вона призначалася для корпоративного сектора, тобто для серверів та робочих станцій. Двома роками пізніше у 1995 році з'явилася Windows 95 – операційна система для настільних комп'ютерів та ноутбуків. Між двома цими подіями у 1994 році було представлено версію 1.0 ядра Linux. 32-розрядна архітектура виявилася настільки вдалою та «достатньою», що вона повсюдно використовується досі протягом ось уже 2-х десятиліть. Останньою 32-бітною серверною операційною системою Microsoft стала Windows Server 2008. Проте, новітня Windows 8, як і раніше, пропонується у двох варіантах. Для реалізації додаткових можливостей режиму розширення фізичних адрес, крім наявності відповідного процесора та материнської плати з адекватним чіпсетом та необхідною кількістю розлучених адресних ліній, необхідна підтримка PAE безпосередньо операційною системою.
Якщо у вас 32-розрядний Linux, то проблем з використанням пам'яті об'ємом більше 4 ГБ, швидше за все, не виникне. В операційних системах Linux підтримка PAE з'явилася в 1999 році в ядрі 2.3.23 і використовується з тих пір без обмежень.

Подивимося таблицю максимально підтримуваних розмірів фізичної пам'яті, взяту зі статті 2005 року в msdn.microsoft.com, для Windows 2000, Windows XP та Windows Server 2003 >


Як видно з цієї таблиці, режим PAE підтримується у всіх версіях ОС Microsoft, починаючи з Windows 2000. Варіації розмірів максимальної пам'яті в різних версіях серверних операційних систем пояснюються виключно їх позиціонуванням на ринку компанією Microsoft. Напевно, так простіше пояснити їхню відмінну один від одного вартість. Для нас особливий інтерес представляють рядки таблиці, які прямо свідчать, що у всіх версіях Windows XP загальний адресний простір фізичної пам'яті обмежено лише на рівні 4 ГБ. Саме штучно обмежено у ядрі, оскільки підтримка PAE є.
Режим PAE може бути увімкнений, може бути вимкнений. Починаючи з Windows XP SP2 PAE включається примусово для забезпечення роботи технології безпеки DEP (Data Execution Prevention – запобігання виконанню даних).

DEP - це технологія, яка дозволяє захистити операційну систему від великого класу шкідливого коду, який спочатку впроваджується в область пам'яті, відведену під дані та маскується під дані, а потім намагається запуститися з неї. Технологія DEP таке виконання шкідливого коду блокує. Реалізується технологія як програмно, і апаратно. В останньому випадку процесор позначає окремі сторінки пам'яті як такі, що не містять виконуваного коду зміненим старшим бітом в адресній таблиці віртуальної пам'яті PTE (Page Table Entry), а потім перехоплює і запобігає запуск виконуваного коду з цих сторінок.

32-розрядні програми
Завдяки диспетчеру пам'яті процесора, що здійснює її розподіл у режимі PAE незалежно від роботи додатків, та підтримці такого режиму роботи операційною системою, 32-розрядні програми відокремлені від фізичної пам'яті та не мають відомостей про її реальний розмір. Кожному додатку, оскільки для них зберігається 32-бітовий адресний простір, як і раніше, доступні лише 4 ГБ віртуальної пам'яті. У Windows під потреби самого докладання з цих 4 ГБ віддається рівно половина, Linuх - 3 ГБ. У Windows існує можливість примусово віддати додатку 3 ГБ, але, як правило, це недоцільно.
Необхідно мати на увазі, що включення режиму PAE не еквівалентно переходу на 64-бітну систему, в якій кожному додатку виділяється незрівнянно більший обсяг пам'яті. Якщо за рахунок PAE спробувати безпосередньо задовольнити непомірний апетит сучасного застосування, наприклад, пакета інженерного або графічного моделювання, то нічого хорошого не вийде. А от якщо потрібно одночасно запустити кілька вимогливих до пам'яті (але не супервимогливих) програм, то користь від PAE буде пряма. Насамперед це стосується серверів.
Наприклад, потрібна одночасно робота двох віртуальних машин, кожній з яких відведено по 2 ГБ пам'яті. Що буде без PAE зрозуміло – друга віртуальна машина, швидше за все, просто не запуститься, ну або в системі почнеться такий інтенсивний обмін зі swap-файлом, що процес перейде до категорії «покрокова стратегія». З увімкненим PAE, за умови достатнього обсягу фізичного ОЗУ хостової машини, обидві віртуальні машини зможуть успішно працювати.
До недоліків PAE зазвичай відносять можливе зниження продуктивності системи через зменшення швидкості доступу до пам'яті, пов'язаної з додатковими операціями на перемикання сторінок пам'яті, що відображаються, і погану роботудеяких драйверів пристроїв у 36-бітному адресному просторі.

Максимально підтримувані різними версіями Windows обсяги фізичної пам'яті

Подивимося скільки оперативної пам'яті підтримують інші версії Windows, випущених після ХР


У версіях Windows Vistaх86 у порівнянні з ХР практично нічого не змінилося.


Як бачимо, знову жодних змін – абсолютна межа для x86 залишилася на рівні 4 ГБ. 1 ГБ у Windows Vista Starter та 2 ГБ у Windows 7 Starter лише підкріплюють висновок про штучний характер цих обмежень.

Те саме для Windows 8


Як видно з наведеної таблиці, у плані лімітів пам'яті в Windows 8 теж нічого не змінилося. Шкода, могли б уже, мабуть, обмеження зняти чи принаймні відсунути.

І тут саме час розглянути причини, з яких Microsoft обмежує верхню межу доступної фізичної пам'яті клієнтських версіях Windows x86.

Одна з головних причин - Проблеми з безпекою Windows XP.

Windows XP була випущена восени 2001 року і за дуже короткий строкздобула величезну популярність серед користувачів у всьому світі. А, як відомо, де більша популярність, там і великі проблеми. Миттєво для неї було створено величезну кількість шкідливого коду у вигляді різноманітних та численних вірусів. При цьому виявилося, що нова операційна система має низку вразливостей і дуже низьку стійкість до злому. Свого повноцінного клієнтського антивірусного пакета на той час у Microsoft не було. Ситуацію значною мірою виправляли програмні продукти сторонніх розробників, однак цього було явно недостатньо і, в цілому, становище залишалося дуже напруженим.
Для того, щоб якось підвищити безпеку Windows XP, у 2004 році був випущений другий пакет оновлень – SP2. І тут виникли проблеми. Однією з головних особливостей цього пакету, з погляду безпеки, було включення технології DEP (Data Execution Prevention – запобігання виконанню даних). Ця технологія, яка повсюдно використовується і сьогодні, дозволяє відображати цілий клас шкідливих атак завдяки забороні запуску виконуваного коду з непередбачених для цього сторінок пам'яті. Але для роботи DEP має бути включена підтримка PAE (Physical Address Extension – розширення фізичних адрес). Увімкнення режиму PAE змінює механізм звернення до сторінок оперативної пам'яті та робить можливим роботуз фізичною пам'яттю розміром понад 4 ГБ. Однак при підготовці та тестуванні Windows XP з другим пакетом оновлень виявилися великі проблеми, що призводили до фатальних помилок та аварійних відмов у роботі операційної системи. Дуже швидко причини неприємностей знайшли. Ними виявилися драйвери пристроїв, написані без урахування можливості роботи в режимі PAE.

Невеликий відступ.
У режимі PAE будь-яка сторінка пам'яті 32-розрядного віртуального адресного простору програм може бути розташована в будь-якому місці доступної фізичної пам'яті. Звичайні додатки ця обставина не зачіпає, їм все одно. А ось для драйверів пристроїв все значно гірше – їм треба працювати з конкретними фізичними адресами, а не з віртуальними. Умовно ситуацію можна так:


Драйвер намагається рахувати або записати інформацію за адресами, які відведені для роботи з пристроєм. Якщо драйвер "дурний", не розуміє в якому оточенні він працює і не може "договоритися" з операційною системою, то, як показано на малюнку, замість портів введення/виведення свого пристрою він почне спілкуватися з деякими осередками фізичної пам'яті. Результат такого "спілкування" для роботи системи непередбачуваний, аж до повного "зависання" та перезавантаження.

Для того, щоб вирішити цю проблему і не блокувати встановлення SP2 користувачами через можливих проблем Microsoft прийняла командирське рішення - PAE включити, але тривіально обмежити верхню межу доступної оперативної пам'яті клієнтських версій своєї операційної системи на рівні 4 ГБ. Адреси при цьому транслюються один на один як у "класичній" 32-розрядній системі та "дурні" недороблені драйвери пристроїв успішно працюють.
Ну що ж, дешево та сердито. Дешево тому, що виробникам обладнання не потрібно було спішно замовляти розробку "правильних" драйверів. Сердито тому, що відкладені таким чином до певного часу проблеми з використанням фізичної пам'яті комп'ютера були перекладені на кінцевого користувача.
Багато вже гігабайт вибігло з моменту виходу SP2 для XP, а Windows, як і раніше, не бачить оперативну пам'ять більше 4 ГБ і, як ми бачили за таблицею “Physical Memory Limits: Windows 8”, змін у цьому плані не передбачається.
І це не зовсім зрозуміло: для Windows Vista все одно довелося писати нові драйвера, отже, була можливість переписати їх коректно для роботи з PAE, але обмеження в 4 ГБ так і залишилося.
Сьогодні вже дуже важко уявити 32-розрядні драйвери, які не вміють працювати з пам'яттю більше 4 ГБ. Чи можливо причина в тому, що Microsoft таким чином хоче підштовхнути користувачів до переходу на x64?

А як серверні версії Windows?
Можна припустити, що драйвери пристроїв відразу розроблялися з урахуванням роботи у режимі PAE, тобто були “розумними” і ретельно тестувалися. Цьому сприяла та обставина, що у серверних конфігураціях устаткування був такого “звіринця” вбудованих пристроїв.
До недавнього часу, наприклад, до появи технології віртуалізації робочих місць, яка, в тому числі, передбачає можливість обробки графіки самим сервером, останньому не потрібна була серйозна відеокарта, так як цілком вистачало відео, вбудованого в материнську плату. Крім того, 32-розрядні серверні версії Windows закінчили свою історію на Windows Server 2008.

У другій частині секрети розподілу пам'яті у 32-х розрядний Windowsта як боротися з обмеженням.

Якщо ви зайнялися модернізацією комп'ютера, то в списку одних з перших буде оперативна пам'ять. Однак просто так купити і поставити легко, але не факт, що такі дії стануть панацеєю на шляху до реального апгрейду вашого комп'ютера або ноутбука. Справа в тому, що за фактом є обмеження щодо підтримки оперативної пам'яті, за її обсягом залежно від розрядності встановленої на ньому системи.

Скільки за обсягом пам'яті підтримує Windows 32 та 64 розрядна система

Тут діє одне золоте правило, яке буде працювати незалежно від того про яку систему ми зараз ведемо мову, чи то Windows 7, 8 або Windows Vista. 32-розрядна система підтримує обсяг оперативної пам'яті до 3,3-3,5 Гб, а 64-розрядна від 128 Гб і більше. В принципі про подальше можна вже не читати, тому що керуючись цими даними вже можна говорити про те, скільки ж у результаті оперативної пам'яті можна поставити саме вам.

Про підтримку оперативної пам'яті для Windows

Якщо звернутися до даних WinSuperSite, Windows 7,8 підтримує до 192 Гбайт оперативної пам'яті для 64 розрядної системи. Отже, 64-бітна версії Windows 7, як ми писали, коректно "бачить" 192 Гбайт RAM, але знову ж таки тільки для версій Professional, Enterprise та Ultimate. Граничний ліміт обсягу пам'яті для версії Home Basic та Home Premium складе 8 та 16 Гбайт відповідно.
Щодо 32-бітної версії, вона, як і раніше, навіть якщо і «побачить» усю пам'ять, але працює з об'ємом не більше 4 Гбайт RAM.
Загалом, усе так, як ми писали вище. Якщо у Вас 64-розрядна система, то швидше за все ви купите і додасте оперативну пам'ять без проблем. А ось із 32 розрядною системоютакий апгрейд не пройде. Прийде спочатку поставити щось сучасніше, це ми про систему, а потім і думати про оперативну роботу.

Деякі аспекти операційної системи Windows 7 що стосуються:

1. Підтримуваного обсягу оперативної пам'яті

2. Причин великого споживання оперативної пам'яті

сподіваюся, комусь знадобиться ...

Скільки пам'яті підтримує Windows 7?

Погодьтеся, питання цікаве і далеко не пусте, хоча мало хто з нас може похвалитися, що у нього на системі більше, ніж 4 Гбайт оперативної пам'яті. Отже, за даними від WinSuperSite, Windows 7 підтримує до 192 Гбайт оперативної пам'яті, чого не скажеш про Windows Vista. З іншого боку, вона може працювати навіть із 1 Гбайт RAM, пише Softpedia. Як відомо, абсолютна більшість Netbook може похвалитися лише 1 Гбайт оперативної пам'яті, але для Windows 7 це взагалі не проблема.

Щоправда, тільки 64-бітна версія Windows 7 має такі широкі можливості. Що стосується 32-бітної версії, вона, як і раніше, «бачить» не більше 4 Гбайт RAM. І якщо Windows 7 "побачить" всі 4 Гбайт, все одно вона не може працювати з таким обсягом оперативної пам'яті. Скажімо, якщо у вас 4 Гбайт RAM, то 32-бітна версія Windows може використовувати лише від 3,3 до 3,5 Гбайт. Як відомо, це справжній бич для 32-бітних версій всіх операційних систем для desktop та laptop з процесорами на архітектурі x86, і тут Windows 7 не виняток.

Що стосується 64-бітної версії Windows 7, як ми вже писали вище, вона коректно "бачить" 192 Гбайт RAM, але знову ж таки тільки версії Professional, Enterprise та Ultimate. Верхній ліміт для версії Home Basic та Home Premium складає 8 та 16 Гбайт відповідно. Тим не менш, прогрес є, оскільки 64-бітна Windows Vista Business, Enterprise і Ultimate «бачать» тільки 128 Гбайт. Щоправда, у випадку з версіями Home Basic та Home Premium ця межа також становить 8 та 16 Гбайт. А 32-бітна версія Vista, самі розумієте, більше 4 Гбайт все одно нічого не побачить.

Windows 7 «жере» пам'ять. Чи це так погано?

В інтернеті мені доводилося чути безліч гнівних коментарів у стилі «Та Windows 7 – повний відстій! Ви подивіться, як вона жере пам'ять!» На доказ наводяться скріншоти на кшталт того, що нижче, і знову ж таки – все списується на «криворуких індуських програмістів». Давайте подивимося, наскільки обгрунтовані ці наїзди на програмістів Microsoft.

Припустимо, ви придбали комп'ютер із 8 гігабайтами пам'яті. Але невже те, що використовується від сили 1 гігабайт, а вся решта пам'яті простоює - так добре? З виходом Windows Vista і Windows 7 підхід до використання оперативної пам'яті кардинально змінився: тепер ОС намагається використати всю наявну пам'ять максимально ефективно. Зокрема, у Windows Vista та Windows 7 з'явилася фіча під назвою SuperFetch.

Що таке SuperFetch?

SuperFetch - це системний сервіс, що запускається усередині системного процесу svchost. Код його знаходиться всередині DLL%SystemRoot%System32Sysmain.dll. Цей сервіс постійно стежить за тим, які програми запускає користувач, і до яких файлів і файлів даних, що виконуються, вони звертаються. Вся ця інформація зберігається у файлах із розширенням *.db у каталозі %SystemRoot%\Prefetch. Навіщо це все робиться? А ось для чого: сервіс SuperFetch, маючи інформацію про те, з якими програмами користувач працює найчастіше - заздалегідь підвантажує в пам'ять відповідний код і дані, і коли користувач запускає свою програму - вся необхідна інформація вже є в пам'яті, і запуск відбувається набагато швидше - тому що немає необхідності зчитувати інформацію з жорсткого диска. Особливо це помітно на таких «важких» додатках, як сімейство MS Office, функціонал яких може бути «розмазаний» по десятках і сотням exe-шників та dll-ок. SuperFetch настільки «розумна», що може навіть визначати уподобання користувача в різні дні та час доби - наприклад, те, що в робочі дні він працює з Word та Excel, а у вихідні - грається в Call of Duty, і, відповідно - підвантажує в пам'ять необхідних даних. Відповідно, ця область пам'яті позначається як "зайнята", що і відображається в Task Manager'e, створюючи враження "витік пам'яті". Тим не менш, якщо раптом запускається якась програма, що вимагає виділення пам'яті - memory manager спокійно звільняє потрібний простір, а після завершення роботи програми пам'ять звільняється і дані знову завантажуються.

Якщо ж якийсь додаток, наприклад, завершує свою роботу і звільняє пам'ять - то SuperFetch звертається до менеджера пам'яті з проханням підвантажити щойно вивантажений код і дані. Процес цей відбувається з невеликою швидкістю і нижчим (Very Low) пріоритетом, тому робота SuperFetch не призводить до падіння продуктивності. Якщо ви, наприклад, відійдете покурити, а в цей час запуститься фоновий процес, якому необхідна пам'ять (наприклад - антивірусна перевірка), то код і дані програми, з якою ви працювали, можливо, будуть вивантажені з пам'яті. Завдяки ж SuperFetch - до того моменту, коли ви повернетеся з перекуру - дані вашої активної програми будуть повністю або частково підвантажені назад на згадку.

Більше того, SuperFetch може обробляти режими глибокого сну, «сплячий режим» і зміни користувача (fast user switching). Наприклад, якщо система йде в глибокого сну - то SuperFetch зберігає у файл hiberfil.sys код і дані тих додатків, які, на його думку, швидше за все будуть використовуватися після виходу з сну. Як це «думка» формується? Дуже просто - Великий БратSuperFetch дивиться за тобою, і за тим, що ти запускав після виходу з попередніх глибокого сну, і ґрунтуючись на цьому - може припустити, що наступного разу при виході з глибокого сну ти напевно запустиш «аську» і відкриєш свій улюблений браузер, щоби почитати «хабрахабр». Ну а через годинку-другу – відкриєш Visual Studio, тому що проект горить, а терміни здачі – «вчора».

Можна спостерігати за роботою SuperFetch за допомогою того ж Task Manager'a:

Якщо якийсь час поюзати Windows Vista/7, можна помітити, що обсяг вільної пам'яті зменшується. Це відбувається через те, що SuperFetch стандартний системний кеш Windows намагаються утилізувати доступну пам'ять для кешування даних з диска. Наприклад, якщо відразу після завантаження Windowsзапустити Task Manager – видно, що Free Memory – зменшується, а Cached Memory – навпаки збільшується. Якщо ж запустити якусь «жадібну до пам'яті» програму, або ж просто запустити копіювання великого файлу - Free Memory збільшиться і графік «Physical Memory Usage» різко впаде, тому що система звільнятиме пам'ять запущеної програмиАле потім почне потихеньку рости - тому що власне додаток почне цю пам'ять забирати. Однак, згодом SuperFetch підвантажуватиме в пам'ять нещодавно вивантажені дані, тому значення Cached Memory зростатиме, а Free Memory - зменшуватиметься.

Немає схожих постів...

Поділіться з друзями або збережіть для себе:

Завантаження...