本项目以Orange's操作系统作为基本框架,完成了三个系统级应用:多功能控制台、进程管理和文件管理。同时,还实现了15个用户级应用。包括计算器、日历、国际跳棋小游戏和touch、rm、cat、ps等常用Shell指令。系统将根据输入的命令进行不同的操作。
额外的,项目还有许多附加的小功能,例如开机动画等。
编写语言:汇编语言、C语言
开发环境:Linux系统下的Bochs2.6.11
运行环境:Ubuntu20.04
1953608 吴英豪
github地址: https://github.com/HOLLYwyh/My_OS
详见CSDN博客:https://blog.csdn.net/kuang_tian_you/article/details/81412364
- 由于挂载指令已经写在了OS文件夹下的Makefile中,用户无需输入更多内容。
- 在OS文件夹下新建一个文件夹mnt,在mnt文件夹中新建一个floppy文件夹即可。
即建立/OS/mnt/floppy
- 在OS目录下输入
bochs -f bochsrc
再输入 6 并输入c启动项目
- 在终端中输入 details 可以查看与操作系统相关的详细信息
details
2. 在终端中输入cmd可以查看所有的shell指令和用户级应用指令
cmd
xx -h
或
xx --help
输入相应的指令即可执行程序
- echo
功能: 输出用户输入的内容
- pwd
功能:查看当前路径
- author
功能: 查看操作系统的作者
- cal
功能:计算器
- cmd
功能:查看所有指令
- ps
功能:查看所有进程
- kill
功能:终止进程
- time
功能:查看当前时间
- touch
功能:新建文件
- rm
功能:删除文件
- ls
功能:列举所有的文件
- cat
功能:查看文件信息
- write
功能:写文件
- details
功能:查看操作系统详细信息
- game
功能:玩游戏
- 输入其他内容
Shell会检测用户的输入并给出一定的提示
- 采用微内核,进程之间通过发送与接收消息的方式来传递消息。
- 采用分页的方式来管理磁盘。
- 内存共32M,10M的系统内存,22M的用户内存。
- 通过将程序压缩成压缩包后解压的方式安装程序。
Ring0级别的系统进程有:
- TTY(控制中断程序)
- SYS(控制系统进程、时间等)
- HD(控制硬件的读写)
- FS(控制文件系统)
- MM(控制内存管理,内存分配等)
Ring1级别的用户级进程有:
- Init(所有用户级进程的祖先)
- ps_monitor(实时监控进程,以防止进程错误)
- fs_monitor(实时监控文件系统,以防止文件系统的错误)
- mm_monitor(实时监控内存,以防止内存的错误)
由进程fork()而成的进程,可以被终止。
进程调度采用时间片轮转法和非抢占式优先级调度的方式。
- 当时间片时间结束之后,系统将选择优先级最高的进程执行
- 当前进程因等待消息而阻塞时,系统将选择优先级最高的进程执行。
- 将磁盘的一部分开辟为系统的硬件区域,并将系统的文件挂载在磁盘上。
- 采用分页的形式来管理磁盘文件。
- 内存共32M,10M的系统内存,22M的用户内存。
- 每一个进程都会分配一定的内存单元,以确保系统的正常运行。
首先创建名为shell对应指令的文件,将其安装在磁盘中,当用户输入对应指令之后,系统会 查找磁盘,fork()产生一个子进程并执行程序。执行完毕之后,子进程释放,返回父进程。