1、计算机硬件基本知识:
从概念上讲,计算机的结构非常简单:首先布置一跟总线,然后将各种硬件设备挂在总线上。所有的这些设备都有一个控制设备,外部设备都由这些控制器与CPU通信。而所有设备之间的通信均需要通过总线。
为了提高计算机的效率,人们又设计出了流水线结构,即仿照工业流水装配线,将计算机的功能部件分为多个梯级,并将计算机的每条指令分拆为同样多个步骤,使每条指令在流水线上流动,到流水线最后一个梯级时指令拆分完毕。流水线上的每一个梯级都可以容纳一个指令并同时运行。
为了进一步的提高计算机的效率,在流水线的基础上,人们又发明了许多流水线、超标量计算和超长指令字等多指令发射机制。这些机制的发明在提升计算机效率的同时,也极大的增加了计算机结构的复杂度,并对操作系统和编译器体出了更高的要求。
2、内核态和用户态:
就像社会中,位于核心的人和位于社会边缘的人。
内核态拥有的资源多的状态,称为特权态。相对来说,用户态就是非特权态,在这种状态下,访问的资源将受到限制。
3、态势的判别:
那么计算机是如何知道正在运转的程序是内核态程序?
显然作出这种判断需要某种标志。这个标志就是1处理器的一个状态位。这个状态位就是cpu状态字里面的一个字位。也就是说,所谓的用户态,内湖台就是处理器上的一种状态,而不是程序的状态。我们通过设置状态字,可以将cpu设置为内核态,用户态或者其他程序的状态。一个程序运行时,cp是什么态,这个程序就运行在什么态。
4、内核态和用户态的实现:
内核态是特权态,而用户态是普通态。特权态下运行的程序可以访问而任何资源,而用户态下的访问则受到限制。那么这种限制是如何实现的?
要限制一个程序对资源的访问,需要对程序执行的每一条指令进行检查才能完成。而这种检查就是地址翻译
5、进程,内存,文件:
进程是操作系统里面的核心概念。他指的是一个运动中的程序。从名字连看,进程表示的就是进展中的程序。一个程序一旦在计算机中运行1起来,它就成为一个进程。操作系统对进程的管理通过进程表来实现。进程表理存放的是关于进程的一切信息。在任何时候,进程所占有的全部资源,包括分配给进程的内存,内核数据结构和软资源形成一个进程核。核快照代表的是进程在某一特定时刻的状态。
进程与进程之间可以相互通信,同步,竞争,并在一定情况下可能形成死锁。这些概念1都将在下一篇讲述。
内存是操作系统里面的另一个核心概念。它是进程的存放场所。如何对内存进行管理,使得数据的读写具有高效率,高安全,高空间利用率和位置透明的特性1是内存管理所要达到的目的。
文件是1操作系统提供的外部存储设备的抽象,它是程序1和数据的最终存放地点。如何让用户的数据存放变的1更加容易,方便,可靠1和安全都是文件系统的问题。
6、系统调用:
就是操作系统(os)提供的应用程序界面(API)用户程序通过调用这些API获得操作系统的服务。
result=read(fd,buffer,nbytes);
这个read函数是C语言提供的库函数,而这个库函数本身是调用的操作系统的read系统调用。
系统调用:按照功能分为6大类:
(1)进程控制类
(2)文件管理类
(3)设备管理类
(4)内存管理类
(5)信息维护类
(6)通信类
系统调用一般不在操作系统原理的课程中论述,而是在操作系统编程或者系统编程中论述。这里我们简单的说一下系统调用的过程:
(1)参数准备阶段
(2)系统调用识别阶段
(3)系统调用执行阶段
在参数准备阶段,需要使用系统服务的程序将系统调用所需要的参数,如上述的fd,buffer,nbytes,压入栈中。然后调用read函数。
7、壳:
操作系统1是如何给用户程序提供服务?用户程序1通过调用操作系统提供的API来获得操作系统的各种服务。使用API需要编程。