进程和线程的区别和linux运行状态查看简单

作者&投稿:黄世 (若有异议请与网页底部的电邮联系)
~

要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解。

进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。

线程,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。因此,操作系统中线程的概念便被引进了。线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。

说到这里,我们对进程与线程都有了一个大体上的印象,现在开始说说二者大致的区别。

进程的执行过程是线状的,尽管中间会发生中断或暂停,但该进程所拥有的资源只为该线状执行过程服务。一旦发生进程上下文切换,这些资源都是要被保护起来的。这是进程宏观上的执行过程。而进程又可有单线程进程与多线程进程两种。我们知道,进程有 一个进程控制块 PCB ,相关程序段 和 该程序段对其进行操作的数据结构集 这三部分,单线程进程的执行过程在宏观上是线性的,微观上也只有单一的执行过程;而多线程进程在宏观上的执行过程同样为线性的,但微观上却可以有多个执行操作(线程),如不同代码片段以及相关的数据结构集。线程的改变只代表了 CPU 执行过程的改变,而没有发生进程所拥有的资源变化。出了 CPU 之外,计算机内的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。与进程控制表和 PCB 相似,每个线程也有自己的线程控制表 TCB ,而这个 TCB 中所保存的线程状态信息则要比 PCB 表少得多,这些信息主要是相关指针用堆栈(系统栈和用户栈),寄存器中的状态数据。进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;反之,线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。

线程可以有效地提高系统的执行效率,但并不是在所有计算机系统中都是适用的,如某些很少做进程调度和切换的实时系统。使用线程的好处是有多个任务需要处理机处理时,减少处理机的切换时间;而且,线程的创建和结束所需要的系统开销也比进程的创建和结束要小得多。最适用使用线程的系统是多处理机系统和网络系统或分布式系统。

———————————-

1. 线程的执行特性。

线程只有 3 个基本状态:就绪,执行,阻塞。

线程存在 5 种基本操作来切换线程的状态:派生,阻塞,激活,调度,结束。

2. 进程通信。

单机系统中进程通信有 4 种形式:主从式,会话式,消息或邮箱机制,共享存储区方式。

主从式典型例子:终端控制进程和终端进程。

会话式典型例子:用户进程与磁盘管理进程之间的通信。

———————————-

参考书籍:计算机操作系统教程(第 3 版)清华大学出版社张尧学 史美林 张高

在java编程中就经常用到进程和线程的概念。

1、线程:程序中单独顺序的控制流

线程本身依靠进程运行,不能独立存在,线程是进程中的顺序控制流,只能使用系统分配给进程的资源和环境,线程没有独立的地址空间。

2、进程:执行中的程序

系统会为每个进程创建一个PID,一个进程可以包含一个或多个线程,一个进程至少包含一个线程,每个线程也会有自己的ID,但是这只是在它所属的进程之内,不属于系统ID。

3、单线程:程序中只存在一个线程,实际上函数运行的主方法就是一个主线程

4、多线程:就是在一个进程中运行多个任务,多线程的目的是为了更好地使用CPU资源。

前台和后台

我们这里也要注意前台和后台的区别,前台一般就是我们能够看到的正在执行的程序,一般系统的很多服务都是以后台的形式存在,也就是我们看不到它们在执行,但是它们一般都会常驻在系统中,直到关机才会结束。

linux中查看进程的ps和top

ps指令主要是用来查看目前系统中,有哪些进程正在执行,以及他们执行的状况。

ps -a 显示当前终端的所有进程信息

ps -u 以用户的格式显示进程信息

ps -x 显示后台进程运行的参数123

可以根据进程的PID来终止进程

kill 进程PIDkill -9 进程PID //强制终止进程12

此外可以使用killall命令以名字的方式来杀死进程

进程动态监控top

1、监视特定用户

先执行top命令,再输入u,之后再输入需要监视的用户,然后回车即可,你将会看到显示的进程都是你所指定的用户正在运行的程序

2、杀死特定进程

先执行top命令,再输入k,再输入你要杀死的进程ID,然后回车即可。

3、指定动态刷新时间

top -d 10 //指定系统更新进程的时间为10秒1

