主要根据自学的《操作系统:精髓与设计原理》和《现代操作系统》(指定教材——黑砖)所写

基础知识

这部分主要是计算机组成的内容,万幸用的不深,哪怕去年计组摆了依然能看懂

冯诺依曼结构

计算机由处理器、存储器和输入/输出部件组成,每类部件都有一个或多个模块。这些部件以某种方式互连,以实现计算机执行程序的主要功能。因此,计算机有4个主要的结构化部件:

  • 处理器(Processor):控制计算机的操作,执行数据处理功能。只有一个处理器时,它通常指中央处理器(CPU)。

  • 内存(Main memory):存储数据和程序。此类存储器通常是易失性的,即当计算机关机时, 存储器的内容会丢失。相对于此的是磁盘存储器,当计算机关机时,它的内容不会丢失。内存通常也称为实存储器(real memory)或主存储器(primary memory )

  • 输入/输出模块(I/O modules): 在计算机和外部环境之间移动数据。外部环境由各种外部设 备组成,包括辅助存储器设备(如硬盘)、通信设备和终端。

  • 系统总线(System bus):在处理器、内存和输入/输出模块间提供通信的设施。

一些寄存器

主要需要了解一下图片中的内容

当然还要学习指令的相关知识。包括取指令和执行。

中断

非常重要的内容
主要原因是I/O太慢而CPU太快所导致的。利用中断功能,处理器可以在I/O操作的执行过程中执行其他指令。

从用户程序的角度来看,中断打断了正常执行的序列。中断处理完成后,再恢复执行。

中断处理

这里主要了解这张图片

其中psw中包含了当前运行进程的状态信息.包括内存使用信息、条件码和其他诸如允许中断/禁止中断位、内核/用户模式位等状态信息

多个中断

处理多个中断有两种方法。第一种方法是正在处理一个中断时,禁止再发生中断。禁止中断的 意思是处理器将对任何新的中断请求信号不予理睬。如果在这期间发生了中断,通常中断保持挂起, 当处理器再次允许中断吋,再由处理器检査。
上述方法的缺点是,未考虑相对优先级和时间限制的要求。例如,当來自通信线的输入到达时, 可能需要快速接收,以便为更多的输入让出空间。如果在第二批输入到达时第一批输入还未处理完, 就有可能由于I/O设备的缓冲区装满或溢出而丢失数据。
第二种方法是定义中断优先级。允许髙优先级中断打断低优先级中断的运行。

存储器的层次结构

计组八大思想的内容,也是当时一个小重点,内容应该与OS有相当重合简单理解就是这个金字塔,还有cache那一套东西
在进行虚拟存储器和磁盘卨速缓冲设计时,还须解决类似的设计问题。这些问题可分为以下几类:

  • 置换算法

  • 写策略

  • 高速缓存的级数

  • 高速缓存大小

  • 块大小

  • 映射函数

直接内存存取

执行I/O操作的技术有三种:可编程I/O、中断驱动I/O和直接内存存取(DMA)

  1. 当处理器正在执行程序并遇到一个与I/O相关的指令时,它会通过给相应的I/O模块发命令來 执行这个指令。使用可编程I/O操作(programmed I/0)时,I/0模块执行请求的动作并设置I/O状 态寄存器中相应的位,但它并不会进一步通知处理器,尤其是它并不会中断处理器。因此处理器在 执行I/O指令后,还要定期检査I/O模块的状态,以确定I/O操作是否已经完成。 可编程I/O的问题是,处理器通常必须等待很长的时间,以确定1/0模块是否做好了接收或发 送更多数据的准备。处理器在等待期间必须不断地询问I/O模块的状态,因此会严重降低整个系统 的性能。

  2. 另 种选择是中断驱动I/O (interrupt-driven I/O)。由处理器给I/O模块发送I/O命令.然后处理器继续做其他一些有用的工作。当V0模块准备好与处理器交换数据时,它将打断处理器的执行 并请求服务。处理器和前面一样执行数据传送,然后恢复处理器以前的执行过程, 尽管中断驱动I/O比简单的可编程I/O更有效,但处理器仍然需要主动干预在存储器和I/0模 块之间的数据传送,并且任何数据传送都必须完全通过处理器。

