Fable Updated +Created
x86 Paging Tutorial / Process memory layout Updated +Created
For each process, the virtual address space looks like this:
------------------ 2^32 - 1
Stack (grows down)
v v v v v v v v v
------------------

(unmapped)

------------------ Maximum stack size.


(unmapped)


-------------------
mmap
-------------------


(unmapped)


-------------------
^^^^^^^^^^^^^^^^^^^
brk (grows up)
-------------------
BSS
-------------------
Data
-------------------
Text
-------------------

------------------- 0
The kernel maintains a list of pages that belong to each process, and synchronizes that with the paging.
If the program accesses memory that does not belong to it, the kernel handles a page-fault, and decides what to do:
  • if it is above the maximum stack size, allocate those pages to the process
  • otherwise, send a SIGSEGV to the process, which usually kills it
When an ELF file is loaded by the kernel to start a program with the exec system call, the kernel automatically registers text, data, BSS and stack for the program.
The brk and mmap areas can be modified by request of the program through the brk and mmap system calls. But the kernel can also deny the program those areas if there is not enough memory.
brk and mmap can be used to implement malloc, or the so called "heap".
mmap is also used to load dynamically loaded libraries into the program's memory so that it can access and run it.
Calculating exact addresses Things are complicated by:
x86 Paging Tutorial / Sample code Updated +Created
Like everything else in programming, the only way to really understand this is to play with minimal examples.
What makes this a "hard" subject is that the minimal example is large because you need to make your own small OS.
Cadmium Updated +Created
Chinese cinema Updated +Created
Chinese slang Updated +Created
Gold Updated +Created
Tor (anonymity network) Updated +Created
War film Updated +Created
Chinese punctuation Updated +Created
Human genome sequencing project Updated +Created
Science fiction film Updated +Created
Factorio Updated +Created
Niobium Updated +Created
Raspberry Pi OS Updated +Created
WikiWikiWeb Updated +Created
The venerable first wiki.
The pre-Eternal September feeling is palpable.
People could freely comment their thoughts and sign below, making it much closer to what Ciro Santilli wants OurBigBook.com to be. But with upvotes ;-)
Nothing can better encapsulate the nostalgia of early day Internet. Genius at times, banal at others, you will be forever in our hearts!
Richard Stallman Updated +Created
TODO find the best source for the amazing "I have done your mother" quote.
Video 1.
Richard Stallman saying "I've never installed gnu/linux"
. Source.
Charitable organization Updated +Created
Finite algebraic structure Updated +Created

Unlisted articles are being shown, click here to show only listed articles.