定义操作系统
1.操作系统(operating system):是管理计算机硬件的一个程序,它同时作为用户和硬件的中间层,为应用程序提供了基础。
2.计算机系统可大致划分为四个部件:硬件、操作系统、应用程序(application programs)、用户 。
3.硬件包括:中央处理器(cpu)、存储器(memory)和输入输出(I/O)设备。操作系统控制并协调多个用户的多道程序。
4.从计算机的视角来说,操作系统的的工作(作用):资源管理、程序控制。
5.操作系统的功能:进程管理、内存管理、存储管理、I/O、保护/安全。
进程:创建、删除、挂起、重启进程;提供进程的同步、通信、死锁机制。
内存:记录内哪部分正在使用、被谁使用;决定哪些进程可进入内存;分配和释放内存空间。
存储:创建/删除文件,大容量外存(算法)
操作系统组织
1.计算机用于启动的初始化程序被称作引导程序,它被存储在只读存储器(ROM)中,也就是常说的固件。它初始化系统中的所有部分。
2.事件的发生通常通过硬件或软件的中断(interrupt)来触发。
硬件可能在任何时候通过向 CPU 发送一个信号来触发中断,该信号通常经由总线传递。
软件可能通过执行名为系统调用的特殊指令来触发中断。
3.计算机程序必须在主/内存(RAM)中执行。主内存是 CPU 能直接访问的唯一的大容量存储,它通常由被称作动态随机访问存储器(DRAM)的半导体器件实现。
4.主存是易失存储,当电源关闭或其它问题出现时,其内容会丢失。因此多数计算机系统提供了二级存储作为主存的扩展,二级存储设备通常是磁盘。
5.存储设备层次:寄存器-高速缓存(cache)- 主/内存 - 电子磁盘 - 磁盘 - 光盘 - 磁带
计算机系统体系结构
1.多处理器系统:也被称作并行系统或紧耦合系统有以下三个主要优点:
1)增加了吞吐量
2)性价比、资源利用率高:相比多个单处理器系统,因为多处理器系统可以共享外围设备、大容量存储器和电源,因此花费更少。
3)增加可靠性:单个处理器出现故障只会减缓系统而不会导致系统终止。根据存活硬件均衡提供服务的能力被称作故障弱化(适度退化)。有些系统具有容错能力,当任何一个单件出错时,系统能够继续运行。
2.多处理器系统主要有两种类型
1)非对称多处理器:每个处理器被赋予一定特殊作业,一个主处理器用于控制系统,其它的处理器要么从主处理器获取信息,要么执行预定义的作业。
2)对称多处理器:每个处理器均可执行操作系统中的所有作业,处理器之间不存在主从关系。
3.多道程序:通过组织作业(代码或数据)增加了CPU 的利用率,让CPU无论何时均有一个作业在执行。(单任务有IO就会CPU空闲)
4.分时/多工:分时是多道程序在逻辑上的扩展,CPU在多个程序间跳转执行,因为跳转速度很快,对于用户而言就可以与各个同时运行的程序交互。分时需要交互式的计算机系统,用户和系统之间应该可以直接交流,且响应时间应当足够短。
5.一个被装入主存并执行的程序被称作进程。分时和多道程序需要内存中同时保持多个作业,因为内存通常不足以同时容纳这些作业,所以它们在执行前被存放在硬盘的作业池/缓冲池(job pool)中,它容纳了所有等待分配内存的进程。
6.如果多个作业因为主存空间不足而无法同时装载,那么系统要在作业间进行 作业调度。
7.在分时系统中,操作系统必须保证合理的响应时间,这一点有时通过进程在主存和硬盘之间的 交换完成。一个更普遍的方式是 虚拟内存,它使用户可以运行远大于物理内存的程序。
操作系统运行模式
1.为了保证操作系统程序正确执行,我们需要区分系统程序段和用户程序段。因此设置了两个独立的操作模式:用户模式和内核模式。计算机硬件中需要加入一个模式位用于说明当前的模式为内核(0)还是用户(1)。
1)在系统启动时,硬件系统处于内核模式。之后操作系统被加载并且在用户模式中执行用户应用。
2)硬件只允许特权指令在内核模式中运行。一旦系统调用被执行,它将被硬件视为一个软中断,中断向量将被传递给系统内部的一个服务程序,并且模式位切换至内核模式。
进程管理
1.一个单线程的进程有一个程序计数器指定下一条要执行的指令,多线程的进程有多个程序计数器。
2.一个进程要完成任务需要如下资源:CPU,存储器,文件和 I/O 设备。
操作系统结构
1.操作系统应提供如下服务
1)用户接口,包括:
a)命令行接口(CLI)
b)批处理接口(batch interface)
c)图形化用户接口(GUI)--提供了一个桌面
2)程序执行 :操作系统要能够将程序加载到主存并执行程序
3)输入/输出操作(I/O):运行中的程序可能需要涉及到文件或 I/O 设备的读写操作
4)文件系统控制
5)通信:通信可能通过共享内存或消息传递实现
6)错误检测:操作系统应当能始终检测到可能的错误
7)资源分配:一些资源需要特殊的分配行为(如 CPU、主存和文件存储),有的还需要请求和释放代码(如 I/O 设备)
8)统计:操作系统需要对每个用户使用了多少不同的计算机资源做统计
9)安全防护:保证所有对系统资源的请求都得以控制
用户接口和系统调用
1.系统调用为系统服务提供了一个接口。通过这个接口,用户可以访问内核空间。多数程序开发者并不接触这一细节等级的代码,他们通常使用应用程序接口(API)来编写程序。API 为应用程序开发者提供了一组函数,使用 API 的背后实际涉及了系统调用。
2.api 就是应用程序接口,是一些预定义的函数。跟内核没有必然的联系。提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
3.区别:api是函数的定义,规定了这个函数的功能,跟内核无直接关系。而系统调用是通过中断向内核发请求,实现内核提供的某些服务。
4.联系:一个api可能会需要一个或多个系统调用来完成特定功能。通俗点说就是如果这个api需要跟内核打交道就需要系统调用,否则不需要。
1)程序员调用的是API(API函数),然后通过与系统调用共同完成函数的功能。因此,API是一个提供给应用程序的接口,一组函数,是与程序员进行直接交互的。
2)系统调用则不与程序员进行交互的,它根据API函数,通过一个软中断机制向内核提交请求,以获取内核服务的接口。
3)并不是所有的API函数都一一对应一个系统调用,有时,一个API函数会需要几个系统调用来共同完成函数的功能,甚至还有一些API函数不需要调用相应的系统调用(因此它所完成的不是内核提供的服务)
4.系统调用和中断的异同点:
1)二者均有索引(系统调用编号-系统调用表、中断向量表),二者的执行均需切换到内核模式
2)二者触发条件不同:系统调用是主动请求(会被硬件视为软中断),中断是外部触发
5.中断和陷阱的不同点:
1)二者起点不同:陷阱是正在执行的程序主动发起的,中断是外部错误或动作产生
2)二者处理方式不同:程序的陷阱(异常)在响应后将停止执行,而程序在中断时保存断点,中断处理结束后从断点恢复执行
6.向操作系统传递参数有三种方法:通过寄存器传递、内存的块/表、压入/弹出堆栈。
7.系统调用可被大致分为五类:进程控制、文件管理、设备管理、信息维护和通信。
8.两种通信模型:
1)消息传递模型:通信进程通过彼此之间交换消息传递信息,直接/间接通过一个共同的邮箱。通信实体可能是同一主机的不同进程,也可能是通过网络相连的另一主机的进程。进程之间通过主机名和进程名作为标识符区分。
2)共享内存模型:进程使用系统调用来获得其它进程所拥有内存区域的访问权。要使用共享内存模型,需要两/多个进程都同意取消这一限制。数据的形式和位置由进程协商决定,进程必须保证它们不会同时向同一地方写入。
3)区别:消息传递对交换少量数据更有效,对于计算机之间的通信也比共享内存更容易实现;共享内存允许最大速度通信(本地可以内存速度),并且比较方便,但需要保护和同步。
操作系统结构
1.简单结构:DOS和UNIX。利用最小的空间提供最多的功能,没有被划分为模块。应用程序能够访问最底层的、基本的设备驱动,因此易受恶意程序的伤害。
2.分层方法:采用自顶向下方法,将总的功能和特征划分为模块。模块化的其中方法是分层方法:将操作系统分为若干层(级),最底层(层0)为硬件,最高层(层N)为用户接口,分层结构类似一个同心圆。分层法最大的优点在于构造和调试的简单化(每层只能利用较低层的功能和服务、每层为高层隐藏了一定数据结构、操作和硬件存在),主要困难在于对层的详细定义和相比其他方法的低效 。
3.微内核:将操作系统中所有非基本部分从内核中移走,将它们实现为系统程序或用户程序,从而得到更小的内核。微内核通常包括最小的进程、内存管理、通信功能。
1)微内核的主要功能:使客户程序和各种服务之间通信,客户程序和服务之间不会直接交互,而是通过微内核的消息传递。
2)因为新服务不需修改内核,因此便于扩充操作系统;因为大多数服务作为用户而不是内核进程运行,因此提供了更好的安全性和可靠性。
3)因为使用消息传递跨越了内核和用户态,系统功能总开销增加,因此系统性能下降。
4.模块:7个可加载内核模块,一个核心内核。动态加载模块。内核可以提供核心服务,也可动态实现特定功能。该方法和微内核方法类似,核心模块只有核心功能以及其他模块加载、通信的相关信息,但模块方法中,模块之间不需要调用消息传递来通信。
操作系统生成:配置生成系统的过程称为系统生成。需要考虑的信息有:使用什么CPU、多少可用内存、哪些可用设备、需要什么操作系统选项和参数值。