进程和线程的概念(超详细)

操作系统

windows,android,ios
1.对下管理各种硬件设备
2.对上提供给各个软件稳定的运行环境
在这里插入图片描述
比如:某个软件程序,想要操作某个硬件设备,此时就需要通过操作系统。

进程(process)

进程是将可执行程序(.exe)文件加载到内存中,系统分配资源,执行程序中的指令。

进程是操作系统进行分配资源的基本单位。
每个进程之间都是独立的

引入进程的目的

引入进程的目的就是能够实现多个任务,并发执行的效果。进程比较重量,频繁创建销毁,成本高。

调度

确定某种规则来确定这些任务的执行顺序。

进程调度

我们假设在一个单核处理器的系统中,同一时刻只有一个进程可以拥有处理器资源,那么其他的进程只能在就绪队列中等待,等到处理器空闲之后才有计划获得处理器资源来运行。在这种场景下,操作系统就需要从众多的就绪进程中选择一个最合适的进程来运行

PCB的概念

概念:操作系统为了每个进程都维护了一个PCB, 用于保存该进程的有关的各种状态信息。
一个进程存在则必定会有一个PCB(若一个进程有多个线程就有多个PCB),PCB是进程存在的唯一的标志, 如果进程消失, 则对应PCB也随之消失,操作系统用PCB来描述进程的基本情况以及运行变化过程
PCB 是进程实体的一部分,记录非常重要的信息。
作用:是使一个在 多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程 并发执行的进程。

OS是根据PCB对并发执行的进程进行控制和管理的。

进程管理(进程多了,才需要管理)

在操作系统中跑着很多进程,操作系统需要把进程管理安排好
所谓的管理,其实分为两步:
1、描述一个进程:使用结构体,将一个进程有哪些信息,表示出来。
2、组织这些进程:使用一定的数据结构,把这些结构体放在一起。
换言之:每个进程都有一个PCB,通过双向链表管理。

进程的结构体(PCB)有哪些属性?

1、pid :每个进程需要有一个唯一的身份标识
2、内存指针 :当前这个进程使用的内存是哪一部分
3、文件描述符表 :进程每次打开一个文件,就会产生一个“文件标识符”(标识了这个被打开的文件),一个进程可能会打开很多文件,对应了一组文件描述符,把这些文件描述符放到一个顺序表这样的结构里,就构成 “文件描述符表”,总结也就是说:进程运行的时候,使用了那些硬盘上的资源。
进程的运行,需要从操作系统这里申请资源,进程是操作系统进行资源(内存,硬盘,cpu)分配的基本单位。
4、接下来这一组属性,都是描述和CPU资源相关的属性,这些属性都是辅助进行,进程调度

进程调度需要PCB提供的一些属性

a)进程状态:就绪态,执行态,阻塞态
b)进程的优先级:进程调度的时候的优先级,优先级高则先执行
c)进程的上下文:上下文是指当前进程执行到了哪里这样的“存档记录”,进程离开时就把当前运行中间结果存档(寄存器中的值),当下次进程回到cpu上时,在恢复存档(恢复值),从上次位置继续执行。
d)进程的记账信息:统计每个进程在CPU上都执行了多久了

并行和并发

并行:同一时刻两个核心同时运行两个进程,此操作称为并行。
并发:一个核心通过快速调度去调用不同的进程,因为速度极快宏观上可以认为是并行。

操作系统是如何访问每个进程的呢?

操作系统使用双向链表组织PCB,操作系统通过将PCB添加到双向链表中,通过链表就能够访问每一个进程。

线程

为什么要有线程?

1、多进程为了并发编程提高CPU利用率,但是如果频繁创建/销毁进程这时效率就会大大减低。因为创建/销毁进程需要一个进程包含一个或多个线程,每个线程都是一个独立的执行流,多个线程之间,也是并发(并行+并发)执行的。
2、多个线程可能是在多个cpu核心上,同时运行,也可能是在一个核心上通过快速调度,进行运行。
3、操作系统真正调度的是线程,而不是进程,前面所说的“调度进程”指的是这些进程里面只有一个线程。线程是操作系统调度运行的基本单位
一个进程中的多个线程之间,共用一份系统资源
1)内存空间
2)文件描述符表
在这里插入图片描述

进程和线程的区别

1、进程包含线程
2、进程是有自己独立的内存空间和文件描述符表,同一个进程中的多个线程之间,共享同一份地址空间和文件描述符表
3、进程是操作系统资源分配的基本单位,线程是操作系统调度执行的基本单位
4、进程之间具有独立性一个进程挂了,不会影响另一个;同一个进程里的线程之间,一个线程挂了,可能会把整个进程带走,影响到其他线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值