An open API service indexing awesome lists of open source software.

https://github.com/zhuagenborn/tiny-x86-os

๐Ÿ’ฝ A simple Intel x86 operating system written in assembly and C++, supporting interrupts, memory paging and heap allocation, disk control, file partition, system calls, thread scheduling, etc.๏ผˆไฝฟ็”จC++ๅ’Œๆฑ‡็ผ–ๅผ€ๅ‘็š„็ฎ€ๆ˜“Intel x86ๆ“ไฝœ็ณป็ปŸ๏ผŒๆ”ฏๆŒไธญๆ–ญใ€ๅ†…ๅญ˜ๅˆ†้กตใ€ๅ †ๅ†…ๅญ˜็ฎก็†ใ€็ฃ็›˜ๆŽงๅˆถใ€ๆ–‡ไปถๅˆ†ๅŒบใ€็ณป็ปŸ่ฐƒ็”จใ€็บฟ็จ‹่ฐƒๅบฆ็ญ‰ๅŠŸ่ƒฝใ€‚๏ผ‰
https://github.com/zhuagenborn/tiny-x86-os

assembly cpp20 disk-management interrupt kernel memory-management opertaing-system thread-scheduling

Last synced: about 1 year ago
JSON representation

๐Ÿ’ฝ A simple Intel x86 operating system written in assembly and C++, supporting interrupts, memory paging and heap allocation, disk control, file partition, system calls, thread scheduling, etc.๏ผˆไฝฟ็”จC++ๅ’Œๆฑ‡็ผ–ๅผ€ๅ‘็š„็ฎ€ๆ˜“Intel x86ๆ“ไฝœ็ณป็ปŸ๏ผŒๆ”ฏๆŒไธญๆ–ญใ€ๅ†…ๅญ˜ๅˆ†้กตใ€ๅ †ๅ†…ๅญ˜็ฎก็†ใ€็ฃ็›˜ๆŽงๅˆถใ€ๆ–‡ไปถๅˆ†ๅŒบใ€็ณป็ปŸ่ฐƒ็”จใ€็บฟ็จ‹่ฐƒๅบฆ็ญ‰ๅŠŸ่ƒฝใ€‚๏ผ‰

Awesome Lists containing this project

README

          

# Tiny *x86* Operating System in *C++*

![C++](docs/badges/C++.svg)
![NASM](docs/badges/NASM.svg)
![Make](docs/badges/Made-with-Make.svg)
![GitHub Actions](docs/badges/Made-with-GitHub-Actions.svg)
![Linux](docs/badges/Linux.svg)
![License](docs/badges/License-MIT.svg)

## Introduction

A simple *Intel x86* operating system written in *assembly* and *C++*, developed on *Ubuntu* and *Bochs*.

- Boot
- The master boot record for system startup.
- Memory
- Memory segmentation and paging.
- Virtual memory mapping based on bitmaps.
- Heap management (`std::malloc` and `std::free`) based on memory arenas.
- Interrupts
- Interrupt control based on *Intel 8259A*.
- Timer interrupts based on *Intel 8253*.
- Threads
- Thread scheduling based on timer interrupts.
- Semaphores and locks based on interrupts.
- Processes
- User processes based on *Intel x86* task state segments.
- Fork.
- Graphic
- Character printing in VGA text mode.
- Keyboard
- Keyboard control based on *Intel 8042*.
- The circular keyboard input buffer.
- Disks
- IDE channel and disk control.
- Disk partition scanning.
- File System
- File and directory management based on index nodes.
- System Calls
- Privilege switching and system calls based on interrupts.
- *C/C++*
- Basic *C/C++* standard libraries.

## Contents

### Getting Started

1. [Development Environment](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Getting%20Started/Development%20Environment.md)
2. [Building the System](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Getting%20Started/Building%20the%20System.md)

### Boot

3. [Master Boot Record](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Boot/Master%20Boot%20Record.md)
4. [Loader](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Boot/Loader.md)

### Kernel

