# File System Implementation
---
## Nodes
### /storage
- `node.cpp`
- **ref_node <=> device**
- Handles open/close/read/write operations for the device
- `ref_node.cpp`
- **kernel/user <=> node.cpp**
- Maintains the count of references to a node and the seek position
- `file_descriptor.cpp`
- **user <=> ref_node.cpp**
- Manages the file descriptor table for user processes
- `kernel_io.cpp`
- **kernel <=> file_descriptor.cpp**
- Performs a similar role as `file_descriptor.cpp` but for kernel processes
### /storage/fs
This directory contains the implementations of various file systems, such as `fat32.cpp` and `ustar.cpp`.
### /storage/devices
This directory houses implementations of various devices, including /dev/null, /dev/zero, /dev/random, and more.