了解进程与线程

35岁危机
• 阅读 1089

前言

进程与线程的区别是每年考试的核心,也是面试官最爱问的问题。弄清楚二者的区别,首先要弄清楚进程与线程是什么。

进程

打开我们的任务管理器,我们可以看到当前在电脑运行的所有进程
了解进程与线程
比如说我打开了三个qq,那么就启动了三个qq进程,但是qq程序在磁盘里就一份可执行文件。这就引出了程序与进程的区别:
程序是静态的,就是存放在磁盘里的可执行文件,就是一系列的指令集合。
进程是动态的,是程序的一次执行过程。同一个程序多次执行会对应多个进程。
为了区分这三个进程,每个进程都会被操作系统分配一个唯一的不重复的进程号————PID。
一个进程里的程序能够执行,操作系统就需要给他分配资源。不是说我把可执行文件拿过来就可以运行,运行肯定还需要分配内存来缓存各种信息,如聊天记录等,同时,有的程序还需要使用I/O设备,如wps需要使用打印机时,需要给他分配打印机。于是,操作系统需要记录给进程分配了哪些资源。
同时,操作系统也需要记录进程的运行情况,如CPU使用时间、磁盘使用情况、网络流量使用情况等。
这些信息被保存在一个专门的数据结构PCB(Process Control Block)中,即进程控制块。
PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB。
了解进程与线程
当程序被调用时,除了创建PCB保存进程的各种信息外,程序文件也会被放入内存里,同时,程序运行中产生的各种数据也会放入内存。所以说,一个进程实体(进程映像)由PCB、程序段、数据段组成。
说了这么多进程的知识,为什么要有进程呢?
当产生多道操作系统后,允许了多个程序并发执行。但是多个程序并发执行又会有一些问题,多个程序都去请求一个资源,就会导致资源不知道听谁的,同时也会导致资源不够用的问题。多个程序并发执行也使得程序之间失去了封闭性,导致A程序更改B程序操作的问题。针对这些问题,提出了进程的概念。当创建进程时,也对应的给他分配所需要的资源,使得使用资源之间不再有冲突。同时在进程之间不得互相影响,解决了封闭性问题。
所以说,进程是系统进行资源分配和调度的一个独立单位。一个进程可以独立运行。

线程

了解进程与线程
引入进程后,更好的使得多道程序并发执行,提高了资源利用率。但是因为进程间的资源相互独立,所以进程间切换是资源的切换,开销相当大。同时也使得一个程序可以并发执行各种功能,如qq拥有视频聊天和文字聊天两个功能,如果仅仅使用进程,进程成了CPU调度的基本单位,CPU只会为进程分配一个核心,无法并发执行两个功能。为了解决这些问题,引入了线程的概念。
线程最直接的理解就是“轻量级进程”。线程代替进程成为了CPU调度的一个最小单位。而进程依然是资源分配的最小单位。一个进程拥有多个线程,线程不拥有系统资源,而是访问其隶属进程的系统资源,同一进程的线程之间资源共享。
了解进程与线程
不仅进程之间可以并发执行,多个线程之间也可以并发执行,从而使系统具有了更好的并发性。

4核8线程

4核代表4个核心,也就是可以同时执行4个线程。
那么8线程是什么呢,原来CPU使用了一种超线程技术,使得每一个核心在执行一个线程剩余的资源,拿去执行另外一个线程,也就是说,其实CPU拥有4个核心,但是可以并发执行8个线程。
超线程技术在桌面端很有用,但是到了服务器端,并不被使用,也就是说,他也是有弊端的。

总结

