冯诺依曼机(硬件)组成:
Note:《计算机组成原理》这门课就是由冯诺依曼体系机的组成划分,依次介绍说明了计算机。
现代操作系统组成:
现代计算机系统的组成
{
硬件设备
{
处理器
主存
磁盘
I
O
设备
软件
{
系统软件
{
操作系统
语言处理程序
通用程序
服务支持软件
应用软件
现代计算机系统的组成\begin{cases}硬件设备\begin{cases}处理器\\主存\\磁盘\\IO设备\end{cases}\\软件\begin{cases}系统软件\begin{cases}操作系统\\语言处理程序\\通用程序\\服务支持软件\end{cases}\\应用软件\end{cases}\end{cases}
现代计算机系统的组成⎩
⎨
⎧硬件设备⎩
⎨
⎧处理器主存磁盘IO设备软件⎩
⎨
⎧系统软件⎩
⎨
⎧操作系统语言处理程序通用程序服务支持软件应用软件
计算机有两种运行模式:内核态(管态、核心态)和用户态。
操作系统运行在内核态
具有对所有硬件的完全访问权,执行任何机器能够执行的任何指令
其他软件运行在用户态
用户态只使用了机器指令中的一个子集,特别的,影响机器控制或者IO的指令,在用户态中是禁止的
用户接口程序(shell或者GUI)处于用太太的最低层次,允许用户运行其他程序。
操作系统是运行在内核态的软件。有两部分的任务:
操作系统的任务是创建好的抽象,并实现和管理它所创建的抽象对象
example:需要对IO操作深入了解 -> 驱动程序 -> 文件系统(不用在乎细节)
注意区别两个接口:
自顶向下的观点:操作系统是向用户程序提供基本抽象的概念
自底向下的观点:操作系统用来管理复杂系统的各个部分。——有序处理竞争的程序之间对处理器、存储器以及其他的IO接口设备的分配。
多道程序之间存在共享:
操作系统的主要任务是记录哪个程序在使用什么资源,对资源进行分配,评估使用代价,为不同的程序和用户调解相互冲突的资源请求。
在时间上复用
不同的程序轮流使用它。
在空间上复用
每个客户都得到资源的一部分,example:若干程序之间分割内存
操作系统的发展是重叠的。
没有程序设计语言,没有汇编语言,没有操作系统
计算机发展的两种方向:
将内存分区,每一部分存放不同的作业。
当一个作业等待IO完成时,另一个作业可以使用CPU。当作业足够多时,CPU的使用率可以接近100%。
SPOOLing技术是一种输入输出技术。
第三代计算机的另一个特点是,卡片被拿到机房后能够很快的将卡片读入磁盘。于是,任何一个时刻,当一个作业结束时,操作系统就能将一个新作业从磁盘读出,装入内存的区域运行。这种技术叫做同时的外部机器联机操作(Simultaneous Perpheral Operation On Line, SPOOLing),该技术也用于输出。
有了SPOOLing技术后,就不再需要IBM 1401机了。
出现背景:第三代计算机是批处理系统的一个变体,适用于大型科学计算和繁忙的商务数据处理,本质仍是批处理系统。程序员怀念第一代处理的方式,因为可以独占计算机,不断debug。现在从一个作业提交到取回,往往花费较长时间,一个逗号的误用可能造成编译失败,浪费程序员较多时间。
多道程序的变体,每个用户都有一个联机终端。系统轮流为各个用户服务。用户的指令较为简短,不会很耗时。
着眼于制造满足波士顿地区所有用户计算需求的一台机器。
计算服务以“云计算”的形式回归。
IEEE定义了POSIX规范,大多数的UNIX版本支持它。POSIX定义了一个凡是UNIX必须支持的小型系统调用接口。
并且提出了MINIX

CPU基本周期:取指->译码->执行
每个CPU有专属的指令集,故x86不能执行ARM程序;ARM不能执行x86程序。
寄存器的出现:访存时间较长,使用寄存器暂存数据
$$
寄存器的分类\begin{cases}
程序计数器:保存下一条指令地址\
堆栈指针:指向堆栈的顶端\
程序状态字:包含条件码位等\
\end{cases}
$$
OS必须知道所有的寄存器:保存现场
提高性能:流水线的出现

关于内核态和用户态:
PSW中有一个二进制位控制这两个模式
当在内核态运行时,CPU可以执行指令集中的每一条指令,使用硬件的每一种功能
用户态时,仅允许执行整个指令集的一个子集和访问所有功能的一个子集
为了从操作系统中获取服务,用户程序必须使用系统调用以陷入内核并调用操作系统
TRAP指令把用户态切换成内核态,并启用操作系统。
多线程和超线程的概念。
多线程:允许CPU保持两个不同的线程状态,然后再纳秒级别的时间尺度内来回切换。
GPU:由成千上万的微核组成的处理器,擅长大量并行简单计算,比如在图像应用中渲染多边形
理想存储器:
现有技术无法满足。于是存储器系统采用分层结构:

每一层:
寄存器使用和CPU一样的材料制成,非常快,没有时延。
高速缓存被分割成高速缓存行,高速缓存甚至有两级或者三级,每一级比前一级容量大且慢。
L1缓存:CPU中,存储解码的指令
第二个L1缓存:频繁使用的数据字
L2缓存:若干兆字节内存字
RAM:随机访问存储器
ROM:只读存储器;用于启动计算机的引导模块放在ROM中
成本低,随机访问数据时间慢了3个数量级。低速的原因是磁盘是一种机械装置:

磁道,柱面的概念
虚拟内存机制:使得运行大于物理内存的程序称为可能,其方法是将程序放在磁盘上,而将主存作为一种缓存,用来保存使用最为频繁的部分。这种机制需要快速映像内存地址,内存映像由存储器管理单元(MMU)完成。
一个程序切换到另一个程序,有时称为上下文切换,有必要对来自缓存的所有修改写回磁盘。
I/O设备包括两个部分:
通过网络同时为多个若干个用户服务,允许用户共享硬件和软件资源。
常见问题
Q:为什么要系统调用?
当在内核态运行时,CPU可以执行指令集中的每一条指令,使用硬件的每一种功能
用户态时,仅允许执行整个指令集的一个子集和访问所有功能的一个子集
为了从操作系统中获取服务,用户程序必须使用系统调用以陷入内核并调用操作系统
TRAP指令把用户态切换成内核态,并启用操作系统。
Q:系统调用的过程?
参数传递:由于用户空间和内核空间使用不同的栈空间,因此系统调用的参数需要使用寄存器进行传递。
执行陷入指令(read,fork等等),引发一个内中断,使 CPU 进入内核态
在内核态,执行相应的请求,内核程序处理系统调用
返回应用程序