5. [Interrupts](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Kernel/Interrupts.md)
6. [System Calls](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Kernel/System%20Calls.md)
7. [Threads](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Kernel/Threads.md)
8. [Memory](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Kernel/Memory.md)
9. [File System](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Kernel/File%20System.md)
10. [User Processes](https://github.com/Zhuagenborn/Tiny-x86-OS/blob/main/docs/Kernel/User%20Processes.md)

## References

- [*ใ€Šๆ“ไฝœ็ณป็ปŸ็œŸ่ฑก่ฟ˜ๅŽŸใ€‹้ƒ‘้’ข*](https://github.com/yifengyou/os-elephant)

## Structure

```console
.
โ”œโ”€โ”€ CITATION.cff
โ”œโ”€โ”€ Debugging.md
โ”œโ”€โ”€ LICENSE
โ”œโ”€โ”€ Makefile
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ docs
โ”‚ย ย  โ”œโ”€โ”€ Boot
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Images
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ loader
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ memory-paging.drawio
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ memory-paging.svg
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ page-directory-table.drawio
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ page-directory-table.svg
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Loader.md
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ Master Boot Record.md
โ”‚ย ย  โ”œโ”€โ”€ Getting Started
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Building the System.md
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ Development Environment.md
โ”‚ย ย  โ”œโ”€โ”€ Kernel
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ File System.md
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Images
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file-system
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ directory-entries.drawio
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ directory-entries.svg
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ index-node.drawio
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ index-node.svg
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ memory
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ memory-heap.drawio
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ memory-heap.svg
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ memory-pools.drawio
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ memory-pools.svg
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ threads
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ thread-block.drawio
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ thread-block.svg
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ thread-lists.drawio
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ thread-lists.svg
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ thread-switching.drawio
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ thread-switching.svg
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Interrupts.md
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Memory.md
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ System Calls.md
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Threads.md
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ User Processes.md
โ”‚ย ย  โ””โ”€โ”€ badges
โ”‚ย ย  โ”œโ”€โ”€ C++.svg
โ”‚ย ย  โ”œโ”€โ”€ License-MIT.svg
โ”‚ย ย  โ”œโ”€โ”€ Linux.svg
โ”‚ย ย  โ”œโ”€โ”€ Made-with-GitHub-Actions.svg
โ”‚ย ย  โ”œโ”€โ”€ Made-with-Make.svg
โ”‚ย ย  โ””โ”€โ”€ NASM.svg
โ”œโ”€โ”€ include
โ”‚ย ย  โ”œโ”€โ”€ boot
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ boot.inc
โ”‚ย ย  โ”œโ”€โ”€ kernel
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ debug
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ assert.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ descriptor
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ desc.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ desc.inc
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ gdt
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ idx.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ tab.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ interrupt
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ intr.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ pic.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ io
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ disk
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ disk.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ disk.inc
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ dir.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ inode.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ super_block.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ ide.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ dir.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ path.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ io.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ keyboard.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ timer.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ video
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ console.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ print.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ print.inc
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ krnl.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ krnl.inc
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ memory
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ page.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ page.inc
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ pool.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ process
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ elf.inc
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ proc.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ tss.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ selector
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ sel.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ sel.inc
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ stl
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ algorithm.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ array.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ cerron.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ cmath.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ cstddef.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ cstdint.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ cstdlib.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ cstring.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ iterator.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ mutex.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ semaphore.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ source_location.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ span.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ string_view.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ type_traits.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ utility.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ syscall
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ call.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ thread
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ sync.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ thd.h
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ util
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ bit.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ bitmap.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ block_queue.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ format.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ metric.h
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ metric.inc
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ tag_list.h
โ”‚ย ย  โ””โ”€โ”€ user
โ”‚ย ย  โ”œโ”€โ”€ io
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ dir.h
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ file.h
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ video
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ console.h
โ”‚ย ย  โ”œโ”€โ”€ memory
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ pool.h
โ”‚ย ย  โ”œโ”€โ”€ process
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ proc.h
โ”‚ย ย  โ”œโ”€โ”€ stl
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ cstdint.h
โ”‚ย ย  โ””โ”€โ”€ syscall
โ”‚ย ย  โ””โ”€โ”€ call.h
โ””โ”€โ”€ src
โ”œโ”€โ”€ boot
โ”‚ย ย  โ”œโ”€โ”€ loader.asm
โ”‚ย ย  โ””โ”€โ”€ mbr.asm
โ”œโ”€โ”€ kernel
โ”‚ย ย  โ”œโ”€โ”€ debug
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ assert.cpp
โ”‚ย ย  โ”œโ”€โ”€ descriptor
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ desc.asm
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ gdt
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ tab.cpp
โ”‚ย ย  โ”œโ”€โ”€ interrupt
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ intr.asm
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ intr.cpp
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ pic.cpp
โ”‚ย ย  โ”œโ”€โ”€ io
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ disk
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ disk.cpp
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ dir.cpp
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file.cpp
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ inode.cpp
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ super_block.cpp
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ ide.cpp
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ part.cpp
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ dir.cpp
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ file.cpp
โ”‚ย ย  โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ path.cpp
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ io.asm
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ io.cpp
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ keyboard.cpp
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ timer.cpp
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ video
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ console.cpp
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ print.asm
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ print.cpp
โ”‚ย ย  โ”œโ”€โ”€ krnl.cpp
โ”‚ย ย  โ”œโ”€โ”€ main.cpp
โ”‚ย ย  โ”œโ”€โ”€ memory
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ page.asm
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ page.cpp
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ pool.cpp
โ”‚ย ย  โ”œโ”€โ”€ process
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ proc.cpp
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ tss.asm
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ tss.cpp
โ”‚ย ย  โ”œโ”€โ”€ stl
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ cstring.cpp
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ mutex.cpp
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ semaphore.cpp
โ”‚ย ย  โ”œโ”€โ”€ syscall
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ call.asm
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ call.cpp
โ”‚ย ย  โ”œโ”€โ”€ thread
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ sync.cpp
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ thd.asm
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ thd.cpp
โ”‚ย ย  โ””โ”€โ”€ util
โ”‚ย ย  โ”œโ”€โ”€ bitmap.cpp
โ”‚ย ย  โ”œโ”€โ”€ format.cpp
โ”‚ย ย  โ””โ”€โ”€ tag_list.cpp
โ””โ”€โ”€ user
โ”œโ”€โ”€ io
โ”‚ย ย  โ”œโ”€โ”€ file
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ dir.cpp
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ file.cpp
โ”‚ย ย  โ””โ”€โ”€ video
โ”‚ย ย  โ””โ”€โ”€ console.cpp
โ”œโ”€โ”€ memory
โ”‚ย ย  โ””โ”€โ”€ pool.cpp
โ””โ”€โ”€ process
โ””โ”€โ”€ proc.cpp
```

## License

Distributed under the *MIT License*. See `LICENSE` for more information.