sagiri
1.0.0
一个简单的操作系统, 可以在x86-64多核处理器上运行.
这是我在操作系统实验课程中完成的作业, 由于课上只讲了在32位单核CPU上的操作系统设计, 而我对在多核处理器上运行的操作系统比较感兴趣, 因此选择了在x64对称多处理器上写一个操作系统这一作业.
使用Ubuntu 16.04开发. 安装依赖:
apt install make gcc gdb qemu
运行
make qemu

为应用程序提供进程/线程API, 支持进程/线程的创建, 等待, 取消, 睡眠等操作.
实现了进程创建过程中的内存copy-on-write技术.
通过恰当的同步互斥机制避免多个CPU执行指令时的竞争条件.
利用LAPIC/IOAPIC实现多核CPU的启动和中断控制.
通过thread_local变量存储与特定CPU相关的变量.
| 编号 | 名称 |
|---|---|
| 0 | fork |
| 1 | exit |
| 2 | thread_create |
| 3 | thread_exit |
| 4 | wait_process |
| 5 | wait_thread |
| 6 | get_pid |
| 7 | get_tid |
| 8 | kill_process |
| 9 | kill_thread |
| 10 | sleep |
| 11 | open |
| 12 | close |
| 13 | read |
| 14 | write |
| 15 | unlink |
| 16 | readdir |
| 17 | stat |
| 18 | mkdir |
| 19 | rmdir |
| 20 | lseek |
| 21 | exec |
实现信号机制.
实现对一个常用文件系统的支持.
TCP/IP协议栈.