操作系统的详细讲解(3.1)

操作系统的详细讲解(3.1)

3.1.1 操作系统的定义和作用

操作系统的定义
操作系统是计算机中的一个系统软件,他管理和控制计算机系统的硬件和软件资源,合理组织计算机的工作流程,控制程序的执行。

操作系统的作用
通过资源管理,提高计算机系统的效率;
改善人机界面,向用户提供友好的工作环境;

3.1.2 操作系统的特征和功能

操作系统的特征
1.并发性:并发指的是宏观上的并发,微观上的串行;
2.共享性:系统中的资源供并发的多个进程共同使用;
3.虚拟性:指的是分时技术,将一个物理设备虚拟成多个逻辑上的设备;
4.不确定性:由于程序的并发运行,从而导致系统内的各种进程错综复杂,与这些进程发生的时间等等因素都是不确定的,处理不当时,容易导致系统出错。

操作系统的功能
1.处理机管理
实际上是指对处理机执行“时间”的管理,采用多到程序等技术将CPU真正合理分配给每个任务,常用的资源管理单位有进程和线程。
进程控制:创建、撤销、挂起、改变运行优先级等;
进程同步:协调并发进程之间的推进步骤,以协调资源共享;
进程通信:在进程之间传送数据,以协调进程间的协作;
进程调度:作业和进程的运行切换,以充分利用处理机资源和提高系统性能;

2.文件管理
文件储存空间管理:解决如何存放信息,以提高空间的利用率和读写性能;
目录管理:
文件的读写管理和存取控制:通过系统设置用户口令,对用户分类、通过设置文件的权限解决信息安全问题;
软件管理:软件的版本,相互依赖关系、安装和卸载等

3.储存管理
存储分配与回收:操作系统为每个程序分配存储空间,当程序运行完毕回收储存空间;
存储保护:保证进程之间互不干扰,相互保密;
地址映射:进行逻辑地址到主存地址的映射;
主存扩充:提高主存利用率,扩大进程的主存空间;

4.设备管理
设备操作:利用设备驱动程序完成对设备的操作;
设备独立性:提供统一的I/O设备接口,使应用程序独立于物理设备,提高可适应性,在同样的接口和操作下完成不同的内容;
设备分配与回收:在多用户间共享I/O设备资源;
缓冲区管理:匹配CPU和外设的速度,提高两者的利用率;

5.作业管理
作业管理包括任务、界面管理、人机交互、图形界面、语音控制和虚拟现实等。

3.1.3 操作系统的类型

1.批处理操作系统
单道批处理操作系统(一次只能有一个作业在内存中)
多道批处理操作系统(多个任务并发,微观上串行)

2.分时操作系统(时间片轮转)(多用户操作系统)(UNIX系统典型的多用户、多任务分时的操作系统)

3.实时操作系统(快速响应、可靠性高)

4.网络操作系统

5.分布式操作系统

6.微机操作系统

7.嵌入式操作系统

计算机层次(计算机硬件—–操作系统—–其他系统软件—–应用软件)

3.2.1.1 处理机基本概念

1.程序与进程

1.1 程序
前驱图是一个有向无循环图,图是由节点和节点间的有向边组成,节点代表各程序段的操作,只有前一个节点运行结束之后才能运行下一个节点。

程序顺序执行时候的特征:
顺序性:程序中的各个程序段严格按照规定的顺序执行;
封闭性:程序运行时候的系统各资源只受该程序控制,执行结果不受外界干扰;
可再现性:只要程序执行环境以及初始条件不变,运行结果就是相同的;

程序并发执行的特征如下:
失去了程序的封闭性;
程序和机器执行程序的活动不再一一对应;
并发程序无相互制约性;

1.2 进程(资源单位)
进程通常是由程序和数据以及进程控制块(PCB)组成的。进程的程序部分描述了进程需要完成的功能,进程数据集合部分包括程序执行时候需要的数据以及工作区。
进程控制块是进程的描述信息和控制信息,是进程动态特性的集中反应,也是进程存在的唯一标志。操作系统通过PCB管理进程,一般PCB是常驻主存的,尤其是调度信息必须常驻与主存中。

2.进程的状态及其转换
在这里插入图片描述

进程的三态:(运行、就绪、阻塞)态
运行态:进程正在处理机上运行。对于单处理机而言,处于运行转态的进程只能有一个;
就绪态:进程具备运行条件,但尚未运行;
阻塞态:进程因发生某时间而暂停执行时的状态;
在这里插入图片描述
处理机有两种状态:管态(CPU处理系统程序时候),非管态(CPU处理一般用户程序时候)。
处于就绪状态的用户进程最多有n-1个,最少有0个。
在单处理机中,处理器只有一个,非管态的某一时刻。首先运行肯定只有一个,没有阻塞全在就绪就有n-1个、全都在阻塞就是0个。
比如:在单处理机系统中,有8个用户进程,在非管态的某一时刻,处于就绪状态的用户进程最多、最少分别有几个。
答案:最多7个,最少0个。

