Quote:
Originally Posted by terfy
I want to find information (a lot) about how to create a file system.. I mean.. how to code one, from the bottom..
Like, how ext2 etc etc was made.. are there any schemes I can read about it ??
What does it need.. does it need knowledge of C programming ? Maybe assembler ??
|
If you want to create a file system from the bottom then the design is a much bigger consideration than the coding. The first design consideration is what features you want to include. You can get ideas from existing file systems' features without reading the code. Here is a description of reiserfs features:
http://www.linuxjournal.com/article/4466
Here is an outline description of a ZFS description with an emphasis on performance:
http://64.233.169.104/linux?q=cache:...70102_v0_4.pdf
Here is a discussion of new features to be included in ext4.
http://www.ussg.iu.edu/hypermail/lin...07.0/0967.html
You also need to know how hardware works at a more basic level than your typical application programming. Here is a very incomplete set of disk descriptions:
http://www.faqs.org/docs/linux_admin/x1001.html
http://www.lydgate.org.uk/linux/hdd.html
Then you work out the design as to how your new file system software is to provide your feature set by using the available hardware capabilities.
Once you get down to coding the file system then you can use either assembly or C. Assembly is faster and it used to be that all OSs including file systems were written in assembly. But assembly is very much machine dependent and file systems written in assembly are not portable. File systems written in C are much more portable so these days almost everybody writes OS components such as file systems in C as much as possible and accepts the performance hit from using a higher level language.
------------------
Steve Stites