All Projects → nxbyte → Advanced-xv6

nxbyte / Advanced-xv6

Licence: MIT license
Modern improvements for MIT's xv6 OS

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
assembly
5116 projects
Makefile
30231 projects
shell
77523 projects
perl
6916 projects

Projects that are alternatives of or similar to Advanced-xv6

ModernOperatingSystems AndrewTanenbaum
My notes after reading 'Modern Operating Systems' book by Andrew Tanenbaum and Herbert Bos.
Stars: ✭ 71 (+173.08%)
Mutual labels:  unix, cpu, filesystem
Xsuspender
👀 💻 💤 🔋 Save battery by auto-suspending unfocused X11 applications.
Stars: ✭ 53 (+103.85%)
Mutual labels:  unix, cpu
Posnk
An operating system project.
Stars: ✭ 34 (+30.77%)
Mutual labels:  unix, operating-system
Glob
Glob for C++17
Stars: ✭ 74 (+184.62%)
Mutual labels:  unix, filesystem
Buildxl
Microsoft Build Accelerator
Stars: ✭ 676 (+2500%)
Mutual labels:  unix, filesystem
Fotix
My very own UNIX clone, for education/self-amusement.
Stars: ✭ 8 (-69.23%)
Mutual labels:  unix, operating-system
Cross Platform Node Guide
📗 How to write cross-platform Node.js code
Stars: ✭ 1,161 (+4365.38%)
Mutual labels:  unix, operating-system
Qword
Operating system for x86_64 based around a "keep it simple and make it work" philosophy.
Stars: ✭ 367 (+1311.54%)
Mutual labels:  unix, operating-system
Serenity
SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.
Stars: ✭ 16,842 (+64676.92%)
Mutual labels:  unix, operating-system
Zap
An asynchronous runtime with a focus on performance and resource efficiency.
Stars: ✭ 162 (+523.08%)
Mutual labels:  unix, scheduler
Lfs
A thing to get information on your mounted disks
Stars: ✭ 178 (+584.62%)
Mutual labels:  unix, filesystem
Rm Protection
A safe alternative for "rm".
Stars: ✭ 416 (+1500%)
Mutual labels:  unix, filesystem
Aquila
AquilaOS: UNIX-like Operating System
Stars: ✭ 413 (+1488.46%)
Mutual labels:  unix, operating-system
Illumos Gate
An open-source Unix operating system
Stars: ✭ 952 (+3561.54%)
Mutual labels:  unix, operating-system
Ponyos
My Little Unix: Kernels are Magic!
Stars: ✭ 392 (+1407.69%)
Mutual labels:  unix, operating-system
Nanvix
Educational Spinoff of Nanvix
Stars: ✭ 65 (+150%)
Mutual labels:  unix, operating-system
Frosted
Frosted: Free POSIX OS for tiny embedded devices
Stars: ✭ 194 (+646.15%)
Mutual labels:  unix, operating-system
Maurice Bach Notes
Notes on the classic book : The Design of the UNIX Operating System
Stars: ✭ 285 (+996.15%)
Mutual labels:  unix, operating-system
Bfs
A breadth-first version of the UNIX find command
Stars: ✭ 336 (+1192.31%)
Mutual labels:  unix, filesystem
Jobber
An alternative to cron, with sophisticated status-reporting and error-handling
Stars: ✭ 1,217 (+4580.77%)
Mutual labels:  unix, schedule

Advanced-xv6

GitHub license

xv6 is a re-implementation of Dennis Ritchie's and Ken Thompson's Unix Version 6. Advanced-xv6 is a repository that contains some modernizations to improve upon the base implementation. There are seven versions of xv6 detailed below:

  1. Round-Robin (RR) scheduler in xv6

  2. First-Come-First-Serve (FCFS) scheduler in xv6

  3. Priority scheduler in xv6

  4. Completely-Fair-Scheduler (CFS) in xv6

  5. Doubly-Indirect-Block filesystem in xv6

  6. Triply-Indirect-Block filesystem in xv6

  7. Berkley Fast Filesystem (FFS) in xv6

Installation

Requirements

  • An x86 Linux ELF machine
  • Tested on Ubuntu 16.04 with QEMU

How to use

  1. Clone the directory: git clone
  2. Navigate to the source directory: cd Advanced-xv6/<version>
  3. Compile the operating system: make
  4. Run: make qemu

Modernization

The base xv6 implementation provides a great foundation for a simple Operating System. However, there are two areas of improvement that would make it a tad more modern...

Completely Fair Scheduler (CFS)

The Linux Completely Fair Scheduler (CFS) is based around the idea that every process should be given even amounts of CPU power. For example, if there are four processes each should get a quarter of the total available CPU time.

This repository contains a partially implemented CFS as it lacks the implementation for NICE priority values with a Red-Black Tree.

You can read more about the Linux CFS here.

Berkley Fast Filesystem (FFS)

The Berkley Fast Filesystem (FFS) uses the notion of cylinder/block groups which places multiple similar files together in order to ensure short disk seek time on disk. This implementation followed three heuristics for locality maintenance:

  • Placing new directories in one of the least-used block groups.

  • Placing files in the same directory in the same block group whenever possible.

  • Chunking and spreading large files across multiple block groups.

More details can be found in the 7 - Filesystem - Fast File System/README.md and here.

Credit

License

All source code in this repository is released under the MIT license. See LICENSE for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].