操作系统学习总结

操作系统简介

概念、功能和目标

操作系统(Operating System,OS)是控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机工作和资源的分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件
进程是一个程序的执行过程。执行前需要将该程序放到内存中,才能被CPU处理。

命令接口:允许用户直接使用
程序接口:允许用户通过程序间接使用
GUI:现代操作系统中最流行的图形用户接口

没有任何软件支持的计算机将成为裸机。在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器。
通常把覆盖了软件的机器称为扩充机器,又称之为虚拟机

特征

并发:指两个或多个时间在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。(并行是同时发生)
共享:共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。互斥共享方式(同一时间段内只允许一个进程访问该资源),同时共享方式(允许一个时间段内由多个进程“同时”对它们进行访问)
虚拟:是指把一个物理上的实体变为若干逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
异步:是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。

操作系统的分类

单道批处理系统:
优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升
缺点:内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。

多道批处理系统:
优点:多道程序并发执行,共享计算机资源。资源利用率大幅提升,CPU和其他资源保持“忙碌”状态,系统吞吐量增大。
缺点:用户响应时间长,没有人机交互功能(用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行)

分时操作系统:计算机以时间片为单位,轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
优点:用户请求可以被即时响应,解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户作业服务一个时间片,不区分任务的紧急性。

实时操作系统:
优点:能够优先响应一些紧急任务,某些紧急任务不需要时间片排队。
在实时操作系统的控制下,计算机系统接收到外部信号进行处理,并且要在严格的实现内处理完事件。实时操作系统的主要特点是及时性和可靠性

操作系统的运行机制和体系结构

指令:非特权指令、特权指令
处理器状态:用户态(目态)、核心态(管态)
程序:应用程序、内核程序
在这里插入图片描述
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
实现操作系统内核功能的那些程序就是内核程序。
大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态。优点(高性能),缺点(内核代码庞大,结构混乱,难以维护)
微内核:只把最基本的功能保留在内核。优点(内核功能少,结构清晰,方便维护)。缺点(需要频繁地在核心态和用户态之间切换,性能低)

中断

中断机制:实现了多道程序并发执行本质:发生中断就意味着需要操作系统介入,开展管理工作。

  1. 当中断发生时,CPU立即进入核心态
  2. 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
  3. 对于不同的中断信号,会进行不同的处理

发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要特权指令,因为CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程并发执行。

内中断:CPU内部与当前执行的指令有关(陷入:系统调用、故障:缺页等、终止:错误造成的比如整数除0)
外中断:CPU外部与当前执行的指令无关(I/O中断请求、人工干预)

系统调用

应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
功能:设备管理、文件管理、进程控制、进程通信、内存管理
在这里插入图片描述

  1. 陷入指令是在用户态执行的,执行陷入指定之后立即引发一个内中断,从而CPU进入核心态
  2. 发出系统调用请求是在用户态,而对系统调用的相应处理核心态下进行
  3. 陷入指令是唯一一个只能在用户态执行,而不可在核心态执行的指令

进程

程序:就是一个指令序列
程序段、数据段、PCB三部分组成了进程实体(进程映像)。一般情况下,我们把进程实体就简称为进程。
PCB是进程存在的唯一标志!

进程是进程实体的运行过程,是系统进行资源分配调度的一个独立单位。
进程的组织:
链接方式:按照进程状态将PCB分为多个队列,操作系统持有指向各个队列的指针。
索引方式:根据进程状态的不同,建立几张索引表,操作系统持有指向各个索引表的指针。

相比程序,进程拥有以下特征:
动态性:进程是程序的一次执行过程,是动态地产生、变化和消亡的
并发性:内存中有多个进程实体,各进程可并发执行
独立性:进程是独立运行、独立获得资源、独立接收调度的基本单位
异步性:各进程按独立的、不可预知的速度向前推进,各操作系统要提供“进程同步机制”来解决异步问题。
结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成

