操作系统 知识点总结

399 阅读12分钟

1.计算机系统概述

操作系统:IOS(苹果),Windows(安卓),Linux(专业),Symbian(落后)

1.1.1 操作系统概念(定义)

操作系统(Operating System,OS)是控制和管理整个计算机系统的硬件和软件资源(操作系统是系统资源的管理者),并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境(向上层提供方便易用的服务);它是计算机系统中最基本的系统软件(是最接近硬件的一层软件)。

QQ图片1.png

1.1.2操作系统功能和目标

(1)作为系统资源的管理者

功能:文件管理、存储器管理、处理机(CPU)管理、设备管理。

目标:安全、高效。

(2)向上层提供方便易用的服务

封装思想:操作系统给把一些丑陋的硬件功能封装成简单易用的服务,使用户能更方便使用计算机,用户无需关心底层硬件的原理,只需要对操作系统发出命令即可。

给用户提供的服务:① 图形化用户接口(Graphical User Interface,GUI)

②命令接口 (早期) 联机命令接口=交互式命令接口(用户说一句,系统跟着做一句);脱机命令接口=批处理命令接口(用户说一堆,系统做一堆)

给软件/程序员提供的服务:③程序接口:可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。 系统调用=广义指令

(3)作为最接近硬件的层次

需要实现对硬件机器的拓展。没有任何软件支持的计算机为裸机。通常把覆盖了软件的机器称为扩充机器,又称其为虚拟机

1.2操作系统的发展与分类

(1)手工操作阶段(无操作系统)

缺点:用户独占全机,资源利用率低;人机速度矛盾,CPU利用不充分。

(2)批处理阶段(操作系统开始出现)

单道批处理系统(引入脱机输入输出技术):内存中仅有一道程序运行。 优点:缓解人机速度矛盾;缺点:CPU等待I/O,资源利用率低。

多道批处理系统(操作系统开始出现):多个程序同时进入内存。优点:多道程序并发执行,资源利用率高;缺点:用户等待,不提供人机交互。

(3)分时操作系统:时间片轮转,多个用户通过终端共享一台主机,用户相互独立,互不干扰。优点:提供人机交互功能;缺点:不能优先处理紧急任务。

(4)实时操作系统:某个时间限制内完成某些紧急任务,不需要时间片排队。

硬实时操作系统:绝对严格的时间内完成处理。导弹系统

软实时操作系统:偶尔违反时间规定不会造成任何永久性伤害。飞机订票系统

(5)网络操作系统,分布式操作系统,个人计算机操作系统。

1.3 运行机制

1.3.1 指令(二进制的机器指令)就是处理器能识别、执行的最基本命令。

1.应用程序(CPU用户态=目态,非特权指令):QQ

2.内核程序(管理者,CPU内核态=核心态=管态,特权指令):操作系统最核心的部分,最接近硬件的部分。程序员做的。

3.程序状态字寄存器(PSW):CPU中的寄存器,区别用户态和内核态。

内核态→用户态:执行一条特权指令——修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权。

用户态→内核态:由“中断”(可 陷入指令)引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。

注意:

(1)陷入指令(=trap指令=访管指令)是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态。

(2)发出系统调用请求是在用户态,而对系统调用的相应处理在核心态下进行。

1.3.2 中断和异常

1.内中断异常、例外):中断信号来源CPU内部,与当前执行的指令有关。(陷阱,故障,终止)

2.外中断中断):中断信号来源CPU外部,与当前执行的指令无关。(时钟中断——并发运行、I/O中断)

1.3.3 系统调用

1.系统调用是操作系统提供给应用程序(程序员)使用的接口,可以理解为一种程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。

1.4 操作系统的体系结构

内核是操作系统最基本、最核心的部分。

内核程序是实现操作系统内核功能的那些程序。 QQ图片2.png

QQ图片4.png 1.大内核/单内核/宏内核

2.微内核

QQ图片3.png

image.png

QQ图片6.png

2.进程管理

2.1.1.1进程的概念

1.程序:静态,存放在磁盘里的可执行文件,是一系列的指令集合。

2.进程(process):动态,程序的一次执行过程。同一个程序多次执行会对应多个进程。

3.PID(process ID,进程ID):当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号”——PID。

4.UID:进程所属用户ID。

