?????????????????У???????????????????????????????С??????????????????(Virtual Address Space)????32λ???????????4GB????????顣??Linux???У? ???????????????????????????????1:3????Windows???2:2(???????Large-Address-Aware Executables???????1:3)????????ζ???????????????????棬?????????????????????????????????????????檔
????????????????(Page Table)?????????棬??????????????????????????á???????????????н?????????????????????????????Щ??????????????(page fault)????Linux?У??????????????????????????н????ж???????????????檔???????????????????????????????ж???????á?????????????????????????????л????????????仯??
????Linux??????????????е??????β?????????????

???????У???????????е?????????????????????????????Σ??????????δ??????????Щ???????????????Χ????Intel???????????й????
?????????Random stack offset??Random mmap offset???????????????????Linux??????????????Ρ?????????????????????????????????????????????????????????????????execve(2)????????????κ?????ν????????????????κ?????ε?????????????????????????????????????????execve(2)????BSS??????
???????????????δ洢???????±????(???????????)??

?????????ó???????????????????????????????Ρ?????κ?BSS?ε?????????????????Щ?η????????????????????????????????????????????????????????
????BSS?Ρ?????κ??????????г??????????Σ????????????????
????????????????????ε???塣
????1 ?????
????????????????????У?????????????????????????????????????ó????д????????????????????????????????
????2 ?(stack)
???????????????????????????????????????????е??(??????)???????????????????
????????????????????????????(C?????г?“???????”)???洢???
??????????????ù??????????????????????(Stack Frame)?????????(Procedure Activation Record)????????????????????????????????????????????Щ??????????檔???????????????????衣?????????????????????????????????????????????????BSS?Ρ?
????????洢??????????泤???????????????????alloca()??????????????檔
?????????????????????????????????汣????CPU?????У?????????????????е??????????????????????????в????????????????????????????????????????????????????????????????С?????????RLIMIT_STACK(?????8M)????????????????????????С??????????????????С?????????????????
????Linux??ulimit -s????????????????????????????????????????? ????????(Stack Overflow)?????????????δ???(Segmentation Fault)??????????????????????????濪??????????
??????????????????(????????)????????????? ?????????????????????????????????????
??????????С????????????????????
????3 ???????(mmap)
?????????????????????????????????棬 ?κ???ó????????Linux??mmap()???????Windows??CreateFileMapping()/MapViewOfFile()??????????????????????????Ч?????I/O????? ?????????????????????????????????????????????ж????????? ?????????????????? Linux?У??????malloc()??????????棬C???п????????????????????????????檔”???” ??ζ?????? MMAP_THRESHOLD???????128KB???????mallopt()??????
??????????????????????????????????????Linux 2.4?汾?У????????????????????????????Щ????????0x40000000??????????????????????????????????????????Linux 2.6????У???????????????????????????????????λ?á?
?????????????????????????????й?????????£???????????仹??????????????.bss?ε?0x40000000???????1GB????????????????????????????2GB???????????С???????????????С???????????????????????ó????????????????2GB????????????Linux???汾?й????????????????????侭??????У?????????????0x40000000???????????Linux kernel 2.6?汾????????????2.6?汾????????????????????????????λ?????λ??0xBFxxxxxx?????????????????Χ????????????2??“???”????kernel 2.6??32λLinux???У?malloc????????????????2.9GB?????