title: 线程与进程
copyright: true
tags:
- 线程
- 进程
categories: - 计算机系统
author: Qian Jipeng
date: 2019-09-14 15:22:00
计算机系统中的进程与线程
写在前面
- 进程和线程都是一个对cpu工作的时间段的描述
- 进程是资源分配的最小单位,线程是cpu调度的最小单位
- 进程是线程的爸爸(开玩笑的比喻)
要知道的知识
- cpu的运算和执行速度很快、非常快,就连寄存器也只能勉强追上cpu的车尾灯,至于内存以及其他存储设备,是远远追不上cpu的处理速度的
- 计算机很笨,cpu在同一时间段只能做一件事情,我们平时的一边码代码,一边开网易云音乐,其实是cpu不断在这两个客户端软件之间来回切换,只不过切换的速度太快了,以至于我们以为cpu是同时运行的
- 计算机执行程序的过程,轮流执行,加载程序A的上下文,执行程序A,保存程序A的上下文;加载程序B的上下文,执行程序B,保存程序B的上下文;…
介绍
进程
进程是资源分配的最小单位,貌似有点抽象,就来打个比方吧。我们开了一个word,开了一个qq音乐和一个网易云音乐,那么我们的计算机中就有了三个进程(假使不存在其他的程序,假使),那么下图就是我们的cpu运行这三个程序的情况:
每个小方格都是一个cpu运行的时间片段,约100ms,cpu就是这样不断地在这些程序之间来回切换,由于时间间隔太短,所以造成了多个程序“并行运行”的假象。其实不然,这是早些年在单核cpu上出现的技术,所以说,当运行的程序过多,cpu负载越大,切换的时间也就越长,所以我们会感觉到明显的卡顿现象。于是乎,多核cpu出现了。
线程
可以说,线程是进程的儿子,一个进程可以拥有多个线程,这些线程会共享cpu为进程分配的资源,就好像多个儿子共享父亲的财产。
以qq为例,我们打开了qq,我们一边聊天,一边发图片,一边发文件,一边刷新qq消息,这些都是在我们的qq程序里面实现的,也就是说,我们做的这四个工作,都是在qq这个进程之下。
区别及联系
联系:
- 一个线程只会属于一个进程,但一个进程至少会有一个线程
- 资源分配给进程,这些资源会被它下面的线程共享
- 线程在执行过程中,需要同步协作,不同进程的线程需要依靠消息通信来实现协作
区别:
- 调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
- 并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
- 拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.
- 系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销