Author Topic: Windows 10, DEP (Data Execution Prevention), PAE (Physical Address Extension)  (Read 817 times)

zxcvbob

  • friend
  • Senior Member
  • ***
  • Posts: 12,253
I want to install the 32-bit version of Windows 10 (probably Professional) on a laptop with 8GB or RAM.  I know it's quite possible that I can only use about 3.5GB of that available RAM, but Windows is supposed to support PAE, so if I set it up right each process should be able to address 4GB with the processor handling the paging.  But when I search on it, pretty much all I find is "4GB *slap*, get a real OS", and conventional wisdom is getting in the way of finding the right answer.  But I'm finding a few hints that maybe if I enable DEP in the advanced system settings, that requires PAE and will enable it; then my machine will be able to use all 8GB (just not in the same process.)  But I've also seen comments that that only works in "server" editions of Windows and the desktop distros don't support it, or they have software limits imposed.  Also I've seen something about editing my boot loader to enable PAE; something about BCDedit.

Does this even make any sense?

The obvious queston is "Why do you want to do this?"  Because it's there! :D  I want a Windows 10 laptop that I can install old DOS and Windows 3 software on natively (mostly games), and I want to see if I can get it configured to use all the available memory as a learning experience.  I don't have any software that requires 64-bit, and if I did I have other computers for that.

Don't ask how many computers I have; it's embarrassing.  :laugh:  And I'm thinking of buy another used Thinkpad for this experiment.
"It's good, though..."

zxcvbob

  • friend
  • Senior Member
  • ***
  • Posts: 12,253
I found this at M$:  https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/boot-parameters-to-configure-dep-and-pae

Looks like "bcdedit /set nx AlwaysOn" and a reboot should do it.  I will try that if enabling DEP in the advanced system settings doesn't doit.

"It's good, though..."

AZRedhawk44

  • friends
  • Senior Member
  • ***
  • Posts: 13,977
I did this with a 32-bit MS SQL 2008 environment back when 32/64bit architecture transitioning was happening and I wanted SQL Server to be able to use more than 2GB of RAM. 

The trick you'll run into is your application(s) you run on top of 32 bit windows will also have to be compiled to be able to address more than 2GB of RAM.  MS SQL was one of a handful of 32 bit apps that are able to do this. 

https://serverfault.com/questions/44446/3gb-switch-on-win2k3-server-with-6gb-ram-and-pae

This article talks about WinServer 2003.  I'm unsure if MS retained the same arguments through all the 32 bit OS iterations to Windows 10.

But your core assumption, that "each process should be able to address 4GB with the processor handling the paging," is incorrect.  Each 32 bit process is capped at 2GB of RAM.  So with 8GB, you can have the kernel at 2GB and 3 other processes at 2GB, with PAE and NX switch.  To go beyond 2GB depends on PAE and NX and the app being written to be capable of this grey area of 32 bit OS architecture.
"But whether the Constitution really be one thing, or another, this much is certain - that it has either authorized such a government as we have had, or has been powerless to prevent it. In either case, it is unfit to exist."
--Lysander Spooner

I reject your authoritah!

zxcvbob

  • friend
  • Senior Member
  • ***
  • Posts: 12,253
I did this with a 32-bit MS SQL 2008 environment back when 32/64bit architecture transitioning was happening and I wanted SQL Server to be able to use more than 2GB of RAM. 

The trick you'll run into is your application(s) you run on top of 32 bit windows will also have to be compiled to be able to address more than 2GB of RAM.  MS SQL was one of a handful of 32 bit apps that are able to do this. 

https://serverfault.com/questions/44446/3gb-switch-on-win2k3-server-with-6gb-ram-and-pae

This article talks about WinServer 2003.  I'm unsure if MS retained the same arguments through all the 32 bit OS iterations to Windows 10.

But your core assumption, that "each process should be able to address 4GB with the processor handling the paging," is incorrect.  Each 32 bit process is capped at 2GB of RAM.  So with 8GB, you can have the kernel at 2GB and 3 other processes at 2GB, with PAE and NX switch.  To go beyond 2GB depends on PAE and NX and the app being written to be capable of this grey area of 32 bit OS architecture.

Thank-you.  2GB x 4 threads is enough to use all the memory so that works for me, even if it's not as good as I thought I could get. 
"It's good, though..."

zxcvbob

  • friend
  • Senior Member
  • ***
  • Posts: 12,253
I did a google search about an hour ago for "windows server" (not wanting to buy anything, just reading stuff at wikipedia, etc)  I just got an email from newegg  for server software and the first thing in the list is Windows Server 2019 base license (16-core).  I'm pretty sure I didn't click on any newegg links.   [tinfoil]
"It's good, though..."

zxcvbob

  • friend
  • Senior Member
  • ***
  • Posts: 12,253
I installed W10 Pro 32-bit, and it showed 8GB of RAM installed and only 2.89GB available.  That didn't change when I enabled DEP for all processes.  I turned on NX and rebooted, and it was still 2.89GB. :mad: Also windows itself ran just fine, but it didn't load any network drivers and a lot of the other devices in Device Manager showed up as question marks; and I couldn't connect to wifi or Ethernet to try to download drivers.  I could have worked around that, but I installed 64-bit and everything (including the network drivers) just worked.  I will try installing DOSbox for my old software and playing with it before going back to 32-bit for another try (with all the device drivers safely downloaded ahead of time.)

I should also try 32-bit Linux with WINE...
"It's good, though..."