进程、线程

1.进程

  • 开发者所写的代码称之为程序,程序运行起来,称之为进程
  • 当运行一个程序时,我们就将一个运行的程序叫做进程
  • 进程会申请一块内存空间,将数据存放到内存空间中,是申请数据的过程,是最小的资源管理单位
  • 进程是线程的容器,一个进程可以有多个线程
  • 进程是操作系统资源分配的基本单位
  • 程序与进程的区别
    • 程序数据和指令的集合,是一个静态的概念,可以长期保存到系统中
    • 进程是程序运行的过程,是一个动态的概念。进程存在生命周期,会随着程序的终止而销毁,不会永久保存在系统中
  • 进程之间通过TCP/IP协议实现进程间通信

2.线程

  • 线程是操作系统进行运算调度的最小单位
  • 线程包含于进程中,是进程中的实际运作单位
  • 一个线程值的是进程中一个单一顺序的控制流,一个进程可以并发多个线程,每条线程并行执行不同的任务
  • 线程是进程的一条流水线,只用来执行程序,不涉及资源的申请,是程序执行的最小执行单元
  • 多个线程共享同一块内存,通过共享的内存空间来进行交互

3.进程与线程的区别

  • 根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
  • 资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
  • 包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
  • 内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的
  • 影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
  • 执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行

4.进程与线程的联系

  • 进程需要分配一大部分的内存,而线程只需要分配一部分堆栈去就可以
  • 一个程序至少有一个进程,一个进程至少有一个线程
  • 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行

5.进程状态

进程在运行过程中,不断改变其运行状态,通常一个运行的进程包含三个状态:就绪态,运行态,阻塞态

  • 就绪态:当进程分配到处CPU以外的所有必要资源后,只要在获得CPU,就可以执行程序,程序这时的状态就叫做就绪态,一个系统中处于就绪态得进程可以有多个,通常把就绪态的进程拍一个序列,叫做就绪队列

  • 运行态:进程获得所有所需资源以及CPU操作权限正在运行时,叫做运行态,在单核操作系统中,只有一个进程处于运行态 ,多核操作系统可以有多个进程处于运行态

  • 阻塞态:正在运行的操作系统,由某一个事件(IO操作,打印等)而无法执行时,便被操作系统剥夺了CPU操作时间,进入阻塞状态
    在这里插入图片描述

  • 进程状态之间的转换

    • 就绪态 --> 运行态:处于就绪态的进程, 当进程调度程序为之分配了CPU的时间片后, 该进程就会由就绪态转变成运行态
    • 运行态–>就绪态:处于运行态的进程在运行过程中, 因为分配的时间片用完了, 于是失去了CPU的使用权限, 运行态就会重新转为就绪态
    • 运行态–>阻塞态:正在运行的进程由于遇到I/O操作或被更高优先级的任务抢走CPU使用权限而无法继续执行, 便从运行态转为阻塞态
    • 阻塞态–>就绪态:处于阻塞态的进程, 若其等待的事情已经处理完毕, 于是进程从阻塞态转为就绪态

6.进程池

进程池是资源进程,管理进程组成的技术应用。进程池定义了一个池子,上面放置固定数量的进程,有需求来了,就拿一个池中的进程来处理任务。等到任务处理完毕,进程并不关闭,而是有进程池进行回收等待其他任务继续执行。如果有多个任务需要执行,池中进程数量不够时,任务需要等待之前的进程执行任务完毕归来,拿到空闲进程继续执行。进程池中进程的数量是固定的,同一时间最多有固定时间的进程在运行。使用进程池湖不会增加操作系统 对进程调度的难度,而且还节约了开关进程的时间,一定程度上可以实现并发的效果。

  • 资源进程:预先创建好的空闲进程,管理进程会把资源分发到空闲进程来处理
  • 管理进程:负责创建资源进程,把工作交给空闲资源进程进行处理,回收已经完成工作任务的资源进程
  • 资源进程与管理进程的交互:通过PCI,信号,信号量,消息队列,管道等进行交互
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heromps

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值