Skip to content

Latest commit

 

History

History
75 lines (56 loc) · 4.1 KB

README.md

File metadata and controls

75 lines (56 loc) · 4.1 KB

Overview

A hobbyist operating system created from scratch. This project has targeted to build an operating system for the x86-64 multicore processor.

  • Features of this project:
  • OS Kernel : Bootstrapping, Memory management, Process management and scheduling, GUI System ...
  • Toy TCP/IP Stack : Ethernet(E1000), ARP, IP, ICMP, UDP, TCP, DNS, DHCP
  • Simple Application : Toy web browser (almost like viewer), Simple telnet client ...
  • Example of result
Operating System Toy web browser

OS Kernel

Kernel based on MINT64OS Project

Features of MINT64 OS project:

  • 64bit Multicore support
  • Memory protection and management with paging
  • Multi-level priority-based scheduler and process management
  • Simple filesystem based on FAT
  • Peripheral devices support (keyboard, mouse, and serial port)
  • System call and libraries for user applications
  • Application support with ELF format
  • GUI system
  • Boot from USB device, and so (not support in this project)

Toy TCP/IP stack

My goal is to understand inter network communication. So I'm just focused on easy to implement. I derived help from the following documents. But does not implement all of the features and not perfect. I only tested the following scenario.

  • Design decision
  • All of the frames are passed between processing layers in one buffer when passing a layer boundary.
  • All of the frames are queued each module.
  • Each protocol module is a thread and they have a own frame queue.
TCP/IP Stack architecture Frame (when TCP received segment from IP module)
  • Scenario
Scenario Number Source Host <------ Protocol ------> Destination Host
Scenario 1 Host <------ ARP Request / Reply ------> Gateway
Scenario 2 Host <------ DHCP Configuration ------> Gateway
Scenario 3 Host <------ DNS Request / Response ------> DNS Server
Scenario 4 Host <------ TCP Connection & HTTP 1.1 ------> Web Server
Scenario 5 Host <------ TCP Connection & Telent ------> Telnet Server
  • Documents

Toy web browser

Toy web browser based on Robinson-C. Robinson-C is C implementation of Matt Brubeck's Robinson HTML engine.

Toy browser engine pipeline Output of test HTML