PS:我们从top显示的内容可以获取一些有用的信息,其中zombie代表的是僵尸进程,即计算机无法回收内存的进程,Load average显示的是当前计算机负载情况,当这些值很高的时候说明计算机CPU占用率很高,需要注意。还有显示了计算机存储空间的使用情况。其中PID=1的进程是系统初始运行的总进程,很多进程都是由它开启的,这是一个特别重要的进程。

监控网络状态信息

显示网络统计信息的命令netstat,此命令用来显示整个系统目前的网络情况,例如目前的链接,数据包传递数据或是路由表内容。

netstat -an//按一定顺序排列netstat -anp //加上p就会显示进程号和相关程序12

显示数据包经历历程命令

traceroute 域名或者IP1

特别要注意在windows下面该命令是tracert

route命令用于显示和操作IP路由表




E5+2650L十核二十线程和E5 2680八核十六线程哪个好?
E5 2680八核十六线程要好一些,制程更先进,功耗更低,性能更强,当然可能就更贵。

L5640 6核12线程处理器和酷睿I7 920的介绍?
L5640 6核12线程处理器:DiskGenius是一款磁盘管理及数据恢复软件。支持对GPT磁盘(使用GUID分区表)的分区操作。DiskGenius硬盘恢复软件除具备基本的分区建立、删除、格式化等磁盘管理功能外,还提供了强大的已丢失分区搜索功能、误删除文件恢复、误格式化及分区被破坏后的文件恢复功能、分区镜像备份与还原功能、...

东风本田XRV1.5L和1.5T有什么区别?
1.5L发动机指的是排量为1.5升的自然吸气发动机,1.5T发动机是指排量为1.5升的涡轮增压发动机,二者的区别是一个涡轮增压器。当然这两台发动机的动力和价格也不一样,1.5L用的是本田自主研发的地球梦科技发动机,代号L15B2,。1.5T代号L15BP。

linux多线程定时器的使用linux定时线程
返回值返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。#includeunistd.h>#includesignal.h>voidhandler(){\/\/这里读跳变次数}main(){inti;signal(SIGALRM,handler);\/\/这里设置时钟信号的响应函数alarm(1);\/\/这里设置每一秒钟发送一个时钟信号} linux内核中,工作队列和线程有什么区别?workqueue是一...

求问1366平台下,服务器CPU至强一共分几个系列,定位区别是什么?
共有四个系列:E56xx、X56xx、L56xx、W3680。其中有四核心、八线程的也有六核心、十二线程的。L代表60W以下的低功耗版;E代表80W的版本;X代表95W以上的版本。四核的7款,六核的6款,总共13款CPU。四核处理器即是基于单个半导体的一个处理器上拥有四个一样功能的处理器核心。换句话说,将四个...

Java中IO与NIO的区别和使用场景
非阻塞IO处理连接的线程数和连接数没有联系,也就是说处理 10000个连接非阻塞IO不需要10000个线程,你可以用1000个也可以用2000个线程来处理。因为非阻塞IO处理连接是异步的。当某个链接发送请求到服务器,服务器把这个连接请求当作一个请求"事件",并把这个"事件"分配给相应的函数处理。我们可以把这个...

IntelXeon E5-2640和IntelXeon E5-2648L v2有什么区别
E5 2640是intel至强E5 V1系列,核心代号为Sandy Bridge-EP(二代Sandy Bridge架构的加强版),核心数为六核十二线程,主频2.5睿频3G,三级缓存为15M,最大支持内存384G,TDP设计为95W。E5 2648L v2是intel至强E5 V2系列,核心代号为Ivy Bridge-EP,核心数为十核心二十线程,主频1.9睿频2.5,三级...

至强L5420支持超线程吗?
至强L5420不支持超线程技术。至强L5420具有4个物理内核,但是不支持超线程技术,为4核4线程的CPU。其主要技术参数如下:

电脑i3,6100和l5.6400t有什么区别
i3 6100CPU是双核四线程CPU,而i5 6400T是四核四线程CPU,i5 6400T的性能要大幅度高于i3 6100。

