# 一、项目描述
## 1.项目目的
通过操作系统课程设计,我们实现了一个简单而功能完善的操作系统,通过实践来理解一个操作系统的诞生。从而更加深入具体地了解操作系统的进程,内存,文件,以及外设管理的原理。
# 二、开发环境
Ubuntu 16.04
Bochs 模拟器
# 三、项目完成指标
本次操作系统课程设计小组成员为 3 人,基于《Orange’s个操作系统的实现》,通过修改或重新实现源码的一个或多个模块来实现一个简单得操作系统。
本次课程设计主要实现了图形化,对外设管理部分进行重新实现,实现了 B 级项目难度;同时对文件系统进行修改,支持多级文件系统,实现了 B 级难度; 并实现了显示图片和保存图片等系统级应用,实现了 C 级难度;最后在图形化的基础上实现了一个图形化的小游戏,完成了 D 级难度。
# 四、功能说明
图形化界面
本系统修改了外设显卡部分,使系统支持图形化界面,但由于时间精力有限, 我们的主要界面仍然是命令行的形式,但是命令行中所有的文字都是使用像素点拼凑的形式展现出来的,同时在图形化的基础上实现了开机动画,图片显示,以及一个小游戏。
# 五、开机动画
进入系统后会有一个开机开机动画,不同颜色的字母 F W O S 依次出现在屏幕上,实现图形化的开机动画。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/972e3447d13eafed9ad02f2b86f1e18c.writebug)
# 六、图片显示
系统支持显示图片,用户输入 showImage [filename]即可显示图片,显示的图片通过 saveImage 接口可以将 bmp 格式图片数组存入磁盘中,然后使用showImage 即可将图片读取出并显示出来。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/08babb3d34691dd9d789515e733cdd62.writebug)
# 七、进程管理
本系统提供 process 命令查看系统全部进程,包括进程的 pid,名称,优先级以及是否在运行(YES 表示正在运行,NO 表示没有运行),具体运行结果如下图
![](https://www.writebug.com/myres/static/uploads/2021/10/28/4ad5286cb4e6325667a9d4b45db8eabc.writebug)
# 八、文件系统
## 8.1 显示文件列表
系统提供 ls 命令显示文件列表,用户输入 ls 命令可以查看当前目录下的所有文件和目录(多级目录系统)。
通过调ls()法向件系统发送 LS 系统消息,当件系统接收到消息之后会执do_ls()法,该法会通过遍历当前节点下的节点来打印当前录下的件信息。打印的内容包括节点的 inode 编号,对应的件类型和对应的
件名。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/ceffa8f07298affb6cf56db5cb77d456.writebug)
## 8.2 创建文件
系统提供 touch 命令创建文件,用户输入 touch [filename]命令可以创建文件。
通过调CreateFile()法,该法会调open()法来进创建。根据法返回值判断是否创建成功并给户发出反馈消息。其中创建件时会对件进
重名检测。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/9fabddd1a4f3f45ca5f722d2a5afad76.writebug)
## 8.3 删除文件/文件夹
系统提供 rm 命令删除文件/文件夹,用户输入 rm [filename]命令可以删除文件/文件夹。
调DeleteFile()法,向件系统发送 UNLINK 消息,件系统在接收到消息之后会调do_unlink()法进实现件或件夹的删除。其中件夹的删除实现是递归删除件夹的节点。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/1838b48c9fca51bd477a547d3364ac99.writebug)
## 8.4 写文件
户输“vi+filename”指令,系统在定位到标件后显示件路径, 之后户输要写件的内容并回,完成写件操作。
系统先使open()法定位件,然后调write()法对件进写操作。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/9c3d387f5d20f536b2a89f984d0aff7b.writebug)
## 8.5 读文件
户输“cat+filename”指令,查看该件内容,若件中已写内容, 则如上图显示;若件创建后未写内容,则打印空。
系统先使open()法定位件,然后调read()法对件进写操作。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/13527cf02dcf8ff0a319c1a8b0996043.writebug)
## 8.6 创建目录
系统文件系统为多级文件系统,提供 mkdir 命令创建文件夹。
系统先使CreateDir()法创建对应件路径,然后调open()法来检测是否有同名件,如果有的话则会报错。如果没有重名件夹创建件夹, 成功或失败都会有相应提示信息。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/6ad0de47ca2bb7f14e16e3a58cd5191c.writebug)
## 8.7 进入多级目录
系统文件系统为多级文件系统,提供 cd 命令进入多级目录。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/9a9dc635ed83ee91fcfb91ef15abdb64.writebug)
# 九、游戏
## 9.1 6.1 2048
用户输入run2048 可以进入 2048 游戏。系统动打印游戏控制法(wsad控制上下左右,enter 键退出游戏)以及初始棋盘、当前分数(初始为 0);户每次只能输个运动向,系统动刷新棋盘及分数,同时在棋盘内随机成新数字格。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/b453a8b9b19e068ba1e0c42b52d766dd.writebug)
## 9.2 flappybird
用户输入 flappybird 可以进入 flappybird 游戏。空格可以控制小鸟上升躲避障碍物。
![](https://www.writebug.com/myres/static/uploads/2021/10/28/287cff4abce60a0490079a7e7e955a4f.writebug)
# 十、核心代码
## 10.1 print_char()
```c++
void print_char(int x, int y, char c, char ch) {
x=x*8;
y=y*16;
char* font=hankaku + ch * 16;
int i;
int xsize=320;
char *p, d
/* data */
;
for (i = 0; i < 16; i++) {
p = VGA_MEM_BASE + (y + i) * xsize + x;
for (int j=0; j<8; j++)
p[j]=0;
d = font[i];
if ((d & 0x80) != 0) {
p[0] = c;
}
if ((d & 0x40) != 0) {
p[1] = c;
}
if ((d & 0x20) != 0) {
p[2] = c;
}
if ((d & 0x10) != 0) {
p[3] = c;
}
if ((d & 0x08) != 0) {
p[4] = c;
}
if ((d & 0x04) != 0) {
p[5] = c;
}
if ((d & 0x02) != 0) {
p[6] = c;
}
if ((d & 0x01) != 0) {
p[7] = c;
}
```
## 10.2 showImage()
```c++
void _showImage(char* path,char* filename)
{
clear();
char absoPath[512]; convert_to_absolute(absoPath, path, filename); unsigned char size[3];
int fd = open(absoPath, O_RDWR); assert(fd != -1);
read(fd, size, 3); int w=size[0]+size[1]; int h=size[2];
int rd_bytes=w*h;
unsigned char Img[rd_bytes];
int n = read(fd, Img, rd_bytes); assert(n==rd_bytes);
close(fd);
char* p = (char *) VGA_MEM_BASE; for (int y = 0; y <h; y++) {
for(int x = 0; x < w; x++)
{
p[y*320+x] = Img[y*w+x];
}
}
console_table[current_console].cursor = ((h/16)+1)*8; waitkey();
}
```
## 10.3GoDir()
```c++
void GoDir(char* path, char* file) {
int flag = 0;
// 判断是进入下一级目录还是返回上一级目录
char newPath[512] = {
0
}
;
if (file[0] == '.' && file[1] == '.') // cd ..返回上一级目
录 {
flag = 1;
int pos_path = 0;
int pos_new = 0;
int i = 0;
char temp[128] = {
0
}
;
// 用于存放某一级目录的名称
while (path[pos_path] != 0) {
if (path[pos_path] == '/') {
pos_path++;
if (path[pos_path] == 0) // 已到达结尾
break; else {
temp[i] = '/';
temp[i + 1] = 0;
i = 0;
while (temp[i] != 0) {
newPath[pos_new] = temp[i];
temp[i] = 0;
// 抹掉pos_new++;
i++;
}
i = 0;
}
} else {
temp[i] = path[pos_path];
i++;
pos_path++;
}
}
}
char absoPath[512];
char temp[512];
int pos = 0;
while (file[pos] != 0) {
temp[pos] = file[pos];
pos++;
}
temp[pos] = '/';
temp[pos + 1] = 0;
if (flag == 1) // 返回上一级目录 {
temp[0] = 0;
convert_to_absolute(absoPath
没有合适的资源?快使用搜索试试~ 我知道了~
基于Oranges实现的一个小游戏【100012993】
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共98个文件
c:40个
h:21个
asm:7个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 200 浏览量
2023-07-19
14:09:13
上传
评论 1
收藏 1.43MB ZIP 举报
温馨提示
本次操作系统课程设计小组成员为 3 人,基于《Orange’s个操作系统的实现》,通过修改或重新实现源码的一个或多个模块来实现一个简单得操作系统。 本次课程设计主要实现了图形化,对外设管理部分进行重新实现,同时对文件系统进行修改,支持多级文件系统, 并实现了显示图片和保存图片等系统级应用,最后在图形化的基础上实现了一个图形化的小游戏。
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/octet-stream](https://img-home.csdnimg.cn/images/20210720083646.png)
![002](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PDF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PPTX.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 98 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/fbed2db386fd4018b8f2474d6651545d_s1t16.jpg!1)
神仙别闹
- 粉丝: 2714
- 资源: 7669
![benefits](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-1.c8e153b4.png)
下载权益
![privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-2.ec46750a.png)
C知道特权
![article](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-3.fc5e5fb6.png)
VIP文章
![course-privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-4.320a6894.png)
课程特权
![rights](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-icon.fe0226a8.png)
开通VIP
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)