概念:
操作系统是指控制和管理整个计算机系统的硬件和软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序结合。操作系统是计算机系统中最基本的系统软件。
操作系统的基本特征包括并发、共享、虚拟和异步。
并发和共享是操作系统两个最基本的特征,两者互为存在的条件:
并发 关注的是宏观上的一段时间内可能是同时运行多个的,但是实际在微观上来看一个时刻只能运行一个。
并行 关注的是微观上的时刻,也就是说能在同一时刻完成两种火两种以上的操作。
计算机的并行性是指
所具有同时(微观)进行运算或操作的特征。
并发和异步
并发更强调了多个事件在同一段事件内进行
异步则强调了程序并发执行过程中,多道程序之间交替执行的围观本质,因为程序的执行并不是一贯到底的,而是走走停停的(考虑中断技术)。
是指两个或多个事件在同一时间间隔内发生。
注意:同一时间间隔(并发)和同一时刻(并行)的区别
资源共享即共享,是指系统中的资源可供内存中的多个并发执行的进程共同使用。共享分为两种资源共享方式:
互斥共享方式
系统中的某些资源,如打印机,虽然可供多个进程使用,但是为使得打印或记录的结果不致造成混乱,应规定在一段时间内只允许一个进程访问资源。
同时访问共享
系统中还有一些资源,这些资源允许在一段时间内多个进程“同时”访问(这里说的同时是指宏观上的,在微观上可能是交替地对该资源进行访问即“分时共享”)。例如若干个用户可以同时访问一个文件。
虚拟是把一个物理上的实体变为若干逻辑上的对应物。用于实现虚拟的技术,称为虚拟技术。操作系统中利用了多种虚拟技术来实现虚拟处理器、虚拟内存和虚拟外部设备等。
虚拟处理器技术是通过多道程序设计技术,采用让多道程序并发执行的方法,来分时使用一个处理器。
操作系统的虚拟技术可归纳为:
多道程序环境允许多个程序并发执行,但是由于资源有限,进程并不是一贯到底的,而是走走停停的,它以不可预知的速度向前推进,这就是进程的并发性。
方便性 操作系统使计算机系统更易于使用
有效性 操作系统使资源的利用率更高,系统的吞吐量更大
可扩充性 操作系统能很方便地增加新的功能和模块,并能修改老的功能和模块
开放性 操作系统的开发应该遵守事件标准规范,特别是OSI
可以分别3个角度来看操作系统的功能:
处理机管理
多道程序环境下,处理机的分配和运行都以进程为基本单位,因而对处理机的管理可归结为对进程的管理。
进程管理的主要功能:进程控制、进程同步、死锁处理、处理机调度。
存储器管理
存储器的管理是为了给多道程序的运行提供良好的环境,主要包括:内存分配与回收、地址映射、内存保护与共享和内存扩充等功能
文件管理
文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护
设备管理
设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括:缓冲管理、设备分配、设备处理和虚拟设备等功能
操作系统提供的接口可分为两类:
命令接口,用户利用这些操作来组织和控制作业的执行
按照作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令接口
程序接口(也称广义指令),编程人员可以使用它们来请求操作系统服务
没有任何软件支持的计算机称为裸机,它仅构成计算机系统的物质基础。裸机在最里层,其外层是操作系统。操作系统所提供的管理资源功能和方便用户的各种服务功能,将裸机改造成功能更枪、使用方便的机器;通常将覆盖了软件的机器称为扩充机或虚拟机。
用户在计算机上进行的所有工作都需要人工干预,如程序的装入、运行、结果的输出等。
手工操作阶段两个突出的缺点:
为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾。
系统对作业的处理式成批进行的,但在内存中始终保持一道作业。引入了脱机输入/输出技术,并由监督程序负责控制作业的输入、输出。
主要优点:
缓解了一定程度的人机速度矛盾。资源利用率有所提升。
主要缺点:
内存中仅能有一道程序运行,只有该程序结束后才能调入下一道程序。CPU有大量的时间实在空闲等待I/O完成。资源利用率依然很低。
特点:
多道程序允许多个程序同时进入内存并允许它们在CPU中交替地运行,这些程序共享系统中的各种硬/软件资源。
主要优点:多道程序并发执行,共享计算机资源,资源利用率大幅度提升,CPU和其他设备更能保持忙碌状态,系统吞吐量增大。
主要缺点:用户相应时间长,没有人机交互功能(用户提交自己的作业后只能等待计算机处理完成,中间不能控制自己的作业执行)
多道程序设计的特点是多道、宏观上并行、微观上串行:
多道。计算机内存中存放多道相互独立的程序。(区别于单批道处理)
宏观上并行。同时进入系统的多道程序都处于运行过程中,即它们先后开始各自的运行,但都未运行完毕。
微观上串行。内存中的多道程序轮流占有CPU,交替执行。
分时技术 把处理器的运行时间划分为很短的时间片,按时间偏轮转把处理器分配给各联机作业使用。若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续运行。
分时操作系统:
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可以通过终端与计算机进行交互。
主要优点:
用户请求可以被及时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点:
不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
主要优点:
能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
在实时操作系统的控制下,计算机系统接收道外部信号及时处理,并且要在严格的时限内处理完事件,实时操作系统的主要特点是及时性和可靠性。
按照事件限制可以将实时操作系统分为两类:
是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中的各种资源的共享(如文件共享)和各种计算机之间的通信。
主要特点是分布性和并行性。系统中的各台计算机地位相同,任何工作都可以分布在这些计算机上,并由它们并行、协同完成这个任务。
如WindowsXp、MacOs
通常CPU执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自编程序(即系统外层的应用程序,简称“应用程序”),对操作系统而言这两种程序的作用不同,前者是后者的管理者,因此内核程序要执行一些特权指令,而应用程序则出于安全考虑不能执行这些指令。
用户态和特权态
CPU的运行模式被划分为用户态(目态)和核心态(管态、内核态)。
应用程序运行在用户态,操作系统的内核程序运行在核心态。
在核心态时CPU可以执行特权指令,切换到用户态的指令也是特权指令。应用程序先操作系统请求服务时通过使用访管指令,从而产生一个中断事件将操作系统的转化为核心态。
内核是计算机上配置的底层软件,它管理着系统的各种资源,可以看作是连接应用程序和硬件的一座桥梁。
大多数操作系统的内核包括4方面的内容
操作系统需要通过时钟管理,向用户提供标准的系统时间。另外,通过中断的挂你,可以实现进程的切换。例如分时操作系统中采用的时间片轮转调度。
引入中断机制的初衷时提高多道程序运行环境中的CPU利用率,而且主要是针对外部设备的。中断机制中,只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。
一般将具有以下三种特点的程序称为原语:
定义原语的直接方法是关闭中断,让其所有动作不可分割地完成后子啊打开中断。
为了有效管理系统中用于登记状态的信息(如作业控制块、进程控制块PCB、设备控制块、各类链表等),操作系统需要一些基本的操作,一般有以下三种:
中断也称为外中断,是指来自CPU执行指令的外部的事件,通常用于信息输入/输出。时钟中断,表示一个固定时间片已到,让处理机计时、启动定时运行任务等。
异常也称内中断,是指来自CPU执行指令内部的事件,如程序非法操作码、地址越界、运算溢出等事件。异常不能被屏蔽,一旦出现,就应立即处理。
外中断可分为可屏蔽中断和不可屏蔽中断。
异常可分为:
故障异常和自陷异常属于软中断,终止异常和外部中断属于硬件中断。
不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号类型去查询中断向量表
,以此来找到响应的中断处理程序在内存中的存放位置。
系统调用 是指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序。
凡是与资源有关的操作(如存储分配、I/O传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
系统调用的流程
例如给定一个应用程序,里面包含了很多的指令。而这个程序刚好要执行一个fork指令,那么这个程序所包含的指令中就会有多个传参的指令,这些指令用于指定系统调用的类型“fork”、以及对应的参数保存到几个寄存器中。在传参指令后是一个陷入指令,CPU接收到一个陷入指令时引发一个Trap(内中断中的自陷)。这个时候CPU通过修改PSW(程序状态寄存器)的标记,系统状态转变为核心态。此时系统调用程序根据寄存器中的参数来判断用户需要哪种服务,根据中断向量表,可以找到fork系统调用的处理程序在内存中的位置。然后CPU就会去执行这个fork对应的处理程序,系统调用程序处理结束后CPU又会重新修改PSW中的标志,使得CPU重新回到用户态。
内核时操作系统最基本、最核心的部分。
实现操作系统内核功能的那些程序就是内核程序。
大内核
将操作系统的主要功能模块都作为系统内核,运行在核心态
优点 高性能
缺点 内核代码庞大,结构混乱,难以维护
微内核
只把最基本的功能保留在核内
优点 内核功能少,结构清晰,方便维护
缺点 需要频繁地在核心态和用户态之间切换,性能低
分层结构
模块化
模块化是将操作系统按功能划分为若干个具有一定独立性的模块。每个模块具有某一方面的管理功能,并规定好模块间的接口,使模块之间能通过接口进行通信。还可以进一步将各模块细分为若干个具有一定功能的子模块,同样也规定好各子模块之间的接口。
外核
地址的分配减少了一次地址的映射,提升了效率。
开机的过程
操作系统引导:
完整的操作系统初始化程序在目录/Windows/Boot
下
虚拟机
使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器(Wirtual Machine, VM),每个虚拟机器都可以独立运行一个操作系统
同义术语:虚拟机管理程序/虚拟机监控程序/Virtual Machine Monitor(VMM)/Hypervisor
第一类VMM直接运行在硬件上的实现:
CPU给各个虚拟机划分不同的时间片,内存也分配一些独立的空间。
上层操作系统的特权指令被虚拟机管理程序拦截并转化