蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > PDF文档下载
 

计算机操作系统试验_创建GeekOS内核线程

  • 资源ID:54690973       资源大小:278.31KB        全文页数:7页
  • 资源格式: PDF        下载权限:游客/注册会员    下载费用:10积分 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要10积分 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

计算机操作系统试验_创建GeekOS内核线程

西北工业大学西北工业大学 操作系统实验操作系统实验 实验报告实验报告 一、实验目的一、实验目的 分析 GeekOS 中内核代码,掌握内核线程的实现原理 二、实验要求二、实验要求 1.创建一个线程,实现从键盘接收一个按键,并在屏幕上显示。 2.创建两个线程,分别打印输出不同的字符串信息。观察并分析结果。 3.自行设计个性化的内核线程,给出运行结果。 三、实验过程及结果三、实验过程及结果 1. 1.创建一个线程,实现从键盘接收一个按键,并在屏幕上显示。创建一个线程,实现从键盘接收一个按键,并在屏幕上显示。 答代码实现如下答代码实现如下 void print_keyvoid print_key { { Print“To Exit hit Ctrl d.\n“;Print“To Exit hit Ctrl d.\n“; Keycode keycode;Keycode keycode; while1while1 { { if Read_Keyint asciiCodekeycode ifkeycodePrint“\n---------BYE--------\n“; Exit1;Exit1; }else}else { { Print“c“,asciiCode\r\nasciiCode;Print“c“,asciiCode\r\nasciiCode; } } } } } } } } } } 在屏幕上输入we are all in the gutter, but some of us are looking at the stars.we are all in the gutter, but some of us are looking at the stars. -1- 结果如图 2. 2.创建两个线程,分别打印输出不同的字符串信息,观察并分析结果。创建两个线程,分别打印输出不同的字符串信息,观察并分析结果。 答创建两个线程,代码如下 void 2void 2 { { whiletruewhiletrue { { Print“A“;Print“A“; } } } } void 3void 3 { { whiletruewhiletrue { { Print“B“;Print“B“; } } } } 两个线程分别输出字符‘A’和字符‘B’,结果如下图。 从结果中可以看出,两个线程共享 CPU 时间,同一时间只能运行一个线程, 且运行哪一个线程是随机地。 -2- 3. 3.自行设计个性化的内核线程,给出运行结果。自行设计个性化的内核线程,给出运行结果。 答创建两个线程,线程一不停的画一个大的心形,线程二不停的画小的心形, 两个线程交替执行,产生“心跳”的动态效果。 代码如下 void output4{void output4{ while1{while1{ int i,j;int i,j; Clear_Screen;Clear_Screen; Put_Cursor0,0;Put_Cursor0,0; Print“Print“******************\n“;******\n“; Print“Print“******************************\n“;**********\n“; Print“ ************* *************\n“;Print“ ************* *************\n“; fori0;i从通用 Handle 一 Interrupt 进入特定中断函数 Timer_Interrupt_Handler-加时钟滴答-滴答未到期-返回 Handle_lnterrupt 恢复堆栈回来运行任务 A。 任务 A-时钟中断-从通用 Handle_Interrupt 进入特定中断函数 Timer_Interrupt_Handler-加时钟滴答-滴答到期,置全局标志 g_need Reschedule 表示需要重新调度-返回 Handle_Interrupt 调用 Get_Next_Runnable 将新要运行的线程结构体献给上 currentThread, 并恢复新线程的堆栈-最后 iret 返回,运行新进程。 2.键盘中断产生线程切换 任务 A-按了一下键位,产生键盘中断-从通用 Handle_Interrupt 进入特 定中断函数 Keyboard_Interrupt_Handler-处理扫描码得到显示字符 keycode, 并 将 keycode 放入队列,唤醒等待键盘缓冲区的进程之后,直接置全局标志 g_needReschedule表 示 需 要 重 新 调 度 - 返 回Handle_Interrupt调 用 Make_Runnable 将新要运行的线程结构体赋给 g_currentThread 并恢复新线程的 堆栈-最后 iret 返回,运行新进程。 五、所遇问题及解决方法五、所遇问题及解决方法 -6- 通过此次实验, 我由原来对操作系统只有一个粗浅的概念的认识的水平上升 到对操作系统有比较深刻印象和理解的程度。不仅概念得到了进一步的理解,更 是对操作系统框架有一个整体的认识。 包括深入体会操作系统是怎么实时显示出 我们在键盘上敲击的字符,以及操作系统中线程的创建和使用,以及进程调度的 相关概念和具体实现。 本次试验对于我来说,还是很有困难的,因为 GeekOS 的了解程度还不够, 我对进程和线程的概念掌握的还不是很好, 导致在做实验的过程中遇到了一些困 难。 尤其是在屏幕上显示键盘敲击的字符那个实验,因为之前的确没有深入想过 这其中的原理, 导致在实验过程中屡次失败,最后在查找了相关资料后才得以解 决。 之前都没有对操作系统做详细的研究,但克服了相应困难,总是有收获的。 在困难中,我学到了很多在课堂上学不到的知识,可以说是受益匪浅。 -7-

注意事项

本文(计算机操作系统试验_创建GeekOS内核线程)为本站会员(sunhongz121)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开