计算机操作系统(二)

进程

一、程序

程序是指令的有序集合,它是静态的。

程序顺序执行 时的特征有:
①顺序性

一个程序会严格按照规定次序执行
②封闭性

程序执行时会独占系统的所有资源,资源的状态只有本程序能改变。程序开始执行之后,其执行结果不会受到外界影响。
③可再现性

程序执行时的环境与初始条件相同,当程序重复执行,都将会获得相同的结果。

程序并发执行 时的特征有:
①间断性

由于并发执行,多个程序轮流占用时间片,就会出现程序暂停的情况
②失去封闭性

由于是并发执行,所以多个程序会共享计算机的资源,从而失去了封闭性。
③不可再现性

由于是并发执行,多个程序由于彼此执行的速度不同,还存在着交替执行的情况,所以就算初始条件和运行环境不变,也不能再现条件。

二、进程

为了使程序能够并发执行,并且在程序并发执行的时候能够进行控制和描述,从而引进了进程的概念,进程是 一个程序在数据集上运行过程 ,它是动态的。它是系统进行资源分配和调度的基本单位(在引进线程之前,进程是调度的基本单位)。

进程的特征:
动态性:

进程的实质是进程实体的一次执行过程,故动态性是进程最基本的特征。动态性还表现在:"它由创建而产生,由调度而执行,由撤销而消亡"。可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合, 其本身并不具有运动的含义,因而是静态的。

并发性:

并发性是指多个进程能够同时存在内存中,并且在同一时间间隔运行。引入进程就是为了程序能够并发执行。程序没有PCB控制块,所以无法并发执行。

异步性:

异步性是指进程是以不可预知的,各自独立的速度运行。

独立性:

独立性是指进程是一个能够独立运行,独立接收资源分配,独立进行调度的基本单位。

PCB进程控制块:

进程实体由程序段、相关数据段、PCB三部分构成。

三、线程

操作系统引入进程是为了程序能够并发执行,并且便于描述和控制并发程序,以提高资源利用率和系统吞吐量。而**引入线程是为了减小进程切换带来的开销。**引入线程之后,进程只是资源分配的基本单位,不再是任务调度的基本单位。线程才是任务执行和调度的基本单位。

线程的特征有:

轻型实体

线程除了必要的资源外,不拥有系统的资源

任务执行和调度的基本单位

可并发执行

同一个进程中的多个线程或不同进程中的多个线程都可以并发执行

共享进程资源

同一个进程中的多个线程共享该进程占用的全部系统资源。

四、进程的三种状态

五、进程管理

进程控制

进程控制是进程管理中最基本的功能,它用于创建一个新的进程,终止一个完成的进程,中止一个因为某种原因阻塞的进程。它还可以负责进程的状态转换。

想要控制进程,就需要使用原语原语是一系列机器机器指令的集合,原语的操作是原子性的,集合中的所有指令要么都执行,要么一条也不执行。 原子操作在核心态(管态)下执行。

用于进程控制的原语有创建原语、撤销原于、阻塞原语、唤醒原语,其中创建原语只会执行一次。

创建原语 的执行过程:

进程通信

进程通信其实就是指进程间的信息交换。进程之间的互斥、同步其实就是在进行通信,只不过互斥和同步传递的信息都很少。随着计算机发展,进程需要更高级的通信方式,这些方式可以分为三大类:
①共享存储器通信、②消息传递、③管道通信

共享存储器系统

1.共享数据结构通信

在这种通信方式中,要求进程共享一个数据结构以实现信息的交换,这种信息交换方式能够传递的数据较少。效率较低。

2.共享存储区通信

为了传输大量的数据、在存储器中划出一块分区,用于进程共享,进程可以对共享区的数据进行独写来实现进程通信。

消息传递

消息传递是现在使用较广泛的一种方式,在微内核计算机与服务器通信时常用消息传递,消息传递根据实现方式不同可以分为直接通信间接通信。

1.直接通信

操作系统通过通信原语直接向目标进程发起通信,目标进程也可以使用原语直接接收消息。这两个原语是sendreceive

2.间接通信

间接通信方式指进程之间的通信需要通过作为共享数据结构的实体。该实体用来暂存发送进程发送给目标进程的消息;接收进程则从该实体中取出对方发送给自己的消息。通常把这种中间实体称为信箱。消息在信箱中可以安全地保存,只允许核准的目标用户随时读取。信箱可由操作系统创建,也可由用户进程创建,创建者是信箱的拥有者。

信箱可以由操作系统创建,也可以由用户创建,创建者是信箱的拥有者,可以把信箱分为三类:
①私用信箱

信箱的拥有者只能从信箱中读取消息,其它用户只能向信箱写消息,该信箱作为创建进程的一部分,创建者进程结束,该信箱就结束。

②公用信箱

公用信箱由操作系统创建,核准进程可以向公用信箱写消息,也可以从公用信箱读消息。公用信箱可以在系统运行期间始终存在。
③共享信箱

共享信箱由进程创建,进程可以指定谁能使用该共享信箱

管道通信

"管道",是指用于连接一 个读进程和一一个写进程以实现它们之间通信的一一个共享文件,又称pipe文件。管道是单向的,写进程视管道文件为输出文件,以字符流的形式把大量数据送入管道;读进程视管道文件为输入文件,从管道中接收数据。这种方式首创于Unix系统。

Windows中的通信方式:

六、进程同步

进程同步的主要任务是对多个进程进行执行次序上的协调,使并发的进程能够更好的共享资源,合作完成任务。

临界资源、临界区

临界资源

在一段时间内只允许一个进程访问的资源叫做临界资源,临界资源是互斥使用的,比如计算机中的打印机,同时只能给一个进程使用,打印机就是临界资源。

临界区

每个进程访问临界资源的那段代码叫做临界区。在访问临界资源时,代码会先检查临界资源是否空闲,这段检查代码叫做进入区;代码执行完成之后也会告诉其它进程,临界资源已经使用完毕了,这段代码叫做退出去。

同步机制应该遵循的规则

记住这16字真言!

空闲让进
忙则等待
有限等待
让权等待

信号量

信号量机制是一种进程同步工具,它用信号量及P、v操作来实现进程的同步和互斥。信号量的数值与相应资源的使用情况有关
当数值>0时,表示当前可用资源数量;
当数值<0时,其绝对值表示等待使用该资源的进程个数。

该值仅能由P操作、V操作改变(p、v操作是低级通信方式)

P就是申请资源、V是释放资源

相关推荐
向上的车轮15 分钟前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长26 分钟前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
全栈师1 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle
Data 3171 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop
BergerLee2 小时前
对不经常变动的数据集合添加Redis缓存
数据库·redis·缓存
gorgor在码农2 小时前
Mysql 索引底层数据结构和算法
数据结构·数据库·mysql
bug菌¹2 小时前
滚雪球学Oracle[6.2讲]:Data Guard与灾难恢复
数据库·oracle·data·灾难恢复·guard
一般路过糸.3 小时前
MySQL数据库——索引
数据库·mysql
Cengineering3 小时前
sqlalchemy 加速数据库操作
数据库
Cikiss3 小时前
微服务实战——平台属性
java·数据库·后端·微服务