进程和线程

进程

进程是操作系统进行资源分配的基本单位。对于操作系统来说,一个运行的程序就是一个进程。
一个程序一般指一个可执行的文件(.exe),当点击这个文件的时候,操作系统就会把这个文件从磁盘加载到内存中,并且开始有CPU执行这个程序中的代码,执行这个代码的过程就称为进程(process)。

操作系统管理进程:每个进程都会创建一个结构体(对象),称为“进程控制块(PCB)”,内核中使用一个双向链表,把所有的PCB对象串到一起。当任务管理器显示进程信息时,遍历内核中的链表,取出每个PCB对象,再打印这个对象的属性即可;当创建新的进程的时候,本质上就是创建了一个PCB对象,然后把这个对象加到链表中;当销毁已有进程的时候,本质上也就是把该进程对应的PCB对象从链表中删除。

进程持有一些操作系统的资源:CPU资源(进程中的代码需要在CPU执行)、内存资源、占据磁盘IO(持有一些文件资源)、占据网络IO(通过网卡来上传一定的数据)

对于操作系统来说,同一时刻,运行着很多的进程。一个进程可以有多个线程。

时间片

操作系统的任务调度是采用时间片轮转的抢占式调度方式,一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。
任务执行的一小段时间叫做时间片。任务正在执行时的状态称为运行状态。任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就处于就绪状态等待下一个它的时间片的到来。

并发和并行

并发:在微观上看,一个CPU同一时刻只执行一个程序的代码,一个一个串行执行;在宏观上看,CPU执行效率非常高,时间片非常短,切换进程的速度比较快,就好像一个CPU同时执行多个进程的代码。
并行:多个进程在多个CPU下同时进行运行。
进程的调度:

并发/并行引入的目的只有一个:提高程序效率

进程状态
  • 就绪:进程处于可运行的状态,只是CPU时间片还没有轮转到该进程,则该进程处于就绪状态。
  • 运行:进程处于可运行的状态,且CPU时间片轮转到该进程,该进程正在执行代码,则该进程处于运行状态。
  • 阻塞:进程不具备运行条件,正在等待某个事件的完成。

线程

线程是系统调度执行的最小单位,是一个进程内部的多个运行单位。每个线程都有一套自己要执行的逻辑,一个进程中可以同时有多个这样的要执行的逻辑,然后让这些逻辑并发式的执行。
一个进程中可能包含着很多线程,但是一个进程至少有一个线程存在。
一个进程内的线程之间是可以共享资源的,比如:内存和管理的文件。
如果某个线程出现异常,并且没有得到很好的处理的话,此时就会导致整个进程直接被终止。
线程的数量提升会提高并发程度,也就能提高程序的执行效率,但是也不是线程越多越好。线程的多少和CPU的核数相关,,也和当前线程执行的任务类型相关。

进程和线程的区别

  • 进程是操作系统进行资源分配的基本单位,线城是系统调度执行的最小单位。
  • 进程和进程之间,资源是相互独立的,是为了保证系统的稳定性,不会因为一个进程出现Bug崩溃,导致其他进程崩溃。线程和线程之间资源共享,是为了编程方便,能更方便的实现一些并发任务。
  • 线程比进程更轻量。创建一个线程的成本比创建进程低,销毁一个线程的成本也比销毁进程低。原因是:进程是分配资源的最小单位,每次创建进程都得分配一堆配套的资源,而线程的资源可以和其他同进程中的线程共享,不需要重新分配。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值