diff --git a/notes/chapter2-os-organization b/notes/chapter2-os-organization
new file mode 100644
index 0000000..4b985c0
--- /dev/null
+++ b/notes/chapter2-os-organization
@@ -0,0 +1,57 @@
+XV6 as most OSs is monolithic, preemptive and time-sharing multiplexing.
+
+Isolation comes from the CPU which provides machine, supervisor and user modes.
+
+- machine: just for the boot time
+- supervisor: each time the kernel is active
+  including when calling a syscall (with `ecall` in RISC-V)
+- user: for all user code
+
+Minix, L4 (seL4) and QNX operating systems have been mentioned as micro-kernel OSs.
+
+Memory layout of a process:
+  [text; data; user stack; heap (large) ; trapframe; trampoline]
+0 ↑------------------------------------------------------------↑ 2^38-1
+
+text: instructions
+data: global variables
+heap: explicitly allocated memory
+trapframe: saved process registers when switching in and out of the kernel
+trampoline (4 KiB): code to transition in and out of the kernel
+
+trapframe & trampoline: explained in chapter 4
+
+kernel `proc` structure contains:
+
+- (kstack) kernel stack used when the process calls for syscalls
+- (pagetable) pointers to physical memory pages actually used by the process,
+              provided to the hardware for translation (virtual @ ←→ physical @)
+- (state) UNUSED, USED, SLEEPING, RUNNABLE, RUNNING or ZOMBIE
+- (trapframe) saved process registers when switching in and out of the kernel
+- (pid) process identification number
+- (ofile) list of opened files
+- (name) process name
+- (cwd) current directory
+- (context) kernel registers used to enter the process
+- (sz) size of process's memory
+- (parent) pointer to the process's parent proc structure
+- (xstate) exit status (given to its parent when it "waits" for it)
+- (killed) non-zero when the process has been killed
+- (chan) TODO: not currently explained
+- (lock) TODO: not currently explained
+
+
+RISC-V instructions
+
+- ecall: raise hardware privilege level
+  program counter change to a kernel-defined entry point which then switches to the
+  process's kernel stack and executes kernel instructions for this syscall
+  once done, the kernel calls sret
+- sret: lower hardware privilege level
+
+A process is the abstraction of memory and CPU for a running program,
+giving it the illusion of being alone on the hardware.
+A process is:
+
+- an address space to give a running program the illusion of owning the entire memory
+- a thread to give a running program the illusion of having a CPU for himself