Android中的Handler详解以及和Thread的区别
接受消息,处理消息 ,此Handler会与当前主线程一块运行 \/ class MyHandler extends Handler { public MyHandler() { } public MyHandler(Looper L) { super(L);} \/\/ 子类必须重写此方法,接受数据 Override public void handleMessage(Message msg) { \/\/ TODO Auto-generated method stub Log.d("...

荔湾区13090547153: 进程和线程的区别和linux运行状态查看简单 -
燕奋双黄: 要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解.进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一个进程都有一个自己的地址空间,即进程空间或...

荔湾区13090547153: 在windows中的进程、线程和在linux中的进程、线程有什么区别?
燕奋双黄:WINDOS里的进程/线程是继承自OS/2的.在WINDOS里,"进程"是指一个程序,而"线程"是一个"进程"里的一个执行"线索".从核心上讲, WINDOS的多进程与Linux并无多大的区别,在WINDOS里的线程才相当于Linux的进程,是一...

荔湾区13090547153: Linux中进程和线程的对比与区别 -
燕奋双黄: 线程和进程是另一对有意义的概念,主要区别和联系如下:进程是操作系统进行资源分配的基本单位,拥有完整的进程空间.进行系统资源分配的时候,除了CPU资源之外,不会给线程分配独立的资源,线程所需要的资源需要共享.线程是进程的一部分,如果没有进行显示的线程分配,可以认为进程是单线程的;如果进程中建立了线程,则可认为系统是多线程的.多线程和多进程是两种不同的概念.多线程与多进程有不同的资源共享方式.进程有进程控制块PCB,系统通过PCB对进程进行调度.进程有线程控制块TCP,但TCB所表示的状态比PCB要少的多.

荔湾区13090547153: linux 下 进程和线程的区别 -
燕奋双黄: 进程是程序的一次执行过程. 一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高.另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率. 线程在执行过程中与进程还是有区别的.每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口. 但是线程不能够独立执行,必须依存在应用程序的进程中,由进程提供多个线程执行控制.

荔湾区13090547153: linux 嵌入式 系统中 进程和线程 什么区别???跪求 一定采纳 C -
燕奋双黄: 1 二者存在从属关系:一个进程可以包含多个线程2 进程之间不可以共享资源(各自的代码段、数据段等),但线程间是共享同一个进程的所有资源的

荔湾区13090547153: linux 进程与线程的区别 -
燕奋双黄: 当把进程设计成同一时刻能够做不止一件事,那么这些事就可以用线程去处理!即多线程操作,这个时候要注意共享数据的加锁,比如全局变量!

荔湾区13090547153: linux 下 进程和线程的定义和关系. -
燕奋双黄: 1.进程: 执行中的目标代码,正在运行的程序,它不仅包括目标代码,还有数据、资源、状态和虚拟的计算机.在linux中,最常见的可执行格式是elf.它包括元数据和多个代码和数据段.常见的数据段有data段,text段和bss段,每个段都存放着不同的数据.2:一个进程有一个或多个线程,它是执行进程的目标代码和维护进程状态的,它是进程的最小执行单元.它包含了堆栈,cpu状态和目标代码的位置信息.

荔湾区13090547153: linux里面,进程与线程到底有什么本质的区别? -
燕奋双黄: 在多进程情况下,每个进程都有自己的独立空间,而多线程情况下,同一进程内的线程共享进程的空间地址.因此,创建一个新的进程时就要耗费时间来为其分配系统资源,而创建一个新的线程花费的时间要少的多 在系统调度方面,由于进程地址空间独立而线程共享地址空间,线程间的切换速度要远远快于进程间的切换 在通信机制方面,进程间数据相互独立,彼此间通信要以专门的通信方式进行,通信时必须经过操作系统,而线程是数据共享的.

荔湾区13090547153: linux进程和线程的区别 面试 -
燕奋双黄: haowawa586 的例子不好, switch case语句和进程线程的概念没关系.我拿Windows举例子吧, 因为Linux的内核好像是没有线程概念的.进程和线程的区别在于粒度不同, 进程之间的变量(或者说是内存)是不能直接互相访问的, 而线程可以,...

荔湾区13090547153: linux 程序 进程 线程 区别 求简介 一定采纳 浅白一点 -
燕奋双黄: 1.程序是一组指令的有序集和2.进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位3.线程是进程的一个实体,是cpu调度和分配的基本单位,它是比进程更小的能独立运行的基本单位.具体区别可以查看豆丁网(“linux 程序 进程 线程 区别”)百度下就有.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网