Knowledge

Virtual address space

Source 📝

242: 168: 73: 32: 393:
0 4 GiB VAS 1 |---vvvv-------vvvvvv---vvvv----vv---v----vvv--| mapping |||| |||||| |||| || | ||| file bytes app1 app2 kernel user system_page_file mapping |||| |||||| |||| || | VAS 2
378:
The process then starts executing bytes in the EXE file. However, the only way the process can use or set '-' values in its VAS is to ask the OS to map them to bytes from a file. A common way to use VAS memory in this way is to map it to the
386:
0 4 GiB VAS |---vvv--------vvvvvv---vvvv----vv---v----vvv--| mapping ||| |||||| |||| || | ||| file bytes app kernel user system_page_file
428:, the operating system artificially limits the user mode portion of the process's virtual address space to 2 GiB. This applies to both 32- and 64-bit executables. Processes running executables that were linked with the 375:
0 4 GiB VAS |---vvv--------vvvvvv---vvvv-------------------| mapping ||| |||||| |||| file bytes app kernel user
340:(from 0 to 2 − 1) in that space can have a single byte as a value. Initially, none of them have values ('-' represents no value). Using or setting values in such a VAS would cause a 350:
Then the application's executable file is mapped into the VAS. Addresses in the process VAS are mapped to bytes in the exe file. The OS manages the mapping:
270:
makes available to a process. The range of virtual addresses usually starts at a low address and can extend to the highest address allowed by the computer's
353:
0 4 GiB VAS |---vvv----------------------------------------| mapping ||| file bytes app
409:
are used by the operating system. On later 32-bit editions of Microsoft Windows, it is possible to extend the user-mode virtual address space to
178: 860: 141: 113: 1231: 865: 83: 855: 850: 45: 693: 505: 120: 838: 739: 417:
is left for kernel-mode virtual address space by marking the programs as IMAGE_FILE_LARGE_ADDRESS_AWARE and enabling the
191: 127: 1016: 228: 210: 59: 525: 20: 109: 989: 241: 1106: 911: 843: 805: 98: 459:
establishes the page file as the backing store for any new virtual address space. However, a process can also
347:
0 4 GiB VAS |----------------------------------------------|
1006: 936: 784: 383:. The page file is a single file, but multiple distinct sets of contiguous bytes can be mapped into a VAS: 1261: 896: 884: 613: 51: 1194: 1146: 1058: 1036: 1031: 959: 825: 779: 633: 1068: 732: 653: 452: 134: 593: 570: 1282: 1221: 1136: 673: 550: 964: 820: 774: 432:
option, which is the default for 64-bit Visual Studio 2010 and later, have access to more than
186: 94: 954: 756: 500: 361: 8: 1226: 1204: 1131: 984: 976: 725: 1209: 1189: 1141: 1116: 901: 870: 460: 357: 424:
On Microsoft Windows 64-bit, in a process running an executable that was linked with
1096: 1026: 1001: 815: 810: 398: 295: 90: 1241: 1126: 924: 275: 267: 390:
And different parts of the page file can map into the VAS of different processes:
1246: 1111: 1063: 996: 271: 364:
files are mapped (this includes custom libraries as well as system ones such as
1199: 1021: 1011: 919: 337: 317: 294:
OS versions. This provides several benefits, one of which is security through
479:
32-bit allows splitting the user and kernel address ranges in different ways:
19:"Virtual address" and "virtual addressing" redirect here. For other uses, see 1276: 1121: 312:
In the following description, the terminology used will be particular to the
299: 262: 1078: 1053: 1256: 1251: 1101: 1048: 875: 1161: 1156: 1073: 1041: 946: 889: 341: 313: 1236: 1214: 1171: 1166: 833: 789: 748: 380: 249: 72: 1151: 332: 456: 444:
for 64-bit executables in Windows through Windows 8, and up to
326: 291: 283: 717: 476: 405:
are made available to processes for their own use. The other
287: 279: 769: 678: 658: 638: 618: 598: 575: 555: 316:
operating system, but the concepts are applicable to other
764: 472: 266:is the set of ranges of virtual addresses that an 448:for 64-bit executables in Windows 8.1 and later. 394:|--------vvvv--vvvvvv---vvvv-------vv---v------| 1274: 278:'s pointer size implementation, which can be 4 733: 674:"/LARGEADDRESSAWARE (Handle Large Addresses)" 654:"/LARGEADDRESSAWARE (Handle Large Addresses)" 614:"/LARGEADDRESSAWARE (Handle Large Addresses)" 195:that contextualizes different points of view. 181:to certain ideas, incidents, or controversies 99:introducing citations to additional sources 588: 586: 60:Learn how and when to remove these messages 740: 726: 298:assuming each process is given a separate 594:"4-Gigabyte Tuning: BCDEdit and Boot.ini" 229:Learn how and when to remove this message 211:Learn how and when to remove this message 583: 240: 89:Relevant discussion may be found on the 1275: 721: 714:" by Jeffrey Richter, Microsoft Press 506:Single address space operating system 356:The v's are values from bytes in the 161: 66: 25: 13: 694:"Linux kernel - x86: Memory split" 329:OS is executed, the process has a 16:Set of ranges of virtual addresses 14: 1294: 41:This article has multiple issues. 436:of virtual address space: up to 166: 82:relies largely or entirely on a 71: 30: 21:Virtual address (disambiguation) 429: 425: 418: 49:or discuss these issues on the 747: 686: 666: 646: 626: 606: 563: 543: 518: 440:for 32-bit executables, up to 1: 806:Arbitrary-precision or bignum 704: 421:switch in the boot.ini file. 325:When a new application on a 272:instruction set architecture 7: 526:"What is an address space?" 494: 10: 1301: 305: 18: 1180: 1147:Strongly typed identifier 1089: 975: 945: 910: 798: 755: 401:32-bit, by default, only 571:"LOADED_IMAGE structure" 511: 466: 1222:Parametric polymorphism 634:"Virtual Address Space" 551:"Virtual Address Space" 110:"Virtual address space" 451:Allocating memory via 430:/LARGEADDRESSAWARE:YES 245: 426:/LARGEADDRESSAWARE:NO 336:VAS: each one of the 274:and supported by the 254:virtual address space 244: 189:by rewriting it in a 501:Linear address space 95:improve this article 1227:Primitive data type 1132:Recursive data type 985:Algebraic data type 861:Quadruple precision 1190:Abstract data type 871:Extended precision 830:Reduced precision 320:operating systems. 246: 1270: 1269: 1002:Associative array 866:Octuple precision 489:2G/2G user/kernel 485:1G/3G user/kernel 481:3G/1G user/kernel 399:Microsoft Windows 360:. Then, required 296:process isolation 239: 238: 231: 221: 220: 213: 175:This article may 160: 159: 145: 64: 1290: 1242:Type constructor 1127:Opaque data type 1059:Record or Struct 856:Double precision 851:Single precision 742: 735: 728: 719: 718: 712:Advanced Windows 698: 697: 690: 684: 683: 670: 664: 663: 650: 644: 643: 630: 624: 623: 610: 604: 603: 590: 581: 580: 567: 561: 560: 547: 541: 540: 538: 536: 522: 447: 443: 439: 435: 431: 427: 420: 416: 412: 408: 404: 371: 367: 342:memory exception 338:memory addresses 335: 276:operating system 268:operating system 234: 227: 216: 209: 205: 202: 196: 192:balanced fashion 170: 169: 162: 155: 152: 146: 144: 103: 75: 67: 56: 34: 33: 26: 1300: 1299: 1293: 1292: 1291: 1289: 1288: 1287: 1273: 1272: 1271: 1266: 1247:Type conversion 1182: 1176: 1112:Enumerated type 1085: 971: 965:null-terminated 941: 906: 794: 751: 746: 707: 702: 701: 692: 691: 687: 672: 671: 667: 652: 651: 647: 632: 631: 627: 612: 611: 607: 592: 591: 584: 569: 568: 564: 549: 548: 544: 534: 532: 524: 523: 519: 514: 497: 469: 445: 441: 437: 433: 414: 410: 406: 402: 395: 388: 376: 369: 365: 354: 348: 330: 308: 235: 224: 223: 222: 217: 206: 200: 197: 187:help improve it 184: 171: 167: 156: 150: 147: 104: 102: 88: 76: 35: 31: 24: 17: 12: 11: 5: 1298: 1297: 1286: 1285: 1283:Virtual memory 1268: 1267: 1265: 1264: 1259: 1254: 1249: 1244: 1239: 1234: 1229: 1224: 1219: 1218: 1217: 1207: 1202: 1200:Data structure 1197: 1192: 1186: 1184: 1178: 1177: 1175: 1174: 1169: 1164: 1159: 1154: 1149: 1144: 1139: 1134: 1129: 1124: 1119: 1114: 1109: 1104: 1099: 1093: 1091: 1087: 1086: 1084: 1083: 1082: 1081: 1071: 1066: 1061: 1056: 1051: 1046: 1045: 1044: 1034: 1029: 1024: 1019: 1014: 1009: 1004: 999: 994: 993: 992: 981: 979: 973: 972: 970: 969: 968: 967: 957: 951: 949: 943: 942: 940: 939: 934: 933: 932: 927: 916: 914: 908: 907: 905: 904: 899: 894: 893: 892: 882: 881: 880: 879: 878: 868: 863: 858: 853: 848: 847: 846: 841: 839:Half precision 836: 826:Floating point 823: 818: 813: 808: 802: 800: 796: 795: 793: 792: 787: 782: 777: 772: 767: 761: 759: 753: 752: 745: 744: 737: 730: 722: 716: 715: 706: 703: 700: 699: 685: 665: 645: 625: 605: 582: 562: 542: 516: 515: 513: 510: 509: 508: 503: 496: 493: 468: 465: 461:explicitly map 392: 385: 374: 352: 346: 323: 322: 318:virtual memory 307: 304: 237: 236: 219: 218: 174: 172: 165: 158: 157: 93:. Please help 79: 77: 70: 65: 39: 38: 36: 29: 15: 9: 6: 4: 3: 2: 1296: 1295: 1284: 1281: 1280: 1278: 1263: 1260: 1258: 1255: 1253: 1250: 1248: 1245: 1243: 1240: 1238: 1235: 1233: 1230: 1228: 1225: 1223: 1220: 1216: 1213: 1212: 1211: 1208: 1206: 1203: 1201: 1198: 1196: 1193: 1191: 1188: 1187: 1185: 1179: 1173: 1170: 1168: 1165: 1163: 1160: 1158: 1155: 1153: 1150: 1148: 1145: 1143: 1140: 1138: 1135: 1133: 1130: 1128: 1125: 1123: 1122:Function type 1120: 1118: 1115: 1113: 1110: 1108: 1105: 1103: 1100: 1098: 1095: 1094: 1092: 1088: 1080: 1077: 1076: 1075: 1072: 1070: 1067: 1065: 1062: 1060: 1057: 1055: 1052: 1050: 1047: 1043: 1040: 1039: 1038: 1035: 1033: 1030: 1028: 1025: 1023: 1020: 1018: 1015: 1013: 1010: 1008: 1005: 1003: 1000: 998: 995: 991: 988: 987: 986: 983: 982: 980: 978: 974: 966: 963: 962: 961: 958: 956: 953: 952: 950: 948: 944: 938: 935: 931: 928: 926: 923: 922: 921: 918: 917: 915: 913: 909: 903: 900: 898: 895: 891: 888: 887: 886: 883: 877: 874: 873: 872: 869: 867: 864: 862: 859: 857: 854: 852: 849: 845: 842: 840: 837: 835: 832: 831: 829: 828: 827: 824: 822: 819: 817: 814: 812: 809: 807: 804: 803: 801: 797: 791: 788: 786: 783: 781: 778: 776: 773: 771: 768: 766: 763: 762: 760: 758: 757:Uninterpreted 754: 750: 743: 738: 736: 731: 729: 724: 723: 720: 713: 709: 708: 695: 689: 681: 680: 675: 669: 661: 660: 655: 649: 641: 640: 635: 629: 621: 620: 615: 609: 601: 600: 595: 589: 587: 578: 577: 572: 566: 558: 557: 552: 546: 531: 527: 521: 517: 507: 504: 502: 499: 498: 492: 490: 486: 482: 478: 474: 464: 462: 458: 454: 449: 422: 400: 391: 384: 382: 373: 363: 359: 351: 345: 343: 339: 334: 328: 321: 319: 315: 310: 309: 303: 301: 300:address space 297: 293: 289: 285: 281: 277: 273: 269: 265: 264: 263:address space 259: 255: 251: 243: 233: 230: 215: 212: 204: 194: 193: 188: 182: 180: 173: 164: 163: 154: 143: 140: 136: 133: 129: 126: 122: 119: 115: 112: –  111: 107: 106:Find sources: 100: 96: 92: 86: 85: 84:single source 80:This article 78: 74: 69: 68: 63: 61: 54: 53: 48: 47: 42: 37: 28: 27: 22: 1027:Intersection 929: 711: 688: 682:. Microsoft. 677: 668: 662:. Microsoft. 657: 648: 642:. Microsoft. 637: 628: 622:. Microsoft. 617: 608: 602:. Microsoft. 597: 579:. Microsoft. 574: 565: 559:. Microsoft. 554: 545: 533:. Retrieved 529: 520: 488: 484: 480: 470: 463:file bytes. 450: 423: 396: 389: 377: 366:kernel32.dll 355: 349: 324: 311: 261: 257: 253: 247: 225: 207: 198: 190: 179:undue weight 176: 148: 138: 131: 124: 117: 105: 81: 57: 50: 44: 43:Please help 40: 1257:Type theory 1252:Type system 1102:Bottom type 1049:Option type 990:generalized 876:Long double 821:Fixed point 483:(default), 413:while only 358:mapped file 201:August 2012 151:August 2012 1162:Empty type 1157:Type class 1107:Collection 1064:Refinement 1042:metaobject 890:signedness 749:Data types 705:References 370:user32.dll 314:Windows NT 121:newspapers 46:improve it 1237:Subtyping 1232:Interface 1215:metaclass 1167:Unit type 1137:Semaphore 1117:Exception 1022:Inductive 1012:Dependent 977:Composite 955:Character 937:Reference 834:Minifloat 790:Bit array 381:page file 250:computing 91:talk page 52:talk page 1277:Category 1262:Variable 1152:Top type 1017:Equality 925:physical 902:Rational 897:Interval 844:bfloat16 495:See also 1205:Generic 1181:Related 1097:Boolean 1054:Product 930:virtual 920:Address 912:Pointer 885:Integer 816:Decimal 811:Complex 799:Numeric 446:128 TiB 306:Example 185:Please 135:scholar 1195:Boxing 1183:topics 1142:Stream 1079:tagged 1037:Object 960:String 535:May 5, 475:CPUs, 457:malloc 327:32-bit 292:64-bit 284:32-bit 137:  130:  123:  116:  108:  1090:Other 1074:Union 1007:Class 997:Array 780:Tryte 512:Notes 477:Linux 467:Linux 442:8 TiB 438:4 GiB 434:2 GiB 415:1 GiB 411:3 GiB 407:2 GiB 403:2 GiB 288:bytes 286:or 8 280:bytes 260:) or 177:lend 142:JSTOR 128:books 1210:Kind 1172:Void 1032:List 947:Text 785:Word 775:Trit 770:Byte 679:MSDN 659:MSDN 639:MSDN 619:MSDN 599:MSDN 576:MSDN 556:MSDN 537:2024 471:For 419:/3GB 368:and 290:for 282:for 252:, a 114:news 1069:Set 765:Bit 530:IBM 487:or 473:x86 455:'s 397:On 372:): 362:DLL 333:GiB 258:VAS 248:In 97:by 1279:: 676:. 656:. 636:. 616:. 596:. 585:^ 573:. 553:. 528:. 491:. 344:. 331:4 302:. 55:. 741:e 734:t 727:v 710:" 696:. 539:. 453:C 256:( 232:) 226:( 214:) 208:( 203:) 199:( 183:. 153:) 149:( 139:· 132:· 125:· 118:· 101:. 87:. 62:) 58:( 23:.

Index

Virtual address (disambiguation)
improve it
talk page
Learn how and when to remove these messages

single source
talk page
improve this article
introducing citations to additional sources
"Virtual address space"
news
newspapers
books
scholar
JSTOR
undue weight
help improve it
balanced fashion
Learn how and when to remove this message
Learn how and when to remove this message

computing
address space
operating system
instruction set architecture
operating system
bytes
32-bit
bytes
64-bit

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.