При объеме основной памяти 2 ГБ какая самая большая программа может быть доступна процессору при поддержке 32-битной адресной шины?
решение1
Если у вас 32-битное адресное пространство, то вы можете адресовать 2^32 (4Gi) байт памяти. Что касается программы, работающей в виртуальном адресном пространстве, я не вижу причин, по которым она не могла бы адресовать и получать доступ к памяти объемом 4GiB.
Это предполагает несколько вещей, таких как ОС, которая использует виртуальную память, возможно, некоторое аппаратное обеспечение (MMU) для помощи и т. д. Но для любого современного 32-битного ЦП и любой современной ОС это не должно быть проблемой. Все современное поддерживает подкачку, поэтому оно должно иметь только часть этих 4GiB, к которой в данный момент осуществляется доступ в физической памяти.
Вот вам и общий ответ, теперь ответ для Windows и x86.
Windows (начиная с эпохи win2000?) использует виртуальную память и подкачку. Она также по умолчанию делит адресный диапазон 4Gi пополам. Верхняя половина для ядра, нижняя половина для пользовательских программ. Это накладывает искусственный предел в 2GiB адреса для пользовательских программ или 3GiB, когда вы загружаете ядро в специальном режиме и используете программы LARGEADDRESSAWARE.
Это ограничит ваши пользовательские программы этим.
Затем есть PAE, искусственно расширяющий шину памяти до 36 бит. PAE — это уродливая ерунда, не нужная с 64-битными процессорами (которые были обычным явлением в течение последних двух десятилетий).
Это превращается в пост типа «что если», а затем «ответ X». А это значит, что было бы неплохо задать более конкретный вопрос.
решение2
Теоретически это может составить 2 ГБ, но часть из них будет зарезервирована и/или использована самой ОС.
Обратите внимание, что 32-битные процессы также ограничены 2 ГБ, даже если вы запускаете их на 64-битной ОС, если только они не были намеренно переработаны. Если переработаны с учетом IMAGE_FILE_LARGE_ADDRESS_AWARE, ограничение становится,по данным MSDN, 3ГБ.