进程的奥德赛:并发世界中的核心概念与动态管理

简介: 进程的奥德赛:并发世界中的核心概念与动态管理



现代操作系统的重要特性是程序的并发性和资源的共享性。这二者相互联系、相互依赖。

为了满足多用户并发计算的要求,现代操作系统是围绕进程这个概念设计和构造的。

进程概念

在操作系统中,进程是一个极其重要的概念

传统的操作系统中,进程是资源分配独立运行的基本单位。

操作系统所具有的三大特征也是基于进程而形成的,应从进程的角度来研究操作系统。

多道程序设计

在早期的单道程序或单用户系统中,计算机按顺序执行程序,各个用户程序也是顺序执行的。

顺序程序活动的特点
  • 程序执行的顺序性
  • 程序运行环境的封闭性

独占资源,执行过程中不受外界影响

  • 程序执行结果的可再现性

程序运行结果与程序执行速度无关,只要初始状态相同,结果应相同

多道程序设计
  • 内存中同时存放多道程序程
  • 序并发执行
  • 提高资源利用率和系统吞吐量
程序并发执行的特征
1.失去封闭性。

由于程序的并发执行,系统中的资源不再为一个程序独占,因此资源的状态也不再由一个程序决定,而是由并发执行的多道程序决定。

2.失去对应性:程序与计算不再一一对应。
3.并发程序在执行期间相互制约。

程序并发执行时,由于资源共享,使得一些逻辑上相互独立的几道程序之间发生了相互制约关系。相互制约将导致并发程序具有“执行一暂停-执行”这种间断性的活动规律。

进程概念

1.引入:

程序这个静态概念已经不能如实反映程序并发执行过程中的这些特征。

2.进程概念

进程定义:一个具有独立功能的程序关于某个数据集合的一次运行活动。

简言之,进程是程序在并发环境中的执行过程。

进程最根本的属性是动态性和并发性

       “进程”是操作系统中最基本、最重要的概念之一,它对理解、描述和设计操作系统都有非常重要的意义。

3.进程和程序的区别
(1)动态性

进程是程序的一次执行过程,是一个动态和主动的概念;程序是完成某个特定功能的指令的有序序列,是一个静态和被动的概念。

程序可以作为一种软件资源长期保存;进程有一定生命期,动态生成和消亡。

(2)并发性

进程是可以并发执行的

系统中多个进程可按照自己独立的、不可预知的速度推进;程序通常不能作为一个独立运行的单位而并发执行

进程是资源申请和调度单位,进程切换要通过进程调度来实现;而程序的不同模块间通过相互调用实现控制转移。

(3)非对应性

程序和进程无一一对应关系:

一个程序可被多个进程共用;

一个进程在其活动中又可顺序地执行若干程序

(4)异步性

各进程在并发执行过程中相互制约,造成各自前进速度的不可预测性。

程序是静态的,不具备异步特征。

4.进程的基本特征
(1)动态性

进程是程序的一次执行过程,它是临时的、有生命期的。表现在它由创建而产生,完成任务后被撤消。

(2)并发性

进程是可以并发执行的。系统中的各个进程可以按照自己独立的、不可预知的速度推进。

(3)调度性

进程是系统进行资源分配和调度的一个独立单位.

(3)异步性

各进程向前推进的速度不可预知

(5)结构性

进程有一定的结构(程序+数据+PCB)

进程的状态和组成

进程的状态及其转换

1.进程的基本状态
(1)运行状态(Running)

进程占有CPU,并在CPU上执行

处于这种状态的进程的个数不能大于CPU的数目

(2)就绪状态(Ready)

一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态(当调度给其CPU时,立即可以运行)

如果系统中共有N个进程,则就绪进程至多为N-1

(3)阻塞状态(blocked)又称等待态

指进程因等待某种事件的发生而暂时不能运行的状态。

(即使CPU空闲,该进程也不可运行)


上述三种状态是进程最基本的状态,在实际的操作系统实现中,进程远不止这三种状态。

(4)新建状态(New)

进程从无到有是由创建而产生,故它的起点应为新建状态(New)

(5)终止状态(Terminated)

当进程运行完成时要消亡,此时的状态为终止状态(Terminated)

终止状态(Terminated)


三种状态的相互转换如下图所示


进程的5种基本状态及其转换

2.UNIXS 5进程状态及其变迁图

3.进程状态的转换

在进程生存期间,由于进程自身进展情况及外界环境的变化,进程的状态可以依据一定的条件相互转换:

①新建→就绪

②就绪→运行

③运行→阻塞

④阻塞→就绪

➄运行→就绪

⑥运行一终止


