计算机操作系统(二)

进程

一、程序

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

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

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

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

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

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

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

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

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

二、进程

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

进程的特征:
动态性:

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

并发性:

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

异步性:

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

独立性:

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

PCB进程控制块:

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

三、线程

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

线程的特征有:

轻型实体

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

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

可并发执行

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

共享进程资源

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

四、进程的三种状态

五、进程管理

进程控制

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

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

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

创建原语 的执行过程:

进程通信

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

共享存储器系统

1.共享数据结构通信

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

2.共享存储区通信

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

消息传递

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

1.直接通信

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

2.间接通信

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

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

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

②公用信箱

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

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

管道通信

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

Windows中的通信方式:

六、进程同步

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

临界资源、临界区

临界资源

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

临界区

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

同步机制应该遵循的规则

记住这16字真言!

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

信号量

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

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

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

相关推荐
不爱洗脚的小滕6 分钟前
【Redis】Scan 命令使用教程:高效遍历海量数据
数据库·redis·bootstrap
宁小法1 小时前
MySQL - 全表扫描 会发生死锁?
数据库·mysql·死锁·存储引擎·全表扫描
瑜伽娃娃1 小时前
基于Redis设计一个高可用的缓存
数据库·redis·缓存
叫我龙翔1 小时前
【MySQL】从零开始了解数据库开发 --- 数据类型
数据库·mysql·数据库开发
睡觉的时候不会困7 小时前
Redis 主从复制详解:原理、配置与主从切换实战
数据库·redis·bootstrap
程序员的世界你不懂8 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
自学也学好编程8 小时前
【数据库】Redis详解:内存数据库与缓存之王
数据库·redis
JAVA不会写9 小时前
在Mybatis plus中如何使用自定义Sql
数据库·sql
IT 小阿姨(数据库)9 小时前
PgSQL监控死元组和自动清理状态的SQL语句执行报错ERROR: division by zero原因分析和解决方法
linux·运维·数据库·sql·postgresql·centos
ChinaRainbowSea10 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程