总的来说,上述两种方法有以下问题:

  1. I/O传送速度受限于处理器测试设备和提供服务的速度。

  2. 处理器忙于管理I/O传送的工作,必须执行很多指令以完成I/O传送。

因此有了新的技术:直接内存存取(Direct Memory Access, DMA)
DMA功能可以由系统总线中的一个独立模块完成,也可以并入一个I/O模块中。无论采用何种形式, 该技术的工作方式均是在处理器读或写一块数据时,给DMA模块产生一条命令,发送以下信息:

  • 是否请求一次读或写

  • 所涉I/O设备的地址

  • 开始读或写的存储器单元

  • 需要读或写的字数 之后处理器继续其他工作。

处理器把这个操作委托给DMA模块负责处理。DMA模块直接与存储器 交互,传送整个数据块,每次传送一个字。这个过程不需要处理器参与。传送完成后,DMA模块向 处理器发一个中断信号。因此.只有在开始传送和传送结束时处理器才会参与。

总的来说,就是I/O太慢,而CPU太快导致

多核与多处理器

没什么太可说的,可以看两本书的参考资料和附录。 有一句很有意思的话,操作系统本身不太可能运行在GPU上。

操作系统

概念

操作系统是控制应用程序执行的程序,是应用程序和计算机硬件间的接口。或者说操作系统是一个软件,很特殊的软件。操作系统的实际客户是应用程序。因此,操作系统有以下目标:

  • 方便:操作系统使计算机更易于使用。

  • 有效:操作系统允许以更有效的方式使用计算机系统资源。

  • 扩展能力:在构造操作系统时,应允许在不妨碍服务的前提下,有效地开发、测试和引入新 的系统功能。

操作系统的设计,体现了计组八大思想中的抽象。操作系统为程序员屏蔽了硬件细节,并为程序员使用系统提供了方便 的接口。它可作为中介,使程序员及应用程序更容易地访问与使用这些功能和服务。

