A C-based system programming project that emulates core functionalities of UNIX-like file systems.
-
Emulation of file system data structures:
- Inode Table
- File Table
- User File Descriptor Table (UAREA)
- Superblock
- Disk Inode List Block
- Data Blocks & Boot Block
-
Implementation of system calls:
open,close,read,write,lseek,stat,chmod,unlink -
Support for UNIX-like commands:
ls,ls -l,ls -a,rm,cat,cd,chmod,cp,df,find,grep,ln,mkdir,pwd,touch,uname,man,mkfs -
Demonstrates internal working of system calls and commands
-
Lightweight learning tool for File System architecture & algorithms
- Language: C (System Programming)
- Platform: Windows NT / Linux distributions
- Architecture: Intel 32-bit processor
- Interface: Command-Line Interface (CLI)
NVFS replicates the behavior of UNIX File Systems in a virtual environment, storing and manipulating records in primary storage (RAM).
It serves as a hands-on tool to learn how file systems are structured and how system calls interact with underlying data structures.
- Inode β Represents files and metadata
- File Table β Tracks open files
- User File Descriptor Table (UAREA) β Maps user processes to files
- Superblock β Contains global FS metadata
- Disk Inode List Block β Manages inode storage
- Data Blocks β Store actual file content
- Initialize core data structures
- Create & manage files/directories
- Execute file system commands
- Handle system calls internally
- Display results on CLI
- Advanced Programming in the UNIX Environment β W. Richard Stevens
- UNIX File System documentation
- GUI-based interface for visualization
- 64-bit platform support
- Extension to persistent storage instead of primary memory
# Compile
g++ nvfs.c -o nvfs
# Run
./nvfs