ninoaddict / os-2024-doors

os-2024-doors created by GitHub Classroom

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸšͺdoOrSπŸšͺ


🌟 Project Description

This Repository is meant for the Operating System Course that serve as an introduction to kernel development and concretely demonstrate the subsystems within an operating system. The target platform for the operating system is the x86 32-bit Protected Mode, which will later be run using QEMU.

Milestone 0 focused on preparing the tools necessary for working on this operating system.

Milestone 1 focused on the initial development of the operating system, including enabling and handling interrupts, creating simple drivers for the display and keyboard, and developing the file system.

Milestone 2 focused on preparing the environment for user process. This included creating a memory management system, entering user mode, and developing shell. dditionally, we implemented several bonus features such as recursive cp and rm, relative pathing, and a scrollable shell.

Milestone 3 focused on enabling the operating system to run multiple processes concurrently. This included implementing process switching with context switches, creating a process manager to handle scheduling algorithms, and managing the creation, termination, and cleanup of processes.

πŸƒ Running The Program

for creating a disk image, use make disk command, this will create a new disk image and delete the last one.

for inserting the shell, use make insert-shell command, this will insert a shell into the root directory

fot inserting the clock, use make insert-clock command, this will insert clock into the root directory

Run the makefile using make run command, the program will automatically be compiled, and a kernel window will podp up using the QEMU Emulator.

πŸ’» Commands

In the user shell, you can run the following commands:

1. cat [filename] : show content of file.
2. cd [target] : move current directory to target.
3. clear : clear current screen.
4. cls : clear current screen.
5. cp [-r] source dest : copy file/folder to destination.
6. ls [foldername] : show current or target directory contents
7. mkdir dirname : create new directory\n
8. mv source dest : move file/folder to destination
9. rm [-r] target : delete folder/ file.
10. find name : find file/folder with given name.
11. kill [pid] : kill process with process id pid.
12. exec [filename] : execute binary file.
13. ./[filename] : execute binary file.
14. ps : show process list.
15. help : show available commands.

πŸ“ Program Structure

.
β”œβ”€β”€ README.md
β”œβ”€β”€ bin
β”‚   β”œβ”€β”€ OS2024.iso
β”‚   β”œβ”€β”€ inserter
β”‚   β”œβ”€β”€ kernel
β”‚   β”œβ”€β”€ sample-image.bin
β”‚   β”œβ”€β”€ sample-image.bin:Zone.Identifier
β”‚   β”œβ”€β”€ shell
β”‚   β”œβ”€β”€ shell_elf
β”‚   └── storage.bin
β”œβ”€β”€ makefile
β”œβ”€β”€ other
β”‚   └── grub1
└── src
    β”œβ”€β”€ cmos.c
    β”œβ”€β”€ crt0.s
    β”œβ”€β”€ disk.c
    β”œβ”€β”€ external
    β”‚   └── external-inserter.c
    β”œβ”€β”€ fat32.c
    β”œβ”€β”€ framebuffer.c
    β”œβ”€β”€ gdt.c
    β”œβ”€β”€ header
    β”‚   β”œβ”€β”€ cpu
    β”‚   β”‚   β”œβ”€β”€ gdt.h
    β”‚   β”‚   β”œβ”€β”€ idt.h
    β”‚   β”‚   β”œβ”€β”€ interrupt.h
    β”‚   β”‚   └── portio.h
    β”‚   β”œβ”€β”€ driver
    β”‚   β”‚   β”œβ”€β”€ cmos.h
    β”‚   β”‚   β”œβ”€β”€ disk.h
    β”‚   β”‚   β”œβ”€β”€ framebuffer.h
    β”‚   β”‚   └── keyboard.h
    β”‚   β”œβ”€β”€ filesystem
    β”‚   β”‚   └── fat32.h
    β”‚   β”œβ”€β”€ kernel-entrypoint.h
    β”‚   β”œβ”€β”€ memory
    β”‚   β”‚   └── paging.h
    β”‚   β”œβ”€β”€ process
    β”‚   β”‚   β”œβ”€β”€ process.h
    β”‚   β”‚   └── scheduler.h
    β”‚   └── stdlib
    β”‚       └── string.h
    β”œβ”€β”€ idt.c
    β”œβ”€β”€ interrupt.c
    β”œβ”€β”€ intsetup.s
    β”œβ”€β”€ kernel-entrypoint.s
    β”œβ”€β”€ kernel.c
    β”œβ”€β”€ keyboard.c
    β”œβ”€β”€ linker.ld
    β”œβ”€β”€ menu.lst
    β”œβ”€β”€ paging.c
    β”œβ”€β”€ portio.c
    β”œβ”€β”€ process.c
    β”œβ”€β”€ scheduler.c
    β”œβ”€β”€ stdlib
    β”‚   └── string.c
    β”œβ”€β”€ user
    β”‚   β”œβ”€β”€ clock.c
    β”‚   β”œβ”€β”€ command.c
    β”‚   β”œβ”€β”€ command.h
    β”‚   β”œβ”€β”€ syscall.c
    β”‚   β”œβ”€β”€ syscall.h
    β”‚   └── user-shell.c
    └── user-linker.ld

πŸ§‘β€πŸ€β€πŸ§‘ Team Member

NIM Name Github Profile
13522068 Adril Putra Merin ninoaddict
13522098 Suthasoma Mahardhika Munthe sotul04
13522112 Dimas Bagoes Hendrianto dimasb1954
13522118 Berto Richardo Togatorop BertoRichardo

About

os-2024-doors created by GitHub Classroom


Languages

Language:C 91.5%Language:Assembly 5.7%Language:Makefile 2.8%