典型计算机系统中的三种重要接口:

  • 指令系统体系结构(ISA):定义了计算机遵循的机器语言指令系统,该接口是硬件与软件 的分界线。注意,应用程序和实用程序都可直接访问ISA,这些程序使用指令系统的一个子 集(用户级ISA)。操作系统能使用其他一些操作系统资源的机器语言指令(系统级ISA)。

  • 应用程序二进制接口(ABI):这种接口定义了程序间二进制可移植性的标准。AB1定义T 操作系统的系统调用接口,以及在系统中通过ISA能使用的硬件资源和服务。

  • 应用程序编程接口(API〉: API允许应用程序访问系统的硬件资源和服务,这些服务由用户 级ISA和高级语言库(HLL)调用来提供。使用API能让应用软件更容易重新编译并移植 到具有相同API的其他系统中。

资源管理者

操作系统通常提供了以下几个方面的服务:

  • 程序开发

  • 程序运行

  • I/O设备访问

  • 文件访问控制

  • 系统访问

  • 错误检測和晌应

  • 记账

一台计算机就是一组资源,这些资源用于移动、存储和处理数据,并对这些功能进行控制,而 操作系统负责管理这些资源。操作系统的一部分在内存中,包括内核程序(kernel 或nucleus)和当前正在使用的其他操作系统程序,内核程序包含操作系统中最常使用的功能。

发展历史及问题和解决方案

串行

  • 调度:大多数装置都使用硬拷贝登记表来预订机器时间。通常,用户可以以半小时为单位登 记一段吋间。有时,用户登记了 1小时而仅用45分钟就完成了工作,剩下的时间里计算机 只能闲置,这时就会导致浪费。另一方面,用户因遇到问题而未在分配的时间内完成工作, 则在解决问题前会被强制停止。

  • 准备时间:称为作业的单个程序,可能会向内存中加载编译器和髙级语言程序(源程序), 保存编译好的程序(目标程序),然后加载目标程序和公用函数并进行链接。每个步骤都可 能需要安装或拆卸磁带,或准备卡片组。若在此期间发生了错误,则用户只能全部重新幵始。 因此,在程序运行前的准备工作需要花费大量的时间。

这种操作模式称为串行处理,它反映了用户必须顺序访问计算机的事实。后来,为使串行处理 更加有效,人们开发了各种各样的系统软件工具,包括公用函数库、链接器、加载器、调试器和I/O 驱动程序,它们作为公用软件可为所有用户使用。

简单批处理

简单批处理方案的中心思想是使用一个称为监控程序(monitor) 的软件。通过使用这类操作系 统,用户不再直接访问机器,相反,用户把卡片或磁带中的作业提交给计算机操作员,由操作员把 这些作业按顺序组织成批,并将整个批作业放在输入设备上,供监控程序使用。每个程序完成处理 后返回到监控程序,同时监控程序自动加载下一个程序。

可以看出,监控程序或批处理操作系统,只是一个简单的计算机程序。它依赖于处理器可从 内存的不同部分取指令的能力,交替地获取或释放控制权。此外,还考虑到了其他硬件功能:

  • 内存保护:当用户程序正在运行时,不能改变包含监控程序的内存区域。若试图这样做,处理器硬件将发现错误,并将控制权转移给监控程序,监控程序取消这个作业,输出错误信息, 并加载下一个作业。

  • 定时器:定时器用于防止一个作业独占系统。在每个作业开始时,设置定时器,若定时器时 间到,就会停止用户程序,控制权返回给监控程序。

  • 特权指令:某些机器指令被设计成特权指令,只能由监控程序执行。处理器在运行一个用 户程序时遇到这类指令,会发生错误,并将控制权转移给监控程序。I/0指令属于特权指 令,因此监控程序可以控制所有1/0设备,此外还可避免用户程序意外地读到下一个作业 中的作业控制指令。用户程序希望执行I/O时,须请求监控程序为自己执行这一操作。

  • 中断:早期的计算机模型并没有中断能力。这个特征使得操作系统在让用户程序放弃控制权 或从用户程序获得控制权时,具有更大的灵活性。

由内存保护和特权级引出了运行模式的概念。用户程序以用户模式(usermode)执行,此时有些 内存区域是受保护的,特权指令也不允许执行。监控程序以系统态或内核模式(kernel mode)执行, 此时不仅可以执行特权指令,而且可以访问受保护的内存区域。比如我们熟知的ring0和ring3

多道批处理系统

多道程序设计 (multiprogramming)或多任务处理(multitasking), 它是现代操作系统的主要方案。

多道程序设计操作系统要比单个程序或单道程序设计(uniprogramming)系统复杂。待运行的 多个作业须保留在内存中,因此需要内存管理(memory management)。此外,准备运行多个作业时, 处理器必须决定运行哪个作业,因此需要某种调度算法。

分时系统

较原始,总体思想就是不能让CPU闲着。

操作系统的成就

操作系统幵发中的4个重要理论进展:

  • 进程

  • 信息保护和安全

  • 内存管理

  • 调度和资源管理

具体内容将在后续章节中涉及,《操作系统:精髓与设计原理》中做了基本的介绍。

现代操作系统的特征

在实验操作系统和商用操作系统中,设计人员采用了很多 不同的方法和设计要素,它们大致可分为以下几类:

  • 微内核体系结构

  • 分布式操作系统

  • 多线程

  • 面向对象设计

  • 对称多处理

还有具体的WINDOWS和LINUX还有ANDROID系统的一些介绍,这里不放了(我没看)。