Extension to Benoit's answer to question 3 ...
The separation of programs into logical parts, such as code, persistent data, mutable data, and the stack, is performed by different agents at different points in time.
-, ( ) , . (PE, ELF ..), , , . , , , . ( ), - , - ( , ), - , (, DLL) .
, , , , , . . , , ( ) -. .
- , , . RWX , .
, , . , , 64 , , , , ( ) . , . () , , .
, . 16- DOS- (COM EXE) , , - . COM- 64 , IP = 0x100 SP = 0xFFxx, , . DOS EXE CS: IP SS: SP, , , DOS. , , , ( EXE), PSP ( , ), SS: SP CS: IP. , , 16- DOS .