首先了解一个hello程序执行的整个过程:
- 编译成可执行文件
- 用户告诉shell执行该可执行程序
- 创建一个新的子进程:创建进程控制块
- 装入hello程序:①操作系统找到该程序,检查其类型;②检查程序首部,找出代码段和数据段的地址;③可执行文件映射到进程结构;④设置CPU上下文环境,并设置程序开始处;⑤调度hello程序。
- 执行程序的第一条指令:①执行失败,缺页中断发生;②分配一页内存,并将代码从磁盘读入,继续执行;③更多的缺页中断,读入更多的页面。
- printf:①操作系统检查字符串的位置是否正确;②操作系统找到字符串被送往的设备;③设备是一个伪终端,由一个进程控制;④操作系统将字符串送给该进程;⑤该进程告诉窗口他要显示字符串;⑥窗口系统确定这是一个合法操作,然后将字符串转换成像素;⑦窗口系统将像素写入存储映像区。
- 视频硬件将像素表示转换成一组模拟信号以控制显示器
- 显示器发射电子束;你在屏幕上看到hello world!
我们曾在计组也讨论过hello程序的执行,而在当时我们更侧重于关注hello程序在机器中是怎么运转的,从哪里到了哪里进行了什么样的转变,变成了什么样子,所以我们当时主要讨论的是他怎么在机器中流动。
而在这里,我们不止关注他从哪到哪,我们还要管理他怎么使用相应的资源,我们要为他创建进程,为他分配空间,控制它怎么使用设备,所以我们可以显而易见的把我们学习操作系统这个过程就当作是找到一个帮我们更好的使用硬件的方法。操作系统就像是一个管家,为我们管理CPU、管理内存、管理设备、管理文件、管理磁盘等等,我们可以通过他完成我们交给他的任务,而不用自己去管理硬件,不用自己去调度什么时候去执行什么任务,全靠os为我们进行调度,所以我们在操作系统完成的各种任务肯定也是基于此,我们做的每一件事都是为了管理资源,或者说更好的分配资源。
所以由上可得,操作系统的工作:
- 程序的执行:负责启动每个程序,以及结束程序的工作;
- 完成与硬件有关的工作;
- 完成与应用无关的工作:易于使用,基本服务,统一性;
- 计算机系统的效率和安全问题。
什么是操作系统
操作系统是一组管理计算机硬件资源的软件集合,它向计算机程序提供共性的服务:
- 提供一个计算机用户与计算机硬件系统之间的接口,使计算机更易于使用。(使用者)
- 有效地控制和管理计算机系统中的各种硬件和软件资源,使之得到更有效的利用。(资源管理者)
- 合理地组织计算机系统的工作流程,以改善系统性能(如响应时间、系统吞吐量)
所以我们再去看为什么os处于计算机中的那个层次就很好理解了。
所以我们去使用计算机的时候,os将复杂的硬件屏蔽了给予我们更容易理解的概念去使用计算机。而从os往上看就需要去想,怎么为多个程序服务,因为如果单个程序就完全无需os的管理直接运行即可,我们怎么将有限的资源分配给多个进程,这是我们在os设计中要认真学习的。
写到这不想写了,可能后续会补补PPT出现过的概念把