Skip to content

Releases: Sister20/if2230-2023-forking-thread

Shell 🐚

29 Apr 16:48
6bf7e3e
Compare
Choose a tag to compare

What's This Release Is About? 🤔

This release marks the completion of an interactive shell with a bunch of UNIX-like filesystem commands :
mv
cp
rm
mkdir
whereis
cat
ls
cd

Not forgetting paging and user mode so that our shell can run on top of the kernel and interact with it through the system calls that we created.

Bonuses Achieved ⭐

  • Relative pathing ✔️
  • Recursive rm ✔️
  • Recursive cp
  • Indexing (B-Tree) ✔️
  • Creativity ✔️

Closing Notes 📝

The primary takeaway we got from making forking thread is that an OS is an extremely delicate and complex machine, as complex as the computer it runs on. The ubiquitous nature of it often make people take for granted how it really is a sophisticated piece of software, making forking thread reminds us of that fact, that it's an incredibly complicated piece of machinery that cannot be comprehended by any single human mind.

As such, we give our eternal gratitude to the hundreds of thousands of people who have contributed to the development of the OS to be able to reach its complexity today, from a simple timesharing system to something that can do the heavy lifting of interacting with the hardware as well as juggling the software that is running on top of it. It's a humongous honor for us to be able to stand on top of their shoulders, the giants that came before us, during the creation of forking thread. 🙏

GGWP, see you at demo!

Bonus

That moment when you were working on tubes OS and spent an hour just to find you forgot to add a line :
https://youtu.be/N_vJMHMBzLM

Prerequisite of a Shell

30 Mar 16:38
Compare
Choose a tag to compare

What's This Release Is About? 🤔

This release marks the development of what would be an interactive shell (as spoiled by the milestone specification). We have interrupts, which is then used here to accept inputs from keyboard. But the most crowning achievement of this release is the filesystem.

Filesystem : Augmented FAT32 🗄️

The filesystem used in this release is FAT32 with some modifications on the struct DirectoryEntry. For one, the directory entry now contains not only access date but also access time. The undelete attribute have also been replaced by the n_of_entries. This attribute is used by the table where the entry belongs to describe how many entries the table have. It's only defined for the first element in the entry.

There is also some changes made to how we erase directory. During the deletion of a directory, we reset all of the cluster where the directory lives to 0 to ensure that future write request cannot write new entry into that supposedly deleted cluster. While we acknowledge that the more efficient way to delete the directory is to simply mark the table in the cluster as not a valid directory (which can be done by putting an attribute in its first entry) and insert validation logic to the write to check whether it's a valid directory. However, we didn't manage to do that due to time constraint (we actually do have a bit of time but OS development is like walking in eggshells, last minute changes may make this release unusable).

Bonuses Achieved ⭐

  • Directory with multiple clusters ✔️
  • Time attributes in the directory entry using time fetched from CMOS ✔️
  • Custom filesystem ❓
    Technically a bit? This is largely FAT32 but not verbatim since there are some deviation from the FAT32 filesystem. Didn't have time to make an EXT2 filesystem sadly.

Closing Notes 📝

We are very thank full for the designer of the FAT32 filesystem for being the giant whose shoulder we can proudly stand upon in the creation of this filesystem. 🙏

Making an OS is Hard

May I Please Have A Crumb of A

v1.0

25 Feb 07:06
Compare
Choose a tag to compare
Merge branch 'main' of https://github.com/Sister20/if2230-2023-forkin…