3.2.1.2 进程的控制

进程控制就是对系统中所有进程从创建到消亡的全过程实施有效地控制。为此,操作系统设置了一套控制机构,该机构的主要功能包括创建一个新进程,撤销一个已经运行完成的进程,改变进程的状态,以及实现进程之间的通信。
进程控制是由操作系统内核中的原语实现的。内核是计算机系统硬件的首次延伸,是基于硬件的第一层软件扩充,他为系统对进程进行控制和管理提供了良好的环境。
不同的操作系统内核所包含的功能不同,但大多数操作系统的内核都包含支撑功能和资源管理的功能。

3.2.1.3 进程间的通信

1.同步与互斥
同步是合作进程间的直接制约问题,互斥是申请临界资源进程间的间接制约问题。

1.1 同步(等待前面运行结束才进行后面操作)
相互合作的进程需要在某些确定点上协调他们的工作,当一个进程到达这些点后,除非另一个进程已经完成某些操作,否则就不得不停下来等待这些操作结束。这就是进程间的同步。

1.2 互斥
在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能提供给一个进程使用,成为临界资源。这就需要使用到了进程之间的制约问题:互斥。

1.3 临界区管理的原则(互斥锁,抢到锁就进去,没有抢到就等待)
临界区是进程中对临界资源操作的那段程序。互斥临界区管理的原则是:有空就进,无空则等待;有限等待,让权等待。

2.信号量与P、V操作(创建多把锁,进程进行抢锁,抢到则运行,没有抢到等待)
信号量机制主要有整形信号量、记录性信号量、信号量集机制。

2.1、 信号量于P、V操作
信号量是一个整形变量,根据控制对象的不同赋不同的值。信号量可以分为两类。
公用信号量:实现进程间的互斥,初值=1或者资源的数目;
私用信号量:实现进程间的同步,初值=0或者某个正整数;

信号量S的物理意义是:S>=0,表示某资源的可用数目;S<0,其绝对值表示阻塞队列中等待该资源的进程数。P、V操作是实现进程同步与互斥的常用方法。

P操作定义:S=S-1,若S>=0,则执行P操作的进程继续执行;否则,若S<0,则置该进程为阻塞状态,并将其插入阻塞队列;(抢锁,在还有锁S存在时候,执行操作,锁的数目减少一个;锁S没有时候,等待)

V操作定义:S=S+1,若S>0,则执行V操作的进程继续执行;否则,若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,执行V操作的进程继续执行。(释放锁,锁的数目加一,就绪进程进行抢锁,)

2.2、利用P、V操作实现进程的互斥
令信号量的初值为1,当进程进入临界区时执行P操作,退出临界区时执行V操作。
代码如下:

P(mutex);           # 抢锁
临界区;
V(mutex);          # 释放锁

2.3、利用P、V操作实现进程的同步

进程的同步是由于进程间合作而引起的相互制约的问题。要实现进程的同步,可用一个信号量于信息联系起来。当信号量的值为0是表示信息未产生,当信号量的值为非0时候,表示希望的信息已经存在。假定用信号量S表示某条信息,进程可以通过P操作测试信息是否到达,调用V操作通知信息已经准备好了。

3.2.1.4 管程(类似与队列:管道+锁)

管程是由一些共享数据、一组能为并发进程执行的作用在共享数据上的操作的集合,初始代码以及存取权组成的。
采用这种方式管理共享资源可以借助数据结构及在其上实施操作的若干过程来进行,对共享资源的申请以及释放可以通过过程在数据结构上的操作来实现。

管程提供了一种允许多进程安全有效地共享抽象数据类型的机制,管程实现同步机制的基础是“条件结构”。为实现进程的互斥和同步,必须定义一些条件呢变量。这些条件变量只能被wait 和 signal 访问。利用管程可以解决生产者-消费者模型。

3.2.1.5 进程调度

在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。

高级调度:它决定出于输入池中的哪个后备作业可以调入系统做好运行的准备,使其成为一个或者一组就绪进程:系统中的一个作业只需经过一次高级调度。
中级调度:它决定出于交换区中的就绪进程哪个可以调入主存,以便使其直接参与对CPU的竞争。在主存资源紧张的时候,为了将进程调入主存,必须将主存中出于阻塞状态的进程调至交换区,以便为调入进程腾出空间。
低级调度:它决定出于主存中的就绪进程哪个可以占用CPU,是操作系统中最活跃、最重要的调度程序,对系统的影响很大。