进程是资源分配的基本单位,线程是CPU调度的基本单位。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java多线程总结
线程或者说多线程,是我们处理多任务的强大工具。线程和进程是不同的,每个进程都是一个独立运行的程序,拥有自己的变量,且不同进程间的变量不能共享;而线程是运行在进程内部的,每个正在运行的进程至少有一个线程,而且不同的线程之间可以在进程范围内共享数据。也就是说进程有自己独立的存储空间,而线程是和它所属的进程内的其他线程共享一个存储空间。线程的使用可以使我们能够并行
DevOpSec DevOpSec
4年前
python多线程原理和详解(一)
python多线程原理和详解线程概念1.线程是什么?线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
Wesley13 Wesley13
3年前
java线程
1.进程和线程的区别是什么?进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫轻量级进程。2.创建线程有几种不同方式?你喜欢哪种?为什么?有三种方式可以用来创建线程:继承Thread类实现Runnable接口应用程序可以使用Executor框架来创建线程池实现Runnabl
lucien-ma lucien-ma
4年前
什么是线程?什么是进程?
Java多线程基础进程和线程的概念应用程序是静态的概念,进程和线程是动态概念,有创建就有销毁,存在也是暂时的,不是永久性的。进程与线程的区别在于进程在运行时拥有独立的内存空间(每个进程所占有的内存都是独立的)多个线程是共享内存空间的,但是每个线程的执行时相互独立的,同时线程必须依赖于进程才能执行,单独的线程是无法执行的,由进程来控制多个线程的执行。
Stella981 Stella981
3年前
Noark入门之线程模型
0x00单线程多进程单线程与单进程多线程的目的都是想尽可能的利用CPU,减少CPU的空闲时间,特别是多核环境,今天咱不做深度解读,跳过...0x01线程池锁最早的一部分游戏服务器是采用线程池的方式来处理玩家的业务请求,以达最大限度的利用多核优势来提高处理业务能力。但线程池同时也带来了并发问题,为了解决同一玩家多个业务请求不被
Wesley13 Wesley13
3年前
Java 并发编程:进程、线程、并行与并发
一谈到Java并发编程,我们一般就会联想起进程、线程、并行、并发等等概念。那么这些概念都代表什么呢?进程与线程有什么关系?并发与并行又是什么关系呢?进程与线程进程是指程序的一次动态执行过程,通常我们说计算机中正在执行的程序就是进程,每个程序都会对应着一个进程。一个进程包含了从代码加载到执行完成的一个完整过程,它是操作系统资源分配最小单
Wesley13 Wesley13
3年前
Java并发编程:进程、线程、并行与并发
一谈到Java并发编程,我们一般就会联想起进程、线程、并行、并发等等概念。那么这些概念都代表什么呢?进程与线程有什么关系?并发与并行又是什么关系呢?01 进程与线程进程是指程序的一次动态执行过程,通常我们说计算机中正在执行的程序就是进程,每个程序都会对应着一个进程。一个进程包含了从代码加载到执行完成的一个完整过程,它是操作系
Stella981 Stella981
3年前
Python 浅析线程(threading模块)和进程(process)
    线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务进程与线程什么是线程(threading)?Athreadisanexecutioncontext,whichisall
Wesley13 Wesley13
3年前
Java线程与多线程
1线程与多线程1.1线程是什么?线程(Thread)是一个对象(Object)。用来干什么?Java线程(也称JVM线程)是Java进程内允许多个同时进行的任务。该进程内并发的任务成为线程(Thread),一个进程里至少一个线程。Java程序采用多线程方式来支持大量的并发请求处理,程序如果在
Stella981 Stella981
3年前
20175216 《Java程序设计》第十周学习总结
教材学习内容总结第12章Java多线程机制12.1进程与进程程序是一段静态的代码,进程是程序的一次动态执行过程,这个过程也是进程本身从产生、发展至消亡的过程。线程不是进程,是比进程更小的执行单位。但与进程不同的是,线程的中断和恢复可以更加节省系统的开销。没有进程就没有线程。
可莉 可莉
3年前
20175216 《Java程序设计》第十周学习总结
教材学习内容总结第12章Java多线程机制12.1进程与进程程序是一段静态的代码,进程是程序的一次动态执行过程,这个过程也是进程本身从产生、发展至消亡的过程。线程不是进程,是比进程更小的执行单位。但与进程不同的是,线程的中断和恢复可以更加节省系统的开销。没有进程就没有线程。