?????????????????校???????????????????????????????小??????????????????(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()??????????妫珻???锌????????????????????????????妾�”???” ??味?????? 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?????