5。PCB(Process Control Block,进程控制块):进程存在的唯一标志。PID,UID,进程被分配了哪些资源(内存,I/O设备),进程运行情况(CPU使用时间,磁盘使用情况,网络流量使用情况等),这些信息都被保存在PCB中。即进程控制块操作系统需要对各个并发运行的进程进行管理,管理时所需要的信息,都会被放在PCB中。

2.1.1.2进程的组成

1.进程(动态):程序段、数据段 组成。(是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位)

2.进程实体(=进程映像,静态):PCB、程序段、数据段 组成。(是进程某一时刻的状态)

QQ图片7.png

2.1.1.3进程的特征

QQ图片8.png

QQ图片9.png

2.1.2进程的状态与转换

1.进程的五状态:创建态(=新建态)、就绪态、运行态、阻塞态、终止态(=结束态)。

QQ图片10.png

QQ图片11.png 2.进程的组织:链接方式(指针)、索引方式(索引表)。

QQ图片12.png

QQ图片13.png

2.1.3 进程控制

1.目的:实现进程状态转换(用原语实现)

原语的执行具有原子性,即一气呵成,期间不允许被中断。

原语用特权指令关中断指令开中断指令中间的指令实现。只能让内核程序使用

控制原语所做的三类事:更新PCB中的信息、将PCB插入合适的队列、分配/回收资源。

2.进程控制相关的原语:创建原语(创建态→就绪态),撤销原语(进程的终止),阻塞原语(进程的阻塞,运行态→阻塞态),唤醒原语(进程的唤醒,阻塞态→就绪态),切换原语(两个程序状态改变,运行态→就绪态、就绪态→运行态)

阻塞原语必须和唤醒原语成对使用,因何事阻塞,就应该由何事唤醒。

2.1.4 进程通信(IPC)

1.进程间通信(IPC Inter-Process Communication)是指两个进程之间产生数据交互。

2.进程是分配系统资源的单位(包括内存地址空间),各进程拥有的内存地址空间相互独立。

3.进程通信:

(1)共享存储(各个进程对共享空间的访问是互斥的,页表项/段表项)。分为基于数据结构的共享——低级通信方式;基于存储区的共享(灵活性高,速度快)——高级通信方式。

(2)消息传递:进程间的数据交换以格式化的消息为单位,进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。

格式化的消息:消息头(包括:发送进程ID、接收进程ID、消息长度等格式化的信息)、消息体(要传送的信息数据)。

消息传递 分为直接通信方式(指明接收进程的ID)、间接通信方式(信箱,=信箱通信方式)

(3)管道(pipe文件,大小固定内存缓冲区)通信

信息单向流动,FIFO特性。

管道通信只能采用半双工通信,某段时间内只能实现单向的传输。

QQ图片14.png

QQ图片15.png

2.1.5 线程

1.传统的进程是程序执行流的最小单位。可以并发执行。

线程是一个基本的CPU执行单元,也是程序执行流的最小单位。可以并发执行。

引入线程后,进程只作为除CPU之外的系统资源的分配单元(打印机,内存地址空间等都是分配给进程的)。

2.引入线程后的变化

QQ图片16.png 3.线程的属性

QQ图片17.png

2.1.6 线程的实现方式和多线程模型

线程其实是一段代码逻辑。

QQ图片18.png 2.

QQ图片26.png

QQ图片20.png 3.

QQ图片21.png

2.2.1 调度的概念、层次

处理机调度是多道程序操作系统的基础,是操作系统设计的核心问题。

QQ图片22.png

QQ图片23.png 作业:一个具体的任务。

用户向系统提交一个作业≈用户让操作系统启动一个程序(来处理一个具体的任务)。

高级调度(作业调度):好几个程序要启动,到底先启动哪个。每个作业只调入一次,调出一次。

2.七状态模型

内存空间不够,将进程从内存调入外存——挂起

QQ图片24.png 3.总结

QQ图片25.png

2.2.2进程调度的时机、切换与过程、方式

1.时机

QQ图片27.png

QQ图片28.png

2.方式

QQ图片29.png

3.切换与过程

QQ图片30.png

4.总结

QQ图片31.png

2.2.3 调度算法的评价指标

1.CPU利用率

QQ图片32.png

2.系统吞吐量

QQ图片33.png

3.周转时间

QQ图片34.png

QQ图片35.png

4.等待时间

QQ图片36.png

5.相应时间

QQ图片37.png

总结

QQ图片38.png

2.2.4 FCFS,SJF,HRRN调度算法

