设计项目0

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GeekOS操作系统实验 设计项目0
西北工业大学 计算机学院 刘尊
环境说明 我们采用的实验环境是
GeekOS bochs Fedora7 VMware windowsXP 硬件 GeekOS GeekOS HW
GeekOS的可能运行环境
GeekOS Bochs (HW Emulation) Native OS
编辑好了以后可以进行编译,在终端上进入目录
$ cd /home/geekos-0.3.0
编译
$ make depend $ make
如果没有错误,在build目录下会生成相应的磁盘 文件,这里是fd.img。以后的项目可能还会生产 硬盘镜像文件diskc.img。
提示在此处建立新进程
西北工业大学计算机学院
HW
VMware Virtualization
Native OS HW
西北工业大学计算机学院
实验说明 实验环境已经预先设置好了 首先打开程序中的VMware,然后在VMware中打开 虚拟机,并启动该虚拟机,进入linux系统 桌面上有终端、文件浏览器和文件编辑器的快捷 方式可供大家使用 我们的工作目录是/home/geekos-0.3.0,该目录的 结构如前所示,仅根据需要添加了一个replace目 录 当要完成某项目时,首先在终端进入工作目录, 然后进入scripts目录,使用该目录中的脚本 startProject建立项目文件
该函数的主要功能是以参数startFunc指向的代码为进程 体生成一个内核进程。 startFunc是一个Thread_Start_Func类型的函数指针,其 定义在kthread.h中
西北工业大学计算机学院
GeekOS的键盘处理函数 定义在keyboard.h和keyboard.c中。 定义了功能键常量、缓冲区等,请大家自行阅读, 其公用接口有三个Init_Keyboard、Read_Key和 Wait_For_Key 键盘初始化是在Main函数中调用Init_Keyboard实 现的 Read_Key用来获取键值 Wait_For_Key用来等待键盘输入,进程若想获得 键盘输入只要调用该函数即可,该函数返回 keycode类型,是在keyboard.h中定义的一个 ushort_t
西北工业大学计算机学院
Start_Kernel_Thread 函数
struct Kernel_Thread* Start_Kernel_Thread( Thread_Start_Func startFunc, ulong_t arg, int priority,bool detached) { struct Kernel_Thread* kthread = Create_Thread(priority, detached); if (kthread != 0) { Setup_Kernel_Thread(kthread, startFunc, arg); Make_Runnable_Atomic(kthread); } return kthread; }
西北工业大学计算机学院
实验说明 然后可以在bochs模拟器中查看运行结果 Bochs模拟器的默认的配置文件叫.bochsrc,本来 每个项目都配有一个这样的配置文件,但版本与 bochs不符,所以首先要从我们增加的replace目 录拷贝一个名为bochsrc的配置文件到build目录, 并且在项目1中由于没有硬盘镜像文件,所以要把 bochsrc中的第12行
西北工业大学计算机学院
项目分析 熟悉键盘操作函数,编程实现新建一个内核进程。 该进程的功能是:接受键盘输入的字符并显示到 屏幕,当输入ctrl+d时,结束进程 需要了解新建内核进程的方法 Start_Kernel_Thread函数 还需理解GeekOS的键盘处理函数 还需要编写一个接收键盘输入并显示的函数
ata0-master:………. 用‘#’注释掉
然后就可以运行bochs了 $ bochs –f bochsrc 如果能正确显示,则实验成功
西北工业大学计算机学院
项目设计目的和要求 目的: 熟悉GeekOs的项目编译、调试和运行环境,掌握 GeekOs运行工作过程 要求: 1、搭建GeekOS的编译和调试平台,掌握GeekOS的 内核进程工作原理,完成系统的配置,调试 project0并添加输入字符并回显功能 2、熟悉键盘操作函数,编程实现新建一个内核进 程。该进程的功能是:接受键盘输入的字符并显 示到屏幕,当输入ctrl+d时,结束进程。
如:./startProject project0 ../src/project0
西北工业大学计算机学院
实验说明 然后我们可以使用桌面上的文件编辑器bluefish 对project0的源代码进行编辑。代码路径:
/home/geekos-0.3.0/scripts/project0/src/geekos/main.c
西北工业大学计算机学院
主要工作 编写一个函数,功能是:接受键盘输入的字符并显 示到屏幕,当输入ctrl+d时,结束进程 在main函数中调用Start_Kernel_Thread 函数,将 上边函数的地址传给参数startFunc,建立一个内 核级进程 在main函数中有
TODO("Start a kernel thread to echo pressed keys and print counts");
相关文档
最新文档