- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第1讲 操作系统的基本概念 《操作系统》课程特点 操作系统作为最重要的系统软件,具有复杂程度高、生命周期长、正确性难以保证等特点; Linux:200万行C语言源程序; Windows 2000:2500程序员,3200万行代码; Freg Brooks:IBM OS/360操作系统设计者,图灵奖获得者,《人月神话》作者,“一个泥潭,一群史前动物陷入其中而不能自拔”。无数个软件错误,每个错误修改带来新的错误 《操作系统》课程系统讲授操作系统50年开发历史中积累、提炼、抽象出的最重要的概念和方法 从计算机系统整体角度来考虑问题 来源于实践、应用于实践 《操作系统》学习目标 理解操作系统的基本概念和基本原理 通过实践,掌握操作系统的结构、主要功能和实现思想 了解当前流行的操作系统(Unix, Linux, Windows) 为进一步使用操作系统服务 教材 本讲内容:操作系统的基本概念 系统调用:System Call 进程:Process 系统调用(System Call) 自顶向下的虚拟机观点:操作系统屏蔽底层操作细节,向所有上层应用提供一组系统调用。 系统调用的执行过程 1-3:read过程调用的参数传递 4:调用read库函数 5:存储系统调用的编号到寄存器中 6:中断指令,请求执行操作系统代码 7:根据编号获得系统调用实现代码地址 8:执行系统调用 9:系统调用结束,返回到库函数 10:返回到用户程序 11:过程返回的处理 为什么系统调用不做成库函数形式? 某些原始操作系统就是一个函数库,供应用程序直接调用 IC卡操作系统 问题:绕过操作系统,自己编写代码直接对硬件操作 严重的安全隐患:一个应用程序出现错误,可能导致整个计算机系统崩溃 只能由OS系统对硬件操作,不允许应用程序直接操作硬件 对硬件操作的指令称为特权指令,其它指令成为非特权指令 CPU分核心态和用户态两种状态:处于核心态CPU能执行所有指令;处于用户态的CPU只能执行非特权指令; CPU有PSW(程序状态字)寄存器,记录当前CPU模式 CPU模式转换 核心态到用户态:特权指令CPU模式指令,设置PSW寄存器 用户态到核心态:非特权指令INT中断指令 INT指令和CPU模式转换 计算机启动后CPU处于核心态,执行OS系统的代码; OS设置CPU模式为用户态,执行应用程序 应用程序执行INT中断指令,请求执行OS的系统调用 CPU执行INT指令 OS进行安全性检查,判断是否执行系统调用 OS根据编号和系统调用向量表,得到系统调用实现代码的地址 OS执行系统调用代码 OS恢复应用程序的运行状态,并转到2; 为什么传递系统调用的编号 安全原因:由应用程序指定要执行OS代码的地址,可能带来安全隐患 执行OS第1000行代码、执行OS第2000行代码; 兼容性:操作系统不断发展,实现代码会改变;通过向量表将应用程序和OS实现代码进行解耦合,实现操作系统的向下兼容 实验:综合使用fork和execve系统调用 父进程fork系统调用创建子进程,等待子进程执行结束 子进程执行execve系统调用,执行指定的程序 int main() { int self_pid, pid, status; pid = fork(); //创建一个与自己完全相同的子进程 if(pid != 0) { //此处是父进程执行的代码 waitpid(-1, status, 0); //等待子进程执行结束 return 0; }else { //此处是子进程执行的代码 …… execve(newargv[0], newargv, newenviron); } } Linux的命令行操作界面:Shell Shell是Linux提供的命令解释器,不是操作系统的一部分 用户登录后,OS启动一个shell进程 显示提示符:$,提示用户输入命令 接收用户输入的命令,回车表示输入结束; Shell进程调用fork,创建一个子进程; 子进程调用execve,执行输入的命令; 父进程等待子进程结束,然后转到步骤1; C语言编译器 结束进程 查看系统中的进程信息 挂接文件系统 显示文件内容 删除文件 删除目录 gcc kill ps mount cat rm rmdir 创建目录 mkdir 移动文件、对文件改名 mv 拷贝文件 cp 显示当前目录位置 pwd 改变目录位置 cd 列出当前目录下的文件名 ls 帮助命令,例如: man ls man 实验:Shell的实现 Linux系统的启动 1:引导区程序执行,加载OS到内存; 2:执行OS启动代码,对硬件进行初始化设置 3:构造idle进程,PID为0,所有进程的祖先,CPU空闲时运行此进程 4:进程0调用fork,创建Init
您可能关注的文档
最近下载
- 北师大版数学六年级上册《2.2分数混合运算(二)》PPT课件.pptx VIP
- 车载DDM-MIMO雷达波形设计及抗干扰研究.pdf
- 2024年供电营业规则复习题库含答案解析.docx
- 医院用电分析报告.pptx VIP
- 2024年餐饮外卖小程序定制开发与推广合同协议书3篇.docx VIP
- 北京市2025年小升初分班测试数学试题(含解析).docx VIP
- 21CJ101-1 装配式电梯层门门套-高力装配式电梯层门防火门套.pdf VIP
- IATF16949--过程审核检查表-(含审核记录)-.doc VIP
- 译林版六年级上册英语Unit1_单元测试卷及答案.pdf VIP
- 餐饮小程序合同范本.docx VIP
文档评论(0)