桂林电子科技大学操作系统课程设计(一)
生活随笔
收集整理的這篇文章主要介紹了
桂林电子科技大学操作系统课程设计(一)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
桂林電子科技大學(xué)大三操作系統(tǒng)課設(shè)(project0)
1.project0 目的:熟悉GeekOS的項(xiàng)目編譯、調(diào)試和運(yùn)行環(huán)境,掌握GeekOS運(yùn)行工作過程。
2.要求:熟悉鍵盤操作函數(shù),編程實(shí)現(xiàn)一個(gè)內(nèi)核進(jìn)程。該進(jìn)程的功能是:接收鍵盤輸入的字符并顯示到屏幕上,當(dāng)輸入ctrl+d時(shí),結(jié)束進(jìn)程的運(yùn)行。
3.環(huán)境:linux環(huán)境+boch
4.操作步驟:
????(1).編寫main函數(shù)
????(2)在main()函數(shù)前添加 void project0()函數(shù)的定義????(3)在main()函數(shù)下添加project0()函數(shù)
void project0() {Print("To Exit hit Ctrl + d.\n");Keycode keycode;while(1){if( Read_Key(&keycode) ) //讀取鍵盤按鍵狀態(tài){if(!( (keycode & KEY_SPECIAL_FLAG) || (keycode & KEY_RELEASE_FLAG)) ) //只處理非特殊按鍵的按下事件{ //低8位為Ascii碼,KEY_CTRL_FLAG 0x4000 0x4064 & 0xff = 0x0064if( (keycode & KEY_CTRL_FLAG)==KEY_CTRL_FLAG && asciiCode=='d') //按下Ctrl鍵{Print("\n---------BYE!--------\n");Exit(1); }else{Print("%c",(asciiCode=='\r') ? '\n' : asciiCode);}} }} }????(4)在main()中添加線程
struct Kernel_Thread *thread;thread=Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false);????(5)還要配置一下環(huán)境,差不多要完成了,首先,把include文件夾下面的sigment.h的定義下的變量修改一下見圖:
切記,baseHigh一定要加上 “:8”大小值
????(6)最后配置一下.bochs 這里的bochs指的是build文件夾下的,而不是和main()函數(shù)同一目錄下的,把環(huán)境配成如下代碼:
megs: 8 boot: a floppya: 1_44=fd.img, status=inserted????(6)運(yùn)行結(jié)果:
首先編譯一下文件,生成鏡像
用make命令,生成fd.img命令
接著是運(yùn)行用bochs命令運(yùn)行:
運(yùn)行結(jié)果:
謝謝大家!!!
總結(jié)
以上是生活随笔為你收集整理的桂林电子科技大学操作系统课程设计(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(1732):前端系列javas
- 下一篇: 蓝桥杯官网练习系统基础练习(十一)