linux环境编程-进程&并发
首先我们得搞清楚,进程和程序有社么区别呢?
先看个视频了解一下
一.进程和程序得区别
1)程序【后面我们介绍介绍程序的编译过程和执行过程】:是编译好得二进制文件,在磁盘上得,不占用系统资源(cpu,内存,打开得文件,设备,锁......);
2)进程: 进程本就是一个抽象得概念,与操作系统原理联系紧密,进程是一个活动得程序,占用系统资源,在内存中执行(程序运行起来就产生一个进程)
1.说到进程 就不得不说到 进程控制块(PCB),在OS中用代码的形式展示就是一个结构体。
大家可以看到 这个 PCB的 结构体中有非常多的 成员变量,每个 变量都有他自己的含义。总之 这个 PCB就是来控制管理和记录运行...等进程的相关信息的。其中的每个角色我就不一一介绍了成员了【这里只是 大致的介绍一下PCB】 。给大家介绍经常用的。
包含:【1】进程ID,【2】进程的运行状态,【3】进程切换时需要的保存和恢复的CPU寄存器,【4】虚拟地址空间的信息,【5】描述控制终端的信息,【6】当前工作目录,【7】umask掩码,【8】文件描述符表,含多个只想 FILE结构体的指针,【9】和信号相关的信息,【10】会话 / 进程组,【11】用户ID/组ID
2.另外还有进程状态的转换图,
二.并发性&并行性的概念
1)书上的:并发与并行
1.并发性指的是:两个或多个事件 在同一时间间隔内发生
2.并行性指的是: 两个或多个事件 在同一时刻发生
2)运用中:并发与并行
1.并发性指的是:来张图
为什么这么画呢 举个简单的例子 大概在20年前左右都是 单核的 cpu,还没有现在 这么丰富多彩,但是 20 年前你 依然可以一边看小视频,一边听歌,一边 干别的,就是因为 并发性【宏观的并发(因为cpu的处理速度太快了,人们感觉不到它切换进程的卡顿)微观交替进行】。
2.并行性指的是: 现在 基本都是多核心cpu,进程或者线程可以 在不同的核心上 同时的运行,这就是并行性