All Projects → wichtounet → Thor Os

wichtounet / Thor Os

Licence: mit
Simple operating system in C++, written from scratch

Programming Languages

cpp
1120 projects
assembly
5116 projects

Projects that are alternatives of or similar to Thor Os

Onemkl
oneAPI Math Kernel Library (oneMKL) Interfaces
Stars: ✭ 122 (-89.87%)
Mutual labels:  intel, cpu
ddcpuid
🔬 dd's x86 CPU Identification tool
Stars: ✭ 21 (-98.26%)
Mutual labels:  cpu, intel
Sriov Network Device Plugin
SRIOV network device plugin for Kubernetes
Stars: ✭ 157 (-86.96%)
Mutual labels:  intel, network
Easydeviceinfo
📱 [Android Library] Get device information in a super easy way.
Stars: ✭ 1,698 (+41.03%)
Mutual labels:  cpu, network
Ilgpu
ILGPU JIT Compiler for high-performance .Net GPU programs
Stars: ✭ 374 (-68.94%)
Mutual labels:  intel, cpu
Neorv32
A small and customizable full-scale 32-bit RISC-V soft-core CPU and SoC written in platform-independent VHDL.
Stars: ✭ 106 (-91.2%)
Mutual labels:  intel, cpu
AtomicWatch
Intel Atom C2000 series discovery tool that parses log files and returns results if a positive match is found. #nsacyber
Stars: ✭ 25 (-97.92%)
Mutual labels:  cpu, intel
Pcm
Processor Counter Monitor
Stars: ✭ 1,240 (+2.99%)
Mutual labels:  intel, cpu
Stats
macOS system monitor in your menu bar
Stars: ✭ 7,134 (+492.52%)
Mutual labels:  cpu, network
AOSV
Lecture notes for Advanced Operating Systems and Virtualization course at Sapienza University of Rome
Stars: ✭ 21 (-98.26%)
Mutual labels:  intel, operating-systems
Iglance
Free system monitor for OSX and macOS. See all system information at a glance in the menu bar.
Stars: ✭ 1,358 (+12.79%)
Mutual labels:  cpu, network
Heim
Cross-platform async library for system information fetching 🦀
Stars: ✭ 572 (-52.49%)
Mutual labels:  cpu, network
spectre-attack-demo
Reproducing malicious memory reading on Intel i5 and Intel Xeon using a Spectre attack
Stars: ✭ 87 (-92.77%)
Mutual labels:  cpu, intel
darknet
Darknet on OpenCL Convolutional Neural Networks on OpenCL on Intel & NVidia & AMD & Mali GPUs for macOS & GNU/Linux
Stars: ✭ 160 (-86.71%)
Mutual labels:  cpu, intel
React Adaptive Hooks
Deliver experiences best suited to a user's device and network constraints
Stars: ✭ 4,750 (+294.52%)
Mutual labels:  cpu, network
Netutils Linux
A suite of utilities simplilfying linux networking stack performance troubleshooting and tuning.
Stars: ✭ 664 (-44.85%)
Mutual labels:  cpu, network
Subleq
CPU design and toolchain for a simple computer architecture
Stars: ✭ 69 (-94.27%)
Mutual labels:  cpu
Interview Process Coding Questions
Interview Coding Questions for Several Companies encapsulated into one Repository
Stars: ✭ 74 (-93.85%)
Mutual labels:  intel
Parenchyma
An extensible HPC framework for CUDA, OpenCL and native CPU.
Stars: ✭ 71 (-94.1%)
Mutual labels:  intel
Serial Studio
Multi-purpose serial data visualization & processing program
Stars: ✭ 1,168 (-2.99%)
Mutual labels:  network

Thor Operating System

.. image:: https://github.com/wichtounet/thor-os/wiki/images/thor-vesa.png

Thor is an operating system created for learning purposes and for fun.

It is currently a 64-bit OS, written mainly in C++, with a few lines of assembly when necessary.

Features ########

  • 64-bit operating system (x86_64 architecture only)
  • Preemptive Multiprocessing
  • Applications written directly in C++ with a system library (loaded with ELF)
  • Keyboard / Mouse driver
  • Full ACPI support with ACPICA
  • Read/Write ATA driver
  • FAT32 file system support
  • HPET/RTC/PIT drivers
  • Basic networking support (WIP) with Realtek 8139 driver
  • Basic PCI support
  • Multi stage booting with FAT32

Why?... #######

There are many reasons to build an operating system from scratch.

For me, the main two reasons are for fun and to learn new things. When I grew bored of working on my custom compiler, I decided to work on a new project and I chose Operating System Development. It's probably the most complicated hobby project that can be done. I had to learn plenty of things to be advance during this project. There are tons of difficulty that you don't even think about in normal programs. More generally, since I love programing, I was sure I could have a lot of fun developping my own OS. There is also the geek side of having its own OS :)

I have absolutely no intentions on making money with this project. When I no longer have fun developing it, I'll simply switch project for a while ;)

... and How? ############

Writing an operating system from scratch is not easy and at each step you need a lot of information that is not necessarily easily available. Generally, the more advanced your OS is, the less information you'll find.

The main two resources for develpment have been:

  • The osdev.org Wiki <http://wiki.osdev.org/Main_Page>_ : Tons of information of various subjects.
  • The osdev.org Forum <http://forum.osdev.org/index.php>_ : Tons of great posts and a lot of very skilled people to help you if you have a specific issue.

A good series of tutorials to start with is the Broken Thorn series <http://www.brokenthorn.com/Resources/OSDevIndex.html>_. I haven't followed the complete tutorial (only some specific parts), but it's full of good information and it's probably a good place to start.

There are also the James Molloy Series <https://web.archive.org/web/20160301082842/http://www.jamesmolloy.co.uk/tutorial_html/index.html>_. It's much less complete, but if you like tutorials, it's probably going to be helpful.

And of course (if you develop on Intel), the Intel 64 and IA-32 Architectures Software Developer's Manual, there are several parts to the guide, I've mainly used the System Programming - Part 1 part. Although it can seem heavy, it's pretty good and will be an invaluable asset to understand the architecture: for instance, paging and interrupts handling.

As for Books, I've been pretty much disappointed so far. There are plenty of books on operating system, but none of the few I've read so far have been great. They are probably good at helping you understand OSes, but pretty bad at helping you develop your own OS. Moreover, they are also pretty much outdated.

The books I've read are:

  • Modern Operating Systems by Andrew S. Tanenbaum, 3rd ed. It's a pretty good book overall. It covers most of the subjects, although it doesn't go in too much details on some subjects (network implementation). Moreover, it also covers some subjects that most hobbyists are not going to care about (lots about security for instance).
  • Operating Systems: Design and Implementation by Andrew S. Tanenbaum et al. I would only advise this book if you want to learn about MINIX, if you don't care about MINIX, don't read this book. It's full of code, not really well organized and not easy to follow.

In general, while books will help you understand operating systems a bit, they won't really help you develop anything. I've other books that should arrive soon, I hope they'll turn out better.

Build

Note: This repository, is using submodules, don't forget the --recursive option when you check it out.

Build procedure is described on the Wiki: https://github.com/wichtounet/thor-os/wiki/Build

License #######

This project is distributed under the MIT License. Read 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].