进程的状态与转换

进程的三种基本状态:运行态(占有CPU,并在CPU上运行),就绪态(已经具备运行条件,但由于没有空闲CPU,而暂时不能运行),阻塞态(因等待某一事件而暂时不能运行)
其他两种状态:创建态(进程正在被创建,操作系统为进程分配资源,初始化PCB)、终止态(进程正在从系统中侧小,操作系统会回收进程拥有的资源、撤销PCB)
在这里插入图片描述

进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。
这种不可被中断的操作即原子操作
原语采用“关中断指令”和“开中断指令”实现

进程通信

进程是分配系统资源的单位,因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间
共享存储:两个进程对共享空间的访问必须是互斥的(互斥方为通过操作系统提供的工具实现)
基于数据结构的共享:比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多,是一种低级通信方式。
基于存储区的共享:在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。
在这里插入图片描述

管道通信:

  1. 管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道
  2. 各进程要互斥地访问管道。
  3. 数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞
  4. 如果没写满就不允许读。如果没读空就不允许写
  5. 数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。
    在这里插入图片描述

消息传递:
进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交交换。
在这里插入图片描述

线程概念和多线程模型

线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务。
引入线程后,进程只作为除CPU之外的系统资源的分配单位

区别:
进程是资源分配的基本单位。
线程是调度的基本单位。

线程间并发,线程切换时不需要切换进程环境,系统开销小。
进程间并发,需要切换进程的运行环境,系统开销很大。

进程的调度

当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则决定处理这些任务的顺序,这本就是“调度”研究的问题。
在多道程序中,进程的数量往往多于处理机的个数的,这样不可能同时并行地处理各个进程。处理机调度,就是从就绪队列中按照一定的算法选择一个进程将其处理机分配给它运行,以实现进程的并发执行。

进程的七种状态
暂时调到外存等待的进程状态为挂起状态,挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态。

在这里插入图片描述
三层调度的联系和对比
在这里插入图片描述

进程调度

进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。
进程在操作系统内核程序临界区中不能进行调度和切换。
临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。
临界区:访问临界资源的那段代码。
内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列(各就绪进程的PCB组成)

非抢占方式:只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到进程终止或主动要求进入阻塞态。
抢占方式:当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。

进程调度的评价指标

CPU利用率:指CPU“忙碌”的时间占总时间的比例。
利用率:忙碌时间/总时间
系统吞吐率:单位时间内完成作业的数量
系统吞吐量:总共完成了多少作业/总共完成了多少时间
周转时间:是指作业被提交给系统开始,到作业完成为止的这段时间间隔
平均周转时间 = 各作业周转时间之和/作业数
等待时间:指进程/作业处于等待处理机状态时间之和
响应时间:指从用户提交请求到首次产生响应所用的时间

进程调度算法

先来先服务(FCFS)
在这里插入图片描述

短作业优先(SJF)
在这里插入图片描述

高响应比优先(HRRN)
在这里插入图片描述
时间片轮转(RR)
在这里插入图片描述
优先级调度算法
在这里插入图片描述
多级反馈调度算法
在这里插入图片描述

进程同步、互斥

同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。
对临界资源的访问,必须互斥地进行。互斥,亦称间接制约关系进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前方为临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。

为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则:

  1. 空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。
  2. 忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
  3. 有限等待。对请求访问的进程,应保证能在有限时间内进入临界区。
  4. 让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。

信号量机制

用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥、进程同步。
信号量其实就是一个变量,可以用一个信号量来表示系统中某种资源的数量,比如:系统中只有一台打印机,就可以设置一个初值为1的信号量。

整形信号量:用一个整数型的变量作为信号量,用来表示系统中某种资源的数量
在这里插入图片描述
记录型信号量:整型信号量的缺陷是存“忙等”问题,因此人们提出了“记录型信号量”,即用记录型数据结构表示的信号量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值