diff --git a/content/notes/block-layers.md b/content/notes/block-layers.md index 96ea8a9..76493de 100644 --- a/content/notes/block-layers.md +++ b/content/notes/block-layers.md @@ -17,21 +17,44 @@ Why a filesystem? It's **a key abstraction** we'll use to go spelunking into the ## Physical Layer At the bottom, there must exist some _physical media_ which will hold these bits and bytes we conveniently call a block. It could be an HDD, SSD, [tape](https://aws.amazon.com/storagegateway/vtl/) or something else, [what interface does this physical media present?](https://pages.cs.wisc.edu/~remzi/OSTEP/file-devices.pdf) It's exposed over many _protocols_. -``` -application/process (read/write) - | -POSIX (open, read, write, close) - | -(filesystem - files and directories) <-- yay! - | -Block Interface(read/write) - | -Device Drivers(specific read/write) - | -Physical Media (HDD/SSD - sector/page r/w) -``` -This is a roughly sketch made for simplicity. + + + + + + + Application Process + (read/write) + + + POSIX + (open, read, write, close) + + + Filesystem + (files and directories) <- we're here!! + + + Block Interface + (read/write) + + + Device Drivers + (specific read/write) + + + Physical Media + (HDD/SSD - sector/page r/w) + + + + + + + + +This is a rough sketch made for simplicity. An HDD exposes a "flat" address space to read or write, the smallest atomic unit is a sector (512-byte block) and flash based SSDs expose a unit called a "page" which we can read or write higher level "chunks" of. [†1] to create a _file system abstraction_ over this **block interface**, what does it look like?