文章目录
- 第一章 引论
- 一、什么是操作系统?
- 1.作为扩展机器的操作系统
- 2.作为资源管理者的操作系统
- 3 计算机硬件简介(计算机组成原理)
- 1)处理器
- 2)存储器
- a)CPU的寄存器
- b)高速缓存
- c)主存,通常称为RAM,所有不能在高速缓存总得到满足的访问请求都会转往主存
- d)其它非易失性随机访问存储器
- e)CMOS:很多计算机利用CMOS存储器保持当前时间和日期
- 3)磁盘(硬盘)
- 4)I/O设备
- 5)总线
- 即插即用的I/O系统
- 主要的总线是PCIe(Peripheral Component Interconnect Express)。
- USB(Universal Serial Bus)
- SCSI(Small Computer System Interface)总线
- 6)启动计算机
- 4 操作系统大观园
第一章 引论
1 用户与之交互的程序,基于文本的通常称之为shell
2.基于图标的则称之为图形用户界面GUI
3.
1)软件中最基础的部门是操作系统,它运行在内核态,在这个模式中,操作系统具有对所有硬件的完全访问权,可以执行继器能够运行的任何指令。
2)那些会影响机器的控制或者可进行I/O操作的指令,在用户态中的程序里是禁止的。
3)操作系统运行在裸机之上,为所有其它软件提供基础的运行环境,eg:若用户不喜欢某个特定的电子邮件阅读器,他可以自由选择其它的,但是不能自行写一个属于操作系统一部分的时钟中断处理程序,因为这个程序是由硬件保护的,防止用户试图对其进行修改
4)有时候在嵌入式系统中,该系统是没有内核态
一、什么是操作系统?
操作系统就是一种运行在内核态的软件
1.作为扩展机器的操作系统
通过硬盘驱动(disk driver)的软件来和硬件交互,这类软件提供了读写硬盘块的接口,而不用深入细节,操作系统包含很多用于控制输入/输出设备的驱动。
就算在这个层面,对于大多数应用而言还是太底层了,因此,所有的操作系统都提供使用硬件的又一层抽象:文件。
操作系统的任务是创建好的抽象,并实现和管理它所创建的抽象对象。
操作系统的实际客户是应用程序。
2.作为资源管理者的操作系统
操作系统的任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其它I/O接口设备的分配。
现在操作系统允许同时在内存中运行多道程序。操作系统的主要任务是记录哪个程序在使用什么资源,对资源请求进行分配,评估使用代价,并且为不同的程序和用户调解互相冲突的资源请求。
资源管理包括两种方式实现**多路复用(共享)**资源:时间上的复用和空间上的复用
1)时间上的复用(time multiplexing)
当一种资源在时间上复用时,不同的程序或用户轮流使用它。
eg:
2)空间复用
通常在若干运行程序之间分割内存,这样每一个运行程序都可同时入驻内存(eg:轮流使用CPU)。
假设有足够的内存可以存访多个程序,那么在内存中同时存放若干个程序的效率,比把所有内存都分给一个程序的效率要高得多。
2.操作系统的历史
3 计算机硬件简介(计算机组成原理)
1)处理器
CPU的工作:从内存中取出指令,并执行。
在每个CPU基本周期中,首先从内存中取出指令,解码以确定其类型和操作数,接着执行之,然后取指令、解码并执行下一条指令。
每个CPU都有一套可执行的专门指令集,所以,x86处理器不能执行arm程序,而arm处理器也不能执行x86程序。该指令集会将一个字从内存调入寄存器,以及将一个字从寄存器存入内存。
由于用来访问内存以得到指令或数据的时间要比执行指令花费的时间长很多,因此,所有的CPU内部都有一些用来保存关键变量和临时数据的通用寄存器。
除了通用寄存器,还有专用寄存器。eg:程序计数器,堆栈指针,程序状态字寄存器(PSW)
a)程序计数器
它保存了将要取出的下一条指令的内存地址。
b)堆栈指针
它指向内存中当前栈的顶端,一个过程的栈帧中保存了有关的输入参数,局部变量以及那些保存在寄存器中的临时变量。
c)程序状态字(Program Status Word,PSW)寄存器。
这个寄存器包含了条件码位(由比较指令设置),CPU优先级,模式(用户态或内核态),以及各种其它控制位。在系统调用和I/O中,PSW的作用很重要。
CPU架构
a)流水线的CPU
一个CPU可以单独地取值单元、解码单元和执行单元,于是当它执行指令n时,还可以对指令n+1解码,并且读取指令n+2。这样的机制称为流水线(pipeline)。
优缺点:由于流水线一旦一条指令被取进流水线中,它就必须被执行完毕。流水线使得编译器和操作系统的编写者很头疼。
b)比流水线更先进的设计是超标量CPU
这种设计中,有多个执行单元,只要有一个执行单元空闲,就检查保持缓冲区中是否还有可处理的指令。若有,就把指令从缓冲区中移出并执行之。
多数的CPU都有两种模式,内核态和用户态。
在台式机和服务器上,操作系统在内核态下运行,可以访问整个硬件,而在大所属嵌入式系统中,一部分操作系统运行在内核态,其余的部门则运行在用户态。
一般,在用户态中有关I/O和内存保护的所有指令是禁止的,将PSW中的模式位设置成内核态也是禁止的。
为了从操作系统中获得服务,用户程序必须使用系统调用(system call)以陷入内核并调用操作系统。TRAP指令把用户态切换成内核态,并启用操作系统,当有关工作完成后,在系统调用后面的指令把控制权返回给用户程序。
多线程和多核芯片
多线程允许CPU保持两个不同的线程状态,然后在纳秒级的时间尺度内来回切换。
线程是一种轻量级进程,即一个运行中的程序。
eg:若某个进程需要从内存中读出一个字(需要花费多个时钟周期),多线程CPU则可以切换至另一个线程。多线程不提供真正的并行处理。在一个时刻只有一个进程在运行,但是线程的切换时间则减少到纳秒的数量级。
多线程对操作系统而言,因为每个线程在操作系统来看就像是单个CPU。
除了多线程,还出现了包含2个或4个完整处理器或内核的CPU芯片。
下图的多核芯片上,装有4个小芯片,每个小芯片都是一个独立的CPU。
eg
左边的图是intel多核芯片,一个L2缓存被所有的核共享;
右边的图是AMD多核芯片,每个核有自己的L2缓存,但是在保持L2缓存一致性上存在困难
GPU(Graphics Processing Unit)
GPU指的是,由成千上万个微核组成的处理器,他们擅长处理大量并行的简单计算。
2)存储器
理想情形下,存储器应该极为迅速(快于执行一条指令,这样CPU不会收到存储器的限制)。
存储系统采用一种分层次的结构,顶层的存储器速度快,容量小,与底层的存储器相比,每位成本较高,其差别往往是十亿数量级。
a)CPU的寄存器
材料与CPU相同,速度和CPU一样快;
存储容量:32位CPU中为3232bit,64位CPU为6464bit,存储容量都小于1KB;
b)高速缓存
多数由硬件控制;
主存被分割成高速缓存行cache line:大小为64Byte,地址0-63对应告诉缓存行0,地址64-127对应告诉缓存行1;
高速缓存命中:最常用的高速缓存行放置在CPU内部或者非常接近CPU的高速缓存中,当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中,若是,缓存满足要求,就不需要通过总线把访问请求发送到主存。
现代的CPU设计了两个缓存,L1缓存总在CPU中,通常用来将已解码的指令调入CPU的执行引擎,大小为16KB;L2缓存,对于那些频繁使用的数据字而言,二级缓存是用来存访近来使用过的若干兆字节的内存字。
L1和L2缓存之间的差别在于:L1缓存的访问,不存在任何延时,L2缓存的访问,则会延时1or2个时钟周期。
c)主存,通常称为RAM,所有不能在高速缓存总得到满足的访问请求都会转往主存
d)其它非易失性随机访问存储器
ROM:有些计算机中,用于启动计算机的引导加载模块
EEPROM,闪存flash:可以擦除和重写
e)CMOS:很多计算机利用CMOS存储器保持当前时间和日期
3)磁盘(硬盘)
磁盘唯一的问题是随机访问数据的时间大约慢了三个数量级。低速的原因是:因为磁盘是一种机械装置。
说明:
在任意一个给定臂的位置,每个磁头可以读取一段环形区域,称为磁道track;
把一个给定臂的位置上的所有磁道合并起来,组成了一个柱面cylinder;
eg:一些不是磁盘的磁盘,固态硬盘SSD
4)I/O设备
I/O设备一般包括两个部分:设备控制器和设备本身。
控制器是插在电路板上的一块芯片或一组芯片,这块电路板物理地控制设备,并从操作系统中接收命令。在控制器中安装一个小的嵌入式计算机,该嵌入式计算机运行为执行这些工作而专门编号的程序。
I/O设备的另一个部分是实际设备的自身,标准化后任何一个SATA磁盘控制器就可以适配任一种SATA磁盘。
注:ATA代表高级技术附件(AT Attachment),而SATA表示串行高级技术附件(Serial ATA),AT代表:计算机高级技术(Advanced Technology)。
现在的SATA是很多计算机的标准硬盘接口,由于实际的设备接口隐藏在控制器中,so,操作系统看到的是对控制器的接口,这个接口和设备接口有很大的差别。
设备驱动程序device driver的定义:每类设备控制器都是不同的,所以,需要不同的软件进行控制。专门与控制器对话,发出命令并接收响应的软件,称为设备驱动程序。
为了能够使用设备驱动程序,必须把设备驱动程序装入操作系统中,这样它才可以在内核态运行(注:很少一部分系统,eg:MINIX 3,在用户态运行全部驱动程序)。
将设备驱动装入操作系统的三个途径:
设备寄存器的I/O端口的地址空间怎么进行处理的?
一类计算机是:
还有一类计算机是:
区别在于:前一种不需要专门的I/O指令,但是却占用了一些地址空间;
后者不占用地址空间,但是需要专门的指令
两者运用的都很广泛!
实现输入和输出的三种方式:
第一种方式是:轮询
第二种方式是:中断
第二种方式需要中断,中断的具体过程如下:
第三种方式:DMA
5)总线
即插即用的I/O系统
主要的总线是PCIe(Peripheral Component Interconnect Express)。
大多数总线都是并行且共享的。
共享总线架构(shared bus architecture):表示多个设备使用一些相同的导线传输数据,so,当多个设备同时需要发送数据的时候,需要仲裁器决定哪个设备可以使用总线。
传统PCI使用**并行总线架构(parallel bus architecture)**表示通过多条导线发送数据的每一个字,eg:在传统的PCI总线上,一个32位数据通过32条并行的导线发送。
PCIe使用串行总线架构(serial bus architecture):通过一条被称为数据通路的链路传递集合了所有位的一条消息,像网络包。
USB(Universal Serial Bus)
SCSI(Small Computer System Interface)总线
6)启动计算机
基本输入输出系统BIOS的程序
4 操作系统大观园
1)大型操作系统
2)服务器操作系统
3)多处理器操作系统
4)PC操作系统
5)掌上计算机操作系统
谷歌的android和苹果的iOS
6)嵌入式操作系统
所有软件保存在ROM中
7)传感器节点操作系统
8)实时操作系统:硬实时和软实时
9)智能卡操作系统:JVM虚拟机的应用