设计实现满足应用APP逐步递增需求的逐步进化的OS
1 LibOS: 让APP与HW隔离,简化应用访问硬件的难度和复杂性
2 BatchOS: 让APP与OS隔离,加强系统安全,提高执行效率
3 multiprog&time-sharing OS: 让APP共享CPU资源
4 Address Space OS: 隔离APP访问的内存地址空间,加强APP间的安全
5 Process OS: 支持APP动态创建新进程,增强进程管理和资源管理能力
6 Filesystem OS:支持APP对数据的持久保存
7 IPC OS:支持多个APP进程间数据交互与事件通知
8 Tread&Coroutine OS:支持线程和协程APP,简化切换与数据共享
9 SyncMutex OS:在多线程APP中支持对共享资源的同步互斥访问
10 Device OS:提高APP的I/O效率和人机交互能力,支持基于外设中断的串口/块设备/键盘/鼠标/显示设备
30个系统调用
const SYSCALL_DUP: usize = 24;
const SYSCALL_OPEN: usize = 56;
const SYSCALL_CLOSE: usize = 57;
const SYSCALL_PIPE: usize = 59;
const SYSCALL_READ: usize = 63;
const SYSCALL_WRITE: usize = 64;
const SYSCALL_EXIT: usize = 93;
const SYSCALL_SLEEP: usize = 101;
const SYSCALL_YIELD: usize = 124;
30个系统调用
const SYSCALL_KILL: usize = 129;
const SYSCALL_SIGACTION: usize = 134;
const SYSCALL_SIGPROCMASK: usize = 135;
const SYSCALL_SIGRETURN: usize = 139;
const SYSCALL_GET_TIME: usize = 169;
const SYSCALL_GETPID: usize = 172;
const SYSCALL_FORK: usize = 220;
const SYSCALL_EXEC: usize = 221;
const SYSCALL_WAITPID: usize = 260;
30个系统调用
const SYSCALL_KILL: usize = 129;
const SYSCALL_SIGACTION: usize = 134;
const SYSCALL_SIGPROCMASK: usize = 135;
const SYSCALL_SIGRETURN: usize = 139;
const SYSCALL_GET_TIME: usize = 169;
const SYSCALL_GETPID: usize = 172;
const SYSCALL_FORK: usize = 220;
const SYSCALL_EXEC: usize = 221;
const SYSCALL_WAITPID: usize = 260;
const SYSCALL_THREAD_CREATE: usize = 1000;
const SYSCALL_GETTID: usize = 1001;
const SYSCALL_WAITTID: usize = 1002;
设计实现满足应用APP逐步递增需求的逐步进化的OS
const SYSCALL_MUTEX_CREATE: usize = 1010;
const SYSCALL_MUTEX_LOCK: usize = 1011;
const SYSCALL_MUTEX_UNLOCK: usize = 1012;
const SYSCALL_SEMAPHORE_CREATE: usize = 1020;
const SYSCALL_SEMAPHORE_UP: usize = 1021;
const SYSCALL_SEMAPHORE_DOWN: usize = 1022;
const SYSCALL_CONDVAR_CREATE: usize = 1030;
const SYSCALL_CONDVAR_SIGNAL: usize = 1031;
const SYSCALL_CONDVAR_WAIT: usize = 1032;
知识点
知识点
知识点
知识点
知识点
知识点
知识点
知识点
知识点
知识点
知识点
知识点
知识点
"系统调用"
例子,用C语言,来自UNIX(例如Linux、macOS、FreeBSD)
fd = open("out", 1);
write(fd, "hello\n", 6);
pid = fork()
能理解和编写包含操作系统进程/文件等相关的简单命令行Linux程序
App/OS内存布局
支持进程间通信和异步消息机制
对进程控制块的扩展
对进程控制块扩展,支持线程同步互斥访问共享变量
对进程控制块扩展,支持线程同步互斥访问共享变量
支持块设备/串口等外设
我们的系统已经能够支持多个任务分时轮流运行,我们希望引入一个新的系统调用 sys_task_info 以获取当前任务的信息
实现一个完全 DIY 的系统调用 spawn,用以创建一个新进程。
硬链接要求两个不同的目录项指向同一个文件,在我们的文件系统中也就是两个不同名称目录项指向同一个磁盘块。要求实现三个系统调用 sys_linkat、sys_unlinkat、sys_stat 。
内容
完成对基于信号量/条件变量的同步互斥多线程程序的死锁检测