就绪 -->运行

  • 调度程序选择一个就绪态的进程投入运行

运行 --> 就绪

  • 运行进程用完了时间片
  • 运行进程被中断,因为一高优先级进程处于就绪状态

运行 -->阻塞

当一进程必须等待时

  • OS尚未完成服务
  • 对一资源的访问尚不能进行
  • 初始化I/0 且必须等待结果
  • 等待某一进程提供输入

阻塞 --> 就绪

  • 当所等待的事件发生时

进程描述

1.进程映像

进程在系统中存在和活动的实体‘

进程映像通常由4部分组成:

1.程序        2.数据集合        3.栈       4.PCB

2.进程控制块的组成

进程控制块:(Process Control BlockPCB)也称为进程描述块,它是进程组成中最关键的部分,其中含有进程的描述信息和控制信息,是进程动态特性的集中反映,是系统对进程施行识别和控制的依据。

进程控制块一般包括以下内容

(1)进程标识信息

  • 进程标识号PID
  • 父进程标识号PPID
  • 用户标识号UID

(2)处理器状态信息

  • 用户可用寄存器
  • 控制和状态寄存器
  • 栈指针

(3)进程控制信息

  • 调度和状态信息
  • 链接信息
  • 进程间通信信息
  • 存储管理信息
  • 资源需求、占有和控制方面的信息
3.进程控制块的作用
  • 每个进程有唯一的进程控制块
  • 系统利用PCB来控制和管理进程
  • 进程的动态、并发等特征是利用PCB表现出来的
  • PCB是进程存在的唯一标志

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

目录
相关文章
|
4月前
|
Go 调度 开发者
[go 面试] 深入理解进程、线程和协程的概念及区别
[go 面试] 深入理解进程、线程和协程的概念及区别
|
20天前
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
38 4
|
5月前
|
安全 Python
告别低效编程!Python线程与进程并发技术详解,让你的代码飞起来!
【7月更文挑战第9天】Python并发编程提升效率:**理解并发与并行,线程借助`threading`模块处理IO密集型任务,受限于GIL;进程用`multiprocessing`实现并行,绕过GIL限制。示例展示线程和进程创建及同步。选择合适模型,注意线程安全,利用多核,优化性能,实现高效并发编程。
78 3
|
3月前
|
网络协议 C语言
C语言 网络编程(十三)并发的TCP服务端-以进程完成功能
这段代码实现了一个基于TCP协议的多进程并发服务端和客户端程序。服务端通过创建子进程来处理多个客户端连接,解决了粘包问题,并支持不定长数据传输。客户端则循环发送数据并接收服务端回传的信息,同样处理了粘包问题。程序通过自定义的数据长度前缀确保了数据的完整性和准确性。
|
4月前
|
算法 Java
JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题
该博客文章综合介绍了Java并发编程的基础知识,包括线程与进程的区别、并发与并行的概念、线程的生命周期状态、`sleep`与`wait`方法的差异、`Lock`接口及其实现类与`synchronized`关键字的对比,以及生产者和消费者问题的解决方案和使用`Condition`对象替代`synchronized`关键字的方法。
JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题
|
3月前
|
C语言
C语言 网络编程(八)并发的UDP服务端 以进程完成功能
这段代码展示了如何使用多进程处理 UDP 客户端和服务端通信。客户端通过发送登录请求与服务端建立连接,并与服务端新建的子进程进行数据交换。服务端则负责接收请求,验证登录信息,并创建子进程处理客户端的具体请求。子进程会创建一个新的套接字与客户端通信,实现数据收发功能。此方案有效利用了多进程的优势,提高了系统的并发处理能力。
|
3月前
|
数据采集 消息中间件 并行计算
进程、线程与协程:并发执行的三种重要概念与应用
进程、线程与协程:并发执行的三种重要概念与应用
74 0
|
4月前
|
Linux Shell 调度
【在Linux世界中追寻伟大的One Piece】Linux进程概念
【在Linux世界中追寻伟大的One Piece】Linux进程概念
43 1
|
4月前
|
存储 缓存 NoSQL
进程内缓存助你提高并发能力!
进程内缓存助你提高并发能力!
|
5月前
|
数据库 数据安全/隐私保护 C++
Python并发编程实战:线程(threading)VS进程(multiprocessing),谁才是并发之王?
【7月更文挑战第10天】Python并发对比:线程轻量级,适合I/O密集型任务,但受GIL限制;进程绕过GIL,擅CPU密集型,但通信成本高。选择取决于应用场景,线程利于数据共享,进程利于多核利用。并发无“王者”,灵活运用方为上策。
70 2

相关实验场景

更多
下一篇
DataWorks