学习笔记 ——进程与线程(一)

进程

进程和程序

比较对象程序进程
定义指令的集合程序的一次执行活动
静与动进程运行的静态描述动态概念
联系程序不能单独运行,只有将程序装载到内存中,系统为其分配资源之后才能运行,这个过程就是进程

引入定义

狭义定义:
  • 进程是指正在执行的程序。也可以叫做程序的一次执行过程。进程是一个动态的概念。
广义定义:
  • 进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
  • 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

特征

  1. 动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
  2. 并发性:任何进程都可以同其他进程一起并发执行。
  3. 独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
  4. 异步性:进程具有间断性,有着各自独立的、不可预知的速度。
  5. 向前推进结构特征进程由程序、数据和进程控制块三部分组成。
  6. 多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。

进程的并行与并发

比较对象并行并发
特点两者同时执行资源有限的情况下,两者交替轮流使用资源
剖析微观上,在一个精确的时间片刻,有不同的程序在执行,要求必须有多个处理器宏观上,在一个时间段上可以看出是在同时执行
举例例如赛跑,两人都在不停地往前跑例如单核CPU资源,A使用一段后让给B,B使用一段后再让给A,交替使用,为了提高效率

状态

在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。
  1. 就绪(Ready)状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
  2. 执行/运行(Running)状态:当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。
  3. 阻塞(Blocked)状态:正在执行的进程由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件有:等待I/O完成、申请缓冲区不能满足、等待信号等。
  4. 挂起状态:因为某种原因,进程放弃cpu,导致进程无法继续执行,此时进程被踢出内存。

同步和异步

  • 同步一个任务的完成需要依赖另外一个任务,一个任务完成后才进行下一个任务,这是一种可靠的任务序列。要么都成功,要么都失败,两个任务的状态是一致的
  • 异步:不需要等待被依赖的任务完成,只通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了,互相不沟通、不交流,是不可靠的任务序列。

阻塞与非阻塞

  • 阻塞与非阻塞主要是程序(线程)等待消息通知时的状态角度来说的。
  • 阻塞和非阻塞这两个概念与程序(线程)等待消息通知(无所谓同步或者异步)时的状态有关。

同步/异步与阻塞/非阻塞

同步阻塞形式

  • 效率最低。举个例子就是,你专心排队,什么别的事都不做。

异步阻塞形式

  • 异步操作可以被阻塞住,不是在处理消息时阻塞,而是在等待消息通知时被阻塞
  • 例如,在银行等待办理业务的人,排号领了小纸条,假设在这段时间里他不能离开银行做其它的事情,这个人就被阻塞在等待的过程中了。

同步非阻塞形式

  • 实际上是效率低的。举例:你一边看手机、一边抬头看队伍排到你没有,如果把看手机和观察排队的位置看成是程序的两个操作的话,这个程序需要在这两种不同的行为之间来回的切换

异步非阻塞形式

  • 效率更高。因为打电话是你(等待者)的事情,而通知你是柜台(消息触发机制)的事情,程序没有在两种不同的操作中来回切换
  • 很多人会把同步和阻塞混淆,是因为很多时候同步操作会以阻塞的形式表现出来,同样的,很多人也会把异步和非阻塞混淆,因为异步操作一般都不会在真正的IO操作处被阻塞。

线程

定义

  • 60年代,在OS中能拥有资源和独立运行的基本单位是进程。随着计算机技术的发展,进程出现很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。因此在80年代,出现了能独立运行的基本单位——线程(Threads)。
  • 进程是资源分配的最小单位,线程是CPU调度的最小单位。
  • 每一个进程中至少有一个线程

进程与线程

比较对象进程线程备注
地址空间和其他资源进程之间相互独立同一进程中的不同线程共享不同进程之间的线程不可见
通信进程之间通信IPC线程之间直接读写数据段线程需要进程同步和互斥手段辅助来保证数据的一致性
调度和切换
定义进程是资源分配的基本单位线程是可执行/可被调度的基本单位
其他在多线程操作系统里,进程不是一个可执行的实体
线程没有自己的独立资源,其执行必须依赖进程资源
计算机执行单位以线程为单位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值