- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简单操作系统实现之进程分析
引言进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。 进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。Linux的一个未发布版本Linux0.00是一个十分简单的操作系统雏形,其最终运行结果为在终端不断打印A、B两个字符,是多进程调度运行的结果。本文主要对操作系统中进程的实现做简单分析。关键技术原理分析2.1 简单进程实现步骤本文实现的进程遵循如下运行步骤:进程A运行中。时钟中断发生,特权级由1变换到0,时钟中断处理程序启动。进程调度,下一个应运行的进程(假设为进程B)被指定。进程B被恢复,特权级由0变换回1.进程B运行中。要实现上述功能,必须考虑的实现有:时钟中断处理程序。进程调度模块。两个进程。2.2 进程表结构进程A在运行中被中断,调度程序将CPU控制权交给另一个进程B,等到B运行结束或被中断后控制权又回到A中,A继续运行。要实现这点,必然要有一个结构保存进程被中断时的状态,包括各种寄存器等,我们把这种结构称之为进程表。本文实现的进程表结构如下:LgsfsesdsediesiebpespebxedxecxeaxretaddreipcseflagsespssLDT SelectorDescriptor 1Descriptor 2H……其中从retaddr向低地址方向的位置保存进程调度时压栈的寄存器,retaddr向高地址方向的位置保存中断发生时压栈的返回地址等,其余的位置保存进程自己的局部描述符。2.3 进程栈和内核栈由以上进程表结构我们可以看到,如果要在进程调度模块中保存各寄存器值,其栈指针在此时必然指向的是进程表的一个位置,当寄存器值已经被保存到进程表内,进程调度模块就开始执行了。但这时如果我们在调度模块中使用了堆栈,而栈指针指向的是进程表,就会有问题发生,因此,为了避免错误的出现,我们在调度模块中将esp指向专门的称之为内核栈的区域。这样,在进程切换的过程中,esp的位置出现在3个不同的区域:进程栈——进程运行时自身的栈。进程表——存储进程状态信息的数据结构。内核栈——进程调度模块运行时使用的栈。2.4 特权级变换如果由外层特权级向内核的内层特权级变换时,需要从TSS中取出内层ss和esp作为目标代码的ss和esp。因此,我们必须准备好TSS。由于每个进程相对独立,我们把涉及到的描述符放在局部描述符表LDT中。而开始程序是运行在特权级0的,因此,我们要在外层特权级运行进程,必须在进程运行前变换到外层特权级,这点可以运用中断返回的运行原理来模拟一次中断返回,从而实现特权级到外层的变换。2.5 中断重入CPU在响应中断的过程中会自动关闭中断,但是中断处理程序的执行也需要一定的时间,而且系统中随时发生着各种内部或外部中断,因此在中断处理程序中必然要开启中断来保证其他事件的响应。但是如果当前中断还没有处理完成,又发生了下一次的相同中断,就会发生中断嵌套情况,在这种情况下,如果只是简单的中断处理例程,就有可能发生中断一直嵌套而不能继续执行的情况。由此,我们必须在打开中断的同时处理中断重入的情况,其思想很简单,就是使用一个变量记录当前中断的发生次数,如果在中断处理程序中发现当前中断发生次数大于1,则简单返回,由此解决中断重入情况。关键代码段分析3.1 特权级由内层变换到外层restart:;将当前栈指针指向进程表首地址mov esp, [p_proc_ready];将要启动的进程的LDT寄存器设置好lldt [esp + P_LDT_SEL] ;下面两行代码是为下一次外层特权级到内层0级特权级的变换做准备,;因为由外层向内层变换时,内层堆栈指针是从TSS中获得的,在这里把 ;内层的0级堆栈指针设为进程栈的首地址,这样,在时钟中断中进行返 ;回地址以及寄存器的压栈过程会将其保存到进程的进程表中,从而实现 ;了进程状态的保存。lea eax, [esp + P_STACKTOP]mov dword [tss + TSS3
您可能关注的文档
- 水力学综合测试题二附答案解析.doc
- 江苏自考 00107 现代管理学 打印版.docx
- 江苏省海安县北片2014届九年级政治12月联考试题 (word版含答案).doc
- 污水处理厂构筑物计算-格栅.doc
- 污水处理厂课设.doc
- 沥青材料论文综述.doc
- 河北国防知识竞赛.doc
- 沈阳远大博林特电梯MES项目报告.doc
- 机械设计1_9复习.doc
- 沈阳市新区战略环境评价资料.doc
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)