https://github.com/idanrosenzweig/virtual-file-system
https://github.com/idanrosenzweig/virtual-file-system
c cpp drivers filesystems linux linux-kernel mounting object-oriented-programming vfs-layer virtual-file-system
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/idanrosenzweig/virtual-file-system
- Owner: IdanRosenzweig
- Created: 2024-07-16T12:01:43.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-08-14T07:42:07.000Z (almost 2 years ago)
- Last Synced: 2025-01-18T14:23:26.204Z (over 1 year ago)
- Topics: c, cpp, drivers, filesystems, linux, linux-kernel, mounting, object-oriented-programming, vfs-layer, virtual-file-system
- Language: C++
- Homepage:
- Size: 137 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Virtual File System
## overview
I developed a Virtual File System (VFS) layer. The system provides an abstraction layer that bridges driver and filesystem implementations with a modern architecture.
The system is designed to be used in operating system development and low level embedded environments.
Using the VFS, I implemented two filesystems to be used on a Linux machine:
* procfs: control and retrieve info about running processes and related data (analogous to Linux procfs).
* sysfs: control and retrieve info about the kernel's internal structures and hardware (analogous to Linux sysfs). In addition to those, I implemented a RAM based virtual disk driver (analogous to Linux ramfs/tmpfs).
I implemented this entire project from scratch in pure C and C++ with no standard libraries. This includes:
* Polymorphism and Inheritance
* Sophisticated Algorithms and efficient data structures regarding strings and low level data
* Unionized data (replacing std::variant, std::any, std::optional)
* Static & Dynamic memory management (replacing smart pointers)
* Data serialization, encoding and hashing
## system features
the design for the system was inspired primarily from the legacy Unix/Linux filesystem hierarchy. the architecture is similar, with newer and modern abstractions.
speaking technically, the virtual file system architecture supports:
* files and directories
* soft links
* hardlinking nodes
* mounts
* drivers