操作系统知识点总结:
第一章:操作系统概述
1.1操作系统的概念:
操作系统是一种系统软件,与其他系统软件和应用软件不同,它有自己的基本特征。它的四大基本特征也就是并发,共享,虚拟,异步。
1.2操作系统的特征(四大基本特征):
- 并发: 这里我们要理解什么是并发,什么是并行。并发是指多个事件在同一时间间隔内发生。而并行是指多个事件在同一时刻发生。
- 共享: 共享分为两种共享方式:互斥共享方式:在一定时间内只允许一个进程去访问。同时共享方式:在一定时间内允许多个进程去访问。
其中 **并发和共享是操作系统最基本的特征。两者互为存在条件,**资源共享是以并发为条件的,没有并发就没有办法谈共享。若系统不能对资源并发进行有效的管理,那么必将影响到程序的并发执行。
3.虚拟
4.异步: 进程的执行不是一贯到底的,而是走走停停,不断向前推进。
虚拟性以并发性和共享性为前提,异步性是并发性和共享性的必然结果。
1.3操作系统的目标和功能:
1.操作系统是计算机系统资源的管理者:
(1).处理机管理
(2).存储器管理
(3).文件管理
(4).设备管理
2.操作系统作为用户和计算机硬件系统之间的接口
3.操作系统实现了对计算机资源的扩充
操作系统的目标:实现方便性,有效性,可扩充性,开放性。
1.4操作系统的发展历程:
1.人工操作阶段:
2.单道批处理阶段:
实现了对作业的连续处理,但由于只有一个通道,它解决了人机矛盾和CPU与IO设备速度不匹配的矛盾。提高了系统的资源利用率和吞吐量。
缺点:不能充分利用资源,原因是只有一个通道。
3.多道批处理阶段:
优点:提高了资源的利用率,系统的吞吐量大。
缺点:平均周转时间长,没有交互能力。
实现多道批处理的关键是: 如何分配处理器,多道程序的内存分配问题,I/O设备如何分配,如何保证其安全性和一致性。
4.分时操作系统
分时系统实现的关键是如何让用户与自己的作业进行交互。
5.实时操作系统
//TODO
1.5操作系统的运行环境:
两种指令(特权指令和非特权指令):
特权指令: 指的是不允许用户直接使用的指令。
非特权指令: 是指允许用户直接使用的指令,它不能访问系统的软硬资源。
随之而来的是两种运行模式(用户态和核心态):
当CPU处于核心态时就可以使用特权指令,同时切换到用户态的指令也是特权指令。当CPU处于用户态时也只能使用非特权指令。
★★★中断与异常
中断:
中断也被称为外中断,是指CPU执行指令外部的事件。
异常也被称为内中断,是指CPU执行指令内部的事件。
中断和异常的分类:
外中断可分为可屏蔽中断和不可屏蔽中断。
异常分为故障,自陷和终止。
中断和异常的处理过程:
当CPU在执行用户程序的第i条指令时检测到一个异常事件,或者发现了一个中断请求信号,这是CPU打断当前的用户程序,然后转到相应的中断或异常处理程序中去执行。若中断或者异常处理程序能够解决相应的问题,则在中断或者异常处理程序最后,通过执行中断和异常返回指令,回到被打断的用户程序的下一条指令(i+1)条指令继续执行,若发现是不可修复的错误就终止用户程序。
原语:
所谓原语就是由若干条指令组成的,用于完成某一特定功能的过程,它是有原子性的,也就是说原语在执行过程中不能被中断,只能一气呵成。原子操作在内核态下执行,并且常驻内存。
1.6系统调用:
所谓的系统调用是指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序。
系统调用按功能可分为:
由于系统调用对整个系统的影响非常的大,因此需要由内核程序负责完成,要运行在内核态,用户可以通过陷入指令(trap/访管指令)来发起系统调用,即是将CPU的使用权交给操作系统的内核程序(CPU的状态从用户态转变为内核态)。让内核程序对系统调用请求进行相应得处理,处理完成后将CPU得使用权还给用户程序(即由内核态转变为用户态)。目的就是让用户程序不能执行对系统影响大得操作。必须通过系统调用得方式请求操作系统代为执行。增加了安全性。
列举从用户态转变到内核态的例子:
(1).用户程序要求操作系统的服务,即系统调用。
(2).发生一次中断。
(3).用户程序产生了一个错误状态。
(4).用户程序企图执行一条特权指令。
(5).从核心态转向用户态由一条指令实现,这条指令也是特权指令(因为是在内核态下执行的指令),一般是中断返回指令。
访管指令是将用户态转向核心态,因此它是在用户态下使用的指令,不是特权指令。
1.7操作系统的结构(新知识点):
大内核: 所有的系统功能都放在了内核里。这也保证了状态切换的次数减少,性能增加内核内部的各个程序可以互相调用。缺点:所有的程序都放在内核导致维护起来很难,并且当一个程序出现错误,可能就导致整个内核出现错误。
微内核: 只把最核心的功能放入内核,优点:内核易于维护,可靠性高,一个功能出错不会影响内核。缺点:性能低,需要频繁的进行状态切换。
1.8虚拟机:
虚拟机:使用虚拟化技术将一台物理机虚拟化为多台虚拟机器,每台虚拟机都可以独立运行1个操作系统。
二者对比:
第二类的虚拟机就是我们常用的Vmware,我们将虚拟机安装在我们的宿主机上,所有的资源都依靠于宿主机,这也就意味着性能会差,但是可迁移性非常好,我们只需要将我们的镜像文件ISO拷贝到另一台电脑上即可。
第一章知识点补充:
1.操作系统管理计算机的硬件资源和软件资源。
2.系统调用是操作系统为应用程序使用内核功能所提供的接口。
3.操作系统为编程人员提供的接口是程序接口,即系统调用。
4.用户不能直接操作硬件资源,只能通过系统调用的方式来请求内核为其提供服务,间接的去访问资源。
5.操作系统不能直接用来编程,配置操作系统的机器与裸机相比,资源利用率提高了。
6.操作系统的接口分为 命令接口 和 程序接口(系统调用)。
7.计算机开机后,操作系统被加载到RAM中。
8.实时操作系统必须在被控制对象的规定时间内来处理来自外部的请求。
9.计算机通过硬件中断机制完成了由用户态转变为核心态。
10.内核包含四个部分:时钟管理,中断机制,原语和广义指令。输入和输出涉及中断操作,也属于内核。
11.关中断属于特权指令。
12.微内核结构中,内核的功能越少越稳定。支持分布式系统。windows属于宏内核
第二章:进程与线程
2.1进程:
进程的概念:
进程是程序的一次执行过程,是一个程序及其数据在处理机上顺序执行时所发生的活动,是具有独立功能的程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位。
重点:
(1).进程是动态的,具有过程性。
(2).PCB是进程存在的唯一标识。
(3).进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
进程的特征: (1)动态性,(2),并发性(3),异步性(4),独立性
2.2进程的状态与转换:
五种状态以及五种状态之间的转换:
运行态: 进程正在处理机上运行。
就绪态: 进程获得了除处理机之外的其他所有资源。一旦得到处理机就可以开始运行。
阻塞态: 进程正在等待某一事件而暂停运行。
注意: 一个进程从运行态转变到阻塞态是主动的行为,从阻塞态转变为就绪态是被动的。
2.3进程的组成:
PCB(最核心的进程控制块,是进程存在的唯一标识) + 程序段 + 数据段
2.4进程控制:
进程的创建: 终端用户登录系统,作业调度,系统提供服务都会引起进程的创建。
进程的终止: (1).正常结束(2).异常结束,表示进程在运行时,发生了某种异常事件导致无法继续运行(3).外界干预
进程的阻塞和唤醒
2.5进程通信:
进程通信是指进程之间的信息交换,其中我们所知道的PV操作则是低级通信方式,而高级通信方式是 共享内存,消息传递,管道通信。
2.6线程:
在引入线程后,进程作为除CPU外的系统资源的分配单元,而线程则作为处理机的分配单元 ,是程序执行流的最小单位。
引入进程的目的是更好的使多道程序并发执行,提高资源利用率和系统吞吐量。引入线程则是减少程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
2.7线程和进程的比较:
(1).调度:
拥有资源和独立调度的基本单位都是进程,进程之间的切换开销很大。而线程独立调度的基本单位,线程之间切换的开销远小于进程。同时线程之间的切换不会影响进程。进程之间的切换会影响线程。
(2).并发性:
进程之间可以并发,一个进程中的多个线程也可以并发,不同进程中的线程也可以并发。
(3).独立性:
每个进程都拥有独立的地址空间和资源。不允许其他进程访问,线程共享进程的地址空间和资源,并且某个进程中的线程对其他进程是不可见的。
(4).系统开销:
创建和撤销进程的开销要远大于创建和撤销线程的开销。
(5).支持多处理机:
进程只能运行在一个处理机上,对于多线程进程可以在多个处理机上运行。
2.8线程的实现:
用户级线程:
内核级线程:
由图可以看除内核级线程是放在操作系统中的,因此是由操作系统进行管理的。线程的调度,切换等工作都是由内核负责的,因此内核级线程的切换必须在内核态下完成。每个线程都有自己的线程控制块(TCB),同时内核级线程是操作系统能够看到的线程。
优点: 当一个线程被阻塞时,别的线程还能正常运行,并发能力强,多线程可以在多核处理机上并行执行。
缺点: 一个用户级线程会占用多个内核级线程,线程的切换需要切换到内核态,需要状态转换,开销大。
2.9一对一模型:
2.10多对一模型:
2.11多对多模型:
注意: 内核级线程要小于用户级线程的。
2.12线程的状态转换:
线程的状态转换图和进程类似,我们只需要关注三状态转换(就绪,运行,阻塞)
2.13进程调度:
进程调度的时机:
-
当前运行的进程主动放弃处理机:
进程正常的运行完终止。
进程运行过程中发生异常终止。
进程主动请求进入阻塞。
-
当前运行的进程被动放弃处理机:
在运行过程中来了一个优先级更高的进程。
分配给进程的时间片用完。
有更紧急的事情要处理(I/O)。
进程调度的方式:
抢占式和非抢占式
重点知识:
进程在操作系统内核程序临界区是不能进行调度和切换的。
进程处于临界区时是可以进行处理机调度的,为了防止某个进程一直等待临界资源,占用CPU。
2.14调度算法:
重要的几个公式:
(1).先来先服务(FCFS)(非抢占式):
按照作业到达的先后顺序进行调度:
用于作业调度和进程调度。