/Orange_OS

自制Orange操作系统

Primary LanguageC

Orange操作系统设计和功能说明文档

Orange操作系统设计说明

开发目标

实现操作系统课程设计所要求的B、C、D三个难度。

难度B:对参考源码的文件系统和进程管理系统进行修改,

难度C:完善控制台的命令解释器,通过在shell上输入指令可以文件增删以及信息查看等功能。

难度D:实现5个应用程序,包括五子棋游戏、井字棋游戏、简易计算器、猜数字游戏、N皇后游戏。

设计思路

首先我们学习了ORANGES提供的源码,分析了ORANGES中的一些缺陷,并根据这些缺陷来设计我们自己的操作系统。由于GUI设计与本次课设的学习目标不太相符,因此我们采用了控制台的形式

应用程序的设计受限于bochs版本问题,参考源码中的bochs版本为2.6,而我们组则都采用了bochs-2.6.9,所以导致用户级应用只能安装一个。但是我们已经了解了如何安装应用程序到文件系统中,因此我们将所有游戏打包为一个应用写入磁盘。

对于Shell的完善我们将控制台纳入文件系统,可以在控制台输入指令来实现对文件的管理操作。同时可以通过shell来查看操作系统的一些基本信息。

Orange的文件系统只实现了文件最基本的操作,是一个一级的文件系统。这不符合我们平时的使用习惯。所以我们在这个基础上实现了多级文件文件系统。

我们实现了进程的查看、添加和删除。通过遍历proc_table,按照一定的格式输出进程表中的信息,在屏幕上显示进程名、优先级、当前状态等信息。根据用户提供的进程id,使用系统调用,可以找到并删除当前进程表中对应的用户进程,并将该项置为空,可以用于容纳新建的进程。当接收到用户的新建进程指令时,系统将会调用内核的接口,folk一个新的进程,并使其开始像其他进程一样运行和切换。

项目组成

boot(引导)

kernel(内核)

command(应用)

fs(文件系统)

lib(可用代码库)

include(头文件)

mm(内存调度系统)  

环境配置

ubuntu-16.04.2:1G内存、20G硬盘 64位 bochs-2.6.9

项目功能分析

文件系统

Orange中的文件系统并没有文件夹之类的概念,是一个一级的文件系统。我们对文件系统进行了修改,使得文件系统变成了多级的文件系统。该文件系统有文件和文件夹,文件夹文件里存的是该文件夹里的文件/文件夹的名称。我们通过cd操作可以很方便的进出文件夹,通过ls操作参看文件夹里的内容。  

进程管理

我们实现了进程的查看、添加和删除。通过遍历proc_table,按照一定的格式输出进程表中的信息,在屏幕上显示进程名、优先级、当前状态等信息。根据用户提供的进程id,使用系统调用,可以找到并删除当前进程表中对应的用户进程,并将该项置为空,可以用于容纳新建的进程。当接收到用户的新建进程指令时,系统将会调用内核的接口,folk一个新的进程,并使其开始像其他进程一样运行和切换。  

控制台

控制台纳入了文件系统、进程部分以及系统信息等部分,共有15条指令。

应用

一共有5个应用程序:五子棋游戏、井字棋游戏、简易计算器、猜数字游戏、N皇后游戏。5个应用程序用户体验良好,可以随时退出回到控制台。安装应用程序到操作系统中分为以下几步:  

  • 编写应用程序,并编译链接。
  • 将链接好的应用程序打成一个tar包:inst.tar。
  • 将inst.tar用工具dd写入磁盘(映像)的某段特定扇区(假设这一段的首扇区的扇区号为X)。
  • 启动系统,这时mkfs( )会在文件系统中建立一个新文件cmd.tar,它的inode中的i_start_sect成员会被设为X。
  • 在某个进程中——比如Init——将cmd.tar解包,将其中包含的文件存入文件系统。

而在本项目中,应用程序的设计受限于bochs版本问题,参考源码中的bochs版本为2.6,而我们组则都采用了bochs-2.6.9,所以导致用户级应用只能安装一个。但是我们已经了解了如何安装应用程序到文件系统中,因此我们将所有游戏打包为一个应用写入磁盘。  

进程管理

我们实现了进程的查看、添加和删除。通过遍历proc_table,按照一定的格式输出进程表中的信息,在屏幕上显示进程名、优先级、当前状态等信息。根据用户提供的进程id,使用系统调用,可以找到并删除当前进程表中对应的用户进程,并将该项置为空,可以用于容纳新建的进程。当接收到用户的新建进程指令时,系统将会调用内核的接口,folk一个新的进程,并使其开始像其他进程一样运行和切换。

Orange操作系统基本功能介绍

开机动画

欢迎界面

Welcome

在控制台输入welcome指令进入欢迎界面。

Clear

在控制台输入clear后清空控制台内容,展示欢迎界面。

Print

在控制台输入print后打印相应字符串

Information

在控制台输入information后得到相应内存等信息。

Game

在控制台输入game后进入应用程序界面,可以选择5种不同的小游戏。输入e退出程序界面,在任何小游戏内输入e退出游戏。

五子棋:双人五子棋。两位玩家轮流下棋,分别为“!”和“&”。

算器:

字棋:玩家与电脑对战,选择位置下棋,玩家下棋标志为“0”,电脑为“X”。

数字小游戏:电脑随机数字由玩家来猜。

皇后小游戏:输入N的值,得到N皇后问题的解。

文件的增删查改

文件系统的增删查改共有9条指令。可以创建删除文件、文件夹,编辑文件,使用ls指令查看所有文件、文件夹,进入文件夹或返回根目录。  

进程管理

可以查看进程并结束进程。