🗂️ MyFileSystem A simple custom file system written in C to understand how real file systems work at the system level.
📌 What is a File System? A file system is the method and data structure an operating system uses to control how data is stored, retrieved, and organized on storage devices like hard drives, SSDs, or flash drives.
In short, a file system: -> Organizes data into files and directories -> Manages read/write access -> Keeps track of metadata (file name, size, permissions, etc.) -> Ensures data consistency and integrity
🎯 What Are We Trying to Achieve? This project is a personal exploration into building our own custom file system—from scratch.
Some key goals: -> Create basic file system functionality (create, read, write, delete files) -> Implement directory structures -> Handle metadata and simple access control -> Store files in a custom binary format or in memory
By the end, we hope to simulate how real-world file systems like FAT, ext, or NTFS operate under the hood.
🤔 Why Are We Doing This? We're doing this to: -> Deepen our understanding of how file systems work at a low/system level -> Learn through observation, trial-and-error, and hands-on coding -> Strengthen C programming and memory management skills -> Build something cool and educational from scratch!
This is more of a learning journey than a production-ready system—so expect to see a mix of study, experimentation, and improvement over time.
🛠️ Technologies Used Language: C Tools: GCC, Emacs Platform: Linux/Unix (preferred for easier system-level access), WLS
🚧 Work in Progress This repository is actively being developed as part of a learning process. Feel free to explore, suggest improvements, or fork it for your own experiments!
📚 Learning Resources Here are a few helpful topics and references we're using: -> File system internals (FAT32, ext2) -> Operating System design books -> Linux file APIs (fopen, read, write, etc.) -> Memory management in C -> Disk storage simulation
🤝 Contributions While this is primarily a personal learning project, you're welcome to open issues, suggest enhancements, or ask questions. Collaboration helps us all learn better!