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)
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:
1299:
305:
18:
1180:
1147:Strongly typed identifier
1089:
975:
945:
910:
798:
755:
429:
425:
418:
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:
1298:
1297:
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:
1296:
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:
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:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.