1.调度方式
调度方式是指当有更加高优先级的进程到来时候如何分配CPU。调度方式分为可剥夺式和不可剥夺式两种。可剥夺式是指当有优先级更高的进程到来时候,强行将正在运行的进程所占用得CPU分配给优先级更高的进程;不可剥夺式是指当有优先级更加高的进程到来的时候,必须等待正在运行的进程自动释放占用的CPU,然后将CPU分配给更高优先级的进程。

2.进程调度算法
常见的进程调度算法有先来先服务、时间片轮转、优先级调度和多级反馈调度算法。

2.1 先来先服务(FCFS)(宏观调度)
按照作业提交或者进程变为就绪态的先后次序进行分配CPU。特点:比较有利于长作业,但不利于短作业;有利于CPU繁忙的作业,不利于I/O繁忙型的作业。(I/O繁忙型多数时间都是在等待外设反馈)

2.2 时间片轮转(微观调度)
时间片轮转的基本思路是通过时间片轮转,提高进程并发性和响应时间,从而提高资源利用率。设计目标是提高资源利用率。

2.3 优先级调度
优先级调度分为静态优先级和动态优先级两种。
静态优先级:进程的优先级是在创建的时候,就已经确定的,知道进程终止都不会再改变;
动态优先级:创建进程的时候赋予一个优先级,在进程运行过程中还可以改变,以便获得更好的调度性能。

2.4 多级反馈调度
多级反馈调度算法是在时间片轮转算法和优先级算法的基础上改进的。其优点是:照顾短进程,提高系统的吞吐量,缩短平均周转时间:照顾I/O型进程已获得较好的I/O设备利用率和缩短响应时间;不必估计进程的执行时间,动态调节优先级。

优先级的确定需要考虑:
1.I/O型进程。使其进入最高级优先队列,以便更好及时响应需要I/O交互的进程。通常也就是一个小的时间片在运行,其余时间转入阻塞态,等待I/O设备响应。
2.计算型进程。每次都执行完时间片,进入更低级序列。最终采用最大时间片来执行,减少调度次数。
3.I/O次数不多主要是CPU处理的进程。在I/O完成后,放回优先的I/O申请时离开的队列,以免每次都回到最高优先级队列后再逐次下降。
4.为适应一个进程在不同时间段的运行特点,在I/O完成时,提高优先级;时间片用完时,降低优先级。

3.2.1.6 死锁

所谓死锁是指两个以上的进程互相都因请求对方已经占用的资源,导致无法运行下去的现象。

1.产生死锁的原因
产生死锁的原因是资源竞争及进程推进顺序非法。

2.产生死锁的4个必要条件
互斥条件:进程对其要求的资源进行了排他性控制,即一次只允许一个进程使用。
请求保持条件:零星地请求资源,即已获得部分资源后又请求资源被阻塞。
不可剥夺条件:进程已获得资源在没有使用的完的条件下是不可以被剥夺的,只有使用完成之后才能自行释放。
环路条件:发生死锁时候,在进程资源有向图中必定构成了环路,其中每个进程占有着下一个进程需要申请的一个或者多个资源。

3.进程资源有向图
进程资源有向图只有两种情况,一种就是请求资源,另一种就是分配资源。
请求资源:进程指向资源;
分配资源:资源指向进程;

4.死锁的处理
死锁的预防:只要使得产生死锁的四个必要条件缺一即可。(静态分配法和资源有序分配法)
死锁的避免:对于进程请求资源进行检测,如果分配资源后会导致系统处于不安全状态的请求,不予以分配资源;其余的分配。(提高资源的利用率,但是增加了系统的开销)
死锁的检测:系统定时运行一个“死锁检测”的程序,判断系统是否发生死锁,若检测到有死锁,则设法解开死锁;
死锁的解除:检测到死锁发生后,常采用资源剥夺法和撤销进程法解除死锁。

3.2.1.7 线程(执行单位)

1.线程的基本概念
线程是比进程更小的能够独立运行的基本单位。在引入线程的操作系统,线程是进程中的一个实体,是系统独立分配和调度的基本单位。线程自己基本上并不拥有资源,只拥有一点在运行中必不可少的资源,但是它可与同属一个进程的其他线程共享该进程中所占用的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行。线程同样也有就绪、等待和运行三种状态。

2.线程的分类
用户级线程:不依赖于内核,该类线程的创建、撤销和切换都不利用系统调用实现。
内核支持线程:依赖于内核,即无论是用户进程中的线程,还是系统中的线程,他们的创建、撤销和切换都利用系统调用实现。
同时实现了两种不同类型的线程。

3.进程与线程的比较
调度:将线程作为调度和分配的基本单位,进程作为拥有资源的基本单位;
并发性:不仅仅进程之间可以并发编程,而且同一个进程中的多个线程之间也是可以并发执行;
拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可访问隶属于进程的资源;
系统开销:在创建和撤销进程时候,由于系统都需要为其分配和回收资源,导致系统的开销明显地大于创建和撤销线程时候的开销。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115132.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号