1.先来先服务(FCFS,first come first serve)(非抢占式)

QQ图片40.png

QQ图片39.png 2.短作业优先(SJF shortest job first)(抢占式、非抢占式)

QQ图片42.png

QQ图片41.png

QQ图片47.png

QQ图片43.png 3.高响应比优先(HRRN,highest response ratio next)(非抢占式)

QQ图片44.png

QQ图片45.png

QQ图片46.png

总结

QQ图片48.png

2.2.5时间片轮转、优先级、多级反馈队列 调度算法

1. 时间片轮转(RR Round-Robin)

QQ图片49.png

QQ图片50.png

2.优先级调度算法(抢占、非抢占式)

QQ图片51.png

QQ图片52.png

QQ图片53.png

QQ图片54.png

3.多级反馈队列调度算法

QQ图片55.png

QQ图片56.png

QQ图片57.png

  1. 总结

QQ图片58.png

2.3.1 进程同步、进程互斥

1.进程具有异步性:各并发执行的进程以各自独立的、不可预知的速度向前推进。

2.进程同步同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某种位置上协调它们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系源于他们之间的相互合作。

3.进程互斥

两种资源共享方式:

(1)互斥共享方式:一个时间段内只允许一个进程访问该资源。

临界资源:一个时间段只允许一个进程使用的资源。互斥的访问临界资源。互斥亦称间接制约关系

(2)同时共享方式:一个时间段内由多个进程“同时”对他们进行访问。

QQ图片59.png

临界区(=临界段):是进程中访问临界资源的那段代码。

进入区退出区是负责实现互斥的代码段。

2.3.2 进程互斥的软件实现方法

1.单标志法(turn谦让)

QQ图片60.png

QQ图片61.png 违背“空闲让进”原则(2个进程都谦让)

2.双标志先检查法(flag表达意愿)

QQ图片62.png

QQ图片63.png

违反“忙则等待”原则。(2个进程都表达意愿想访问临界资源,进入区的“检查”和“上锁”两个处理不是一气呵成的,有可能同时进入临界区)

3.双标志后检查法

QQ图片64.png

QQ图片65.png

解决了“忙则等待”的问题,但又违背了“空闲让进”和“有限等待”原则,会因各进程都长期无法访问临界资源而产生“饥饿”现象。

4.Peterson算法

QQ图片66.png

QQ图片67.png

解决了进程互斥问题,遵循了“空闲让进、忙则等待、有限等待”三个原则。但依然未遵循“让权等待”原则。

QQ图片68.png

2.3.3 进程互斥的硬件实现方法(3种)

1.中断屏蔽方法

QQ图片69.png

2.TestAndSet指令(TSL,TS)

QQ图片70.png

3.Swap指令(Exchange,XCHG指令)

QQ图片71.png

总结

QQ图片72.png

2.3.4 信号量机制

解决进程互斥、同步问题

QQ图片73.png

wait(S)、signal() 1.整型信号量

“检查”和“上锁”一气呵成,避免了并发、异步导致的问题。

用一个整数型的变量作为信号量,用来表示系统中某种资源的数量。

与普通整数变量的区别:对信号量的操作只有三种——初始化、P操作、V操作。

存在的问题:不满足“让权等待”原则,会发生“忙等”(一直等待处理机)。

2.记录型信号量

value表示分配资源的数量,block进行自我阻塞。

QQ图片74.png

QQ图片75.png

2.3.5 用信号量实现进程互斥、同步、前驱关系

QQ图片76.png

QQ图片77.png

2.3.6 生产者-消费者问题

生产者进程(不满,写数据)→缓冲区(临界资源)→消费者进程(不空,读数据)

QQ图片78.png 实现互斥的P(mutex)操作一定要在实现同步的P(full、empty)操作之后,顺序不可随意交换,否则会出现死锁;V操作不会导致进程阻塞,因此两个V操作顺序可以交换。

死锁:两个进程循环等待被对方唤醒。

QQ图片79.png

2.3.7 多生产者-多消费者问题

如果缓冲区大小大于1,就必须专门设置一个互斥信号量mutex来保证互斥访问缓冲区。

QQ图片80.png

QQ图片81.png

2.3.8 读写者问题

解决复杂的互斥问题。

核心思想:设置了一个计数器count用来记录当前正在访问共享文件的读进程数。

同步问题——生产者消费者(PV操作);互斥问题——读写者问题(count计数器)