精华内容
下载资源
问答
  • 2020-08-02 16:24:25

    进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的?

    1. 基本概念:

    进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发

    线程是进程的子任务,是CPU调度和分派的基本单位用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等),打开的文件队列和其他内核资源

    2. 区别:
    1. 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程依赖于进程而存在。

    2. 进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。(资源分配给进程,同一进程的所有线程共享该进程的所有资源。同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。)

    3. 进程是资源分配的最小单位,线程是CPU调度的最小单位

    4. 系统开销: 由于在创建或撤消进程时,系统都要为之分配或回收资源,如内存空间、I/o设备等。因此,操作系统所付出的开销将显著地大于在创建或撤消线程时的开销。类似地,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销

    5. 通信:由于同一进程中的多个线程具有相同的地址空间,致使它们之间的同步和通信的实现,也变得比较容易。进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。在有的系统中,线程的切换、同步和通信都无须操作系统内核的干预

    6. 进程编程调试简单可靠性高,但是创建销毁开销大;线程正相反,开销小,切换速度快,但是编程调试相对复杂

    7. 进程间不会相互影响 ;线程一个线程挂掉将导致整个进程挂掉

    8. 进程适应于多核、多机分布;线程适用于多核

    进程间通信的方式:

    进程间通信主要包括管道、系统IPC(包括消息队列、信号量、信号、共享内存等)、以及套接字socket

    1.管道:

    管道主要包括匿名管道和命名管道:管道可用于具有亲缘关系的父子进程间的通信,命名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信

    • 1.1 匿名管道PIPE
    1. 它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端
    2. 只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)
    3. 它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。
    • 1.2 命名管道FIFO:
    1. FIFO可以在无关的进程之间交换数据
    2. FIFO有路径名与之相关联,它以一种特殊设备文件形式存在于文件系统中
    2. 系统IPC:
    • 2.1 消息队列
      消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标记。 (消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点)具有写权限得进程可以按照一定得规则向消息队列中添加新信息;对消息队列有读权限得进程则可以从消息队列中读取信息;

    特点:

    1. 消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。
    2. 消息队列独立于发送与接收进程。进程终止时,消息队列及其内容并不会被删除。
    3. 消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。
    • 2.2 信号量semaphore
      信号量(semaphore)与已经介绍过的 IPC 结构不同,它是一个计数器,可以用来控制多个进程对共享资源的访问。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。

    特点:

    1. 信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。
    2. 信号量基于操作系统的 PV 操作,程序对信号量的操作都是原子操作。
    3. 每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1,而且可以加减任意正整数
    4. 支持信号量组
    2.3 信号signal

    信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

    2.4 共享内存(Shared Memory)

    它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据得更新。这种方式需要依靠某种同步操作,如互斥锁和信号量等

    特点:

    1. 共享内存是最快的一种IPC,因为进程是直接对内存进行存取
    2. 因为多个进程可以同时操作,所以需要进行同步
    3. 信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问
    3.套接字SOCKET:

    socket也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同主机之间的进程通信。

    • 线程间通信的方式:
      临界区:通过多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问;
      互斥量Synchronized/Lock:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问
      信号量Semphare:为控制具有有限数量的用户资源而设计的,它允许多个线程在同一时刻去访问同一个资源,但一般需要限制同一时刻访问此资源的最大线程数目。
      事件(信号),Wait/Notify:通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作进程间通信的方式:
      进程间通信主要包括管道、系统IPC(包括消息队列、信号量、信号、共享内存等)、以及套接字socket。
    更多相关内容
  • 1. 什么是进程线程 现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。 1.1 百科解释 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和...

    1. 什么是进程和线程

    现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。

    1.1 百科解释

    进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。

    线程(thread) 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

    1.2 简单理解

    线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。

    一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。

    进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。

    线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

    1.3 总结

    进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位。

    线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。是程序执行的最小单位。

    2. 具体理解

    在Linux环境下,每个进程有自己各自独立的 4G 地址空间,大家互不干扰对方,如果两个进程之间通信的话,还需要借助第三方进程间通信工具 IPC 才能完成。不同的进程通过页表映射,映射到物理内存上各自独立的存储空间,在操作系统的调度下,分别轮流占用CPU去运行,互不干扰、互不影响,甚至相互都不知道对方。在每个进程的眼里,CPU就是他的整个世界,虽然不停地被睡眠,但是一旦恢复运行,一觉醒来,仿佛什么都没发生过一样,认为自己拥有整个CPU,一直在占有它。

    在一个进程中,可能存在多个线程,每个线程类似于合租的每个租客,除了自己的私有空间外,还跟其它线程共享进程的很多资源,如地址空间、全局数据、代码段、打开的文件等等。在线程中,通过各种加锁解锁的同步机制,一样可以用来防止多个线程访问共享资源产生冲突,比如互斥锁、条件变量、读写锁等。

    进程具有的特征:

    • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
    • 并发性:任何进程都可以同其他进行一起并发执行;
    • 独立性:进程是系统进行资源分配和调度的一个独立单位;
    • 结构性:进程由程序,数据和进程控制块三部分组成

    对于操作系统来说,它可以同时运行多个任务。你可以一边听歌,一边打游戏,一边还等着QQ开着语音聊着天,这就是多任务,至少同时有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已。对于过去的单核CPU,也可以完成这些任务,由于CPU执行代码都是顺序执行的,那么,单核CPU就轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。

    真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。

    对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。

    有些进程还不止同时干一件事,比如Word,它可以同时进行打字、拼写检查、打印等事情。在一个进程内部,要同时干多件事,就需要同时运行多个“子任务”,我们把进程内的这些“子任务”称为线程(Thread)。

    由于每个进程至少要干一件事,所以,一个进程至少有一个线程。当然,像Word这种复杂的进程可以有多个线程,多个线程可以同时执行,多线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。当然,真正地同时执行多线程需要多核CPU才可能实现。

    3. 为什么使用多线程?

      ①  和进程相比,它是一种非常“节俭”的多任务操作方式。在Linux系统中,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护其代码段、堆栈段和数据段,这种多任务工作方式的代价非常“昂贵”。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且线程间彼此切换所需要时间也远远小于进程间切换所需要的时间。

       ②  线程间方便的通信机制。对不同进程来说它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行。这种方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其他线程所用,不仅方便,而且快捷。

    4. 进程和线程的区别

    第一:什么是进程,什么是线程?

    • 进程是程序一次执行的过程,动态的,进程切换时系统开销大
    • 线程是轻量级进程,切换效率高

    第二:进程和线程的空间分配?

    • 进程:每个进程都有独立的0-3G的空间,都参与内核调度,互不影响
    • 线程:同一进程中的线程共享相同的地址空间(共享0-3G)

    第三:进程之间和线程之间各自的通信方式

    • 进程间:(7种)无名管道、有名管道、信号机制、信号灯、共享内存、消息队列、套接字socket
    • 线程间:全局变量,信号量,互斥锁
    展开全文
  • Linux下查看进程线程数的方法

    千次阅读 2020-05-21 22:47:54
    阅读文本大概需要3分钟。0x01:ps -ef只打印进程,而ps -eLf会打印所有的线程[root@centos6~]#ps-ef|greprsyslogd root...

    阅读文本大概需要3分钟。

    0x01:ps -ef只打印进程,而ps -eLf会打印所有的线程

    [root@centos6 ~]# ps -ef | grep rsyslogd
    root      1470     1  0  2011 ?        00:01:13 /sbin/rsyslogd -c 4
    root     29865 28596  0 22:45 pts/5    00:00:00 grep rsyslogd
    [root@centos6 ~]# ps -eLf | grep rsyslogd
    root      1470     1  1470  0    5  2011 ?        00:00:00 /sbin/rsyslogd -c 4
    root      1470     1 28631  0    5 Mar04 ?        00:00:04 /sbin/rsyslogd -c 4
    root      1470     1 28632  0    5 Mar04 ?        00:00:01 /sbin/rsyslogd -c 4
    root      1470     1 28633  0    5 Mar04 ?        00:00:04 /sbin/rsyslogd -c 4
    root      1470     1 28636  0    5 Mar04 ?        00:00:00 /sbin/rsyslogd -c 4
    root     29867 28596 29867  0    1 22:45 pts/5    00:00:00 grep rsyslogd
    

    rsyslogd这个进程有5个线程,所以ps -ef只有一行,而ps -eLf就有5行

    ps -eLf各字段含义

    • UID:用户ID

    • PID:process id 进程id

    • PPID: parent process id 父进程id

    • LWP:表示这是个线程;要么是主线程(进程),要么是线程

    • NLWP: num of light weight process 轻量级进程数量,即线程数量

    • STIME: start time 启动时间

    • TIME: 占用的CPU总时间

    • TTY:该进程是在哪个终端运行的;pts/0255代表虚拟终端,一般是远程连接的终端;tty1tty7 代表本地控制台终端

    • CMD:进程的启动命令

    0x02:top -H -p ${pid} 或者 top -p ${pid} 然后 shitf + H

    0x03:cat /proc/${pid}/status  或者  ls /proc/${pid}/task

    其中Threads后面跟的就是线程数

    0x04:pstree -p ${pid}

    0x05:ps -hH -p ${pid}

    [root@localhost ~]# ps -hH -p 1414
     1414 ?        Ssl    0:00 /usr/sbin/rsyslogd -n
     1414 ?        Ssl    0:00 /usr/sbin/rsyslogd -n
     1414 ?        Ssl    0:00 /usr/sbin/rsyslogd -n
    

    推荐阅读

    Spring Boot 最流行的 16 条实践

    SSM框架的面试常见问题

    【分布式】缓存穿透、缓存雪崩,缓存击穿解决方案

    阿里P7给出的一份超详细 Spring Boot 知识清单

    关注我每天进步一点点

    你点的每个在看,我都认真当成了喜欢

    展开全文
  • 进程线程面试题总结

    万次阅读 多人点赞 2017-08-11 15:55:32
    什么是线程进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程...

    1.什么是进程?什么是线程?

    进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。
    在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。
    线程概念
      线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。线程可以在处理器上独立调度执行,这样,在多处理器环境下就允许几个线程各自在单独处理器上进行。操作系统提供线程就是为了方便而有效地实现这种并发性。

     举个例子来说多线程就像是火车上的每节车厢,而进程就是火车。

    2.多进程和多线程的区别?

    我们从各个方面来看待这个问题,由下面的图片说明:

    对比维度

    多进程

    多线程

    总结

    数据共享、同步

    数据共享复杂,需要用IPC;数据是分开的,同步简单

    因为共享进程数据,数据共享简单,但也是因为这个原因导致同步复杂

    各有优势

    内存、CPU

    占用内存多,切换复杂,CPU利用率低

    占用内存少,切换简单,CPU利用率高

    线程占优

    创建销毁、切换

    创建销毁、切换复杂,速度慢

    创建销毁、切换简单,速度很快

    线程占优

    编程、调试

    编程简单,调试简单

    编程复杂,调试复杂

    进程占优

    可靠性

    进程间不会互相影响

    一个线程挂掉将导致整个进程挂掉

    进程占优

    分布式

    适应于多核、多机分布式;如果一台机器不够,扩展到多台机器比较简单

    适应于多核分布式

    进程占优

    3.进程之间的通信方式以及优缺点?

    1)管道
    管道分为有名管道和无名管道
    无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系。无明管道一般用于两个不同进程之间的通信。当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式。
    有名管道也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信。

    无名管道:优点:简单方便;缺点:1)局限于单向通信2)只能创建在它的进程以及其有亲缘关系的进程之间;3)缓冲区有限;
    有名管道:优点:可以实现任意关系的进程间的通信;缺点:1)长期存于系统中,使用不当容易出错;2)缓冲区有限
    2)信号量
    信号量是一个计数器,可以用来控制多个线程对共享资源的访问.,它不是用于交换大批数据,而用于多线程之间的同步.它常作为一种锁机制,防止某进程在访问资源时其它进程也访问该资源.因此,主要作为进程间以及同一个进程内不同线程之间的同步手段.
    优点:可以同步进程;缺点:信号量有限

    3)信号
    信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生.

    4)消息队列
    消息队列是消息的链表,存放在内核中并由消息队列标识符标识.消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点.消息队列是UNIX下不同进程之间可实现共享资源的一种机制,UNIX允许不同进程将格式化的数据流以消息队列形式发送给任意进程.对消息队列具有操作权限的进程都可以使用msget完成对消息队列的操作控制.通过使用消息类型,进程可以按任何顺序读信息,或为消息安排优先级顺序.

    优点:可以实现任意进程间的通信,并通过系统调用函数来实现消息发送和接收之间的同步,无需考虑同步问题,方便;缺点:信息的复制需要额外消耗CPU的时间,不适宜于信息量大或操作频繁的场合

    5)共享内存
    共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式,它是针对其它进程间通信方式运行效率低而专门设计的.它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步与通信.

    优点:无须复制,快捷,信息量大;缺点:1)通信是通过将共无法实现享空间缓冲区直接附加到进程的虚拟地址空间中来实现的,因此进程间的读写操作的同步问题;2)利用内存缓冲区直接交换信息,内存的实体存在于计算机中,只能同一个计算机系统中的诸多进程共享,不方便网络通信

    6)套接字:可用于不同及其间的进程通信
    优点:1)传输数据为字节级,传输数据可自定义,数据量小效率高;2)传输数据时间短,性能高;3) 适合于客户端和服务器端之间信息实时交互;4) 可以加密,数据安全性强
    缺点:1) 需对传输的数据进行解析,转化成应用级的数据。

    4.线程之间的通信方式?

     # 锁机制:包括互斥锁、条件变量、读写锁
       *互斥锁提供了以排他方式防止数据结构被并发修改的方法。
       *读写锁允许多个线程同时读共享数据,而对写操作是互斥的。
       *条件变量可以以原子的方式阻塞进程,直到某个特定条件为真为止。对条件的测试是在互斥锁的保护下进行的。条件变量始终与互斥锁一起使用。
    # 信号量机制(Semaphore):包括无名线程信号量和命名线程信号量
    # 信号机制(Signal):类似进程间的信号处理
        线程间的通信目的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制。

    5.什么时候用多线程?什么时候用多进程?

    1)需要频繁创建销毁的优先用线程
    原因请看上面的对比。
    这种原则最常见的应用就是Web服务器了,来一个连接建立一个线程,断了就销毁线程,要是用进程,创建和销毁的代价是很难承受的
    2)需要进行大量计算的优先使用线程
    所谓大量计算,当然就是要耗费很多CPU,切换频繁了,这种情况下线程是最合适的。
    这种原则最常见的是图像处理、算法处理。
    3)强相关的处理用线程,弱相关的处理用进程
    什么叫强相关、弱相关?理论上很难定义,给个简单的例子就明白了。
    一般的Server需要完成如下任务:消息收发、消息处理。“消息收发”和“消息处理”就是弱相关的任务,而“消息处理”里面可能又分为“消息解码”、“业务处理”,这两个任务相对来说相关性就要强多了。因此“消息收发”和“消息处理”可以分进程设计,“消息解码”、“业务处理”可以分线程设计。
    当然这种划分方式不是一成不变的,也可以根据实际情况进行调整。
    4)可能要扩展到多机分布的用进程,多核分布的用线程
    原因请看上面对比。
    5)都满足需求的情况下,用你最熟悉、最拿手的方式
    至于“数据共享、同步”、“编程、调试”、“可靠性”这几个维度的所谓的“复杂、简单”应该怎么取舍,我只能说:没有明确的选择方法。但我可以告诉你一个选择原则:如果多进程和多线程都能够满足要求,那么选择你最熟悉、最拿手的那个。








    展开全文
  • 进程线程和并行并发

    千次阅读 2019-01-17 16:37:40
    定义 进程 进程是具有一定独立功能的程序,关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。一个进程要是能独立运行,它必须拥有一定的资源,包括用于存放程序正文,...线程进程...
  • Linux 进程线程是如何创建的?

    千次阅读 2020-03-16 09:56:41
    上文讲了《Linux进程在内核眼中是什么样子的?》,可以理解内核关于进程线程的所有管理就通过一个结构体 —— task_struct。知道了内核眼中进程...
  • CPU 进程 线程

    千次阅读 2018-03-20 17:30:06
    1:CPU CPU是中央处理器,是一台计算机的运算核心...线程进程的实体,属于进程,是CPU调度和分派的基本单位,CPU将资源分配 给进程,所有线程共享该进程的资源。一个tomcat对应一个进程,访问 tomcat下的应用的时...
  • linux c 获取 进程 线程 id

    千次阅读 2020-05-24 09:08:02
    有些时候,需要在Log中打出进程线程的ID,以便调试、查找问题。 获取进程ID #include <unistd.h> pid_t getpid(void); 获取线程ID // 方法1 #include <sys/syscall.h> syscall(__NR_gettid) /...
  • 进程线程详解

    千次阅读 多人点赞 2018-10-11 09:44:14
    进程线程的详解 在面试中很喜欢问的一个问题就是: 进程线程的区别? 进程是资源分配的最小单位,线程是程序执行的最小单位。 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立...
  • 进程线程的区别(超详细)

    万次阅读 多人点赞 2019-10-03 21:57:46
    进程线程 进程 一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程线程 进程中的一个执行任务(控制单元),负责...
  • 进程,多线程的并发执行虽然提升了系统资源的利用率,提高了系统的性能,但是并发执行也带来了新的问题-----死锁。 死锁是指多个进程线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象...
  • Linux查看进程线程个数

    千次阅读 2015-11-15 06:18:00
    1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{print $1}'` # pstree -p `ps -e | grep server | awk '{print $1}'` | ...
  • 进程线程、协程

    千次阅读 2021-08-28 23:44:33
    进程线程、协程 一、概念与区分 1、进程 进程是程序一次动态执行的过程,是程序运行的基本单位。 每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。 进程占据独立的内存,所以上下文进程间的切换...
  • 文章目录进程线程进程和线程的区别和联系区别联系举例说明进程和线程的区别进程/线程之间的亲缘性协程线程(执行一个函数)和协程的区别和联系协程和多线程的优势?为什么有了多线程还要引入协程?更多参考 进程 ...
  • 进程-线程-多线程 1、进程(process) 狭义定义:进程就是一段程序的执行过程 简单的来讲进程的概念主要有两点: 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)...
  • C++ 进程线程优先级设置

    万次阅读 2015-04-08 16:04:17
    关于VC中程序进程优先级设置,可以包含 windows.h 头文件,然后添加下面这句话就可以 SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
  • 进程线程及堆栈关系的总结

    万次阅读 多人点赞 2011-05-08 17:23:00
    进程线程及堆栈关系的总结 突然想到进程的栈和线程的栈,就顺便说一下,线程的栈被自动分配到进程的内存空间中 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对...
  • 进程(process)和线程(thread)是操作系统的基本概念 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程进程的一个实体,是CPU调度和分派的基本...
  • 进程线程及协程的区别

    千次阅读 多人点赞 2020-10-21 22:53:06
    一、概念 **进程:**进程是一个具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统...一个线程组中多个线程共享一个进程的地址空间,一个线程的非法操作会使整个进程崩溃。 **3、上下文切换开销区别:**
  • 进程 线程 协程 详细讲解

    万次阅读 2020-06-12 09:57:51
    进程时分配资源的单位 线程是调度的基本单位 多核CPU下,各个线程也可以分派到...内存地址空间资源是独立,减少进程的开销,引入了线程,不同进程线程切换会导致切换 引入 cpu变态 会涉及资源消耗 ...
  • linux查看进程线程的方法

    万次阅读 2019-05-17 10:54:21
    在Linux中查看线程数的三种方法 ...否则,它一行显示一个进程。 2、ps xH 手册中说:H Show threads as if they were processes 这样可以查看所有存在的线程。 3、ps -mp <PID> 手册中说:m Show threads...
  • 进程线程的区别(c++)

    千次阅读 2019-06-17 16:57:26
    进程线程的区别 进程 process 什么是进程 一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位 进程与程序的差别 进程是一个动态的概念,而程序只是一组指令。 ...
  • 进程线程和协程之间的区别和联系

    万次阅读 多人点赞 2018-10-06 14:56:24
    一、进程   进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,所以...
  • Linux进程查看命令 PS命令 1.不带参数的ps使用 2.显示所有的当前进程 ps –ax -a 代表 all。同时加上x参数会显示没有控制终端的进程。 ps -ax | less 可以结合less命令和管道来使用以方便查看。 3.通过cpu和...
  • 进程线程、协程和管程的区别

    千次阅读 2019-07-25 19:53:54
    操作系统的诞生是为了运行用户程序,事实上程序运行在操作系统上就变成了进程,现在就来让我们一起了解一下进程相关的内容。 进程 根据理解,我们可以对进程下个定义——进程是运行中的程序。注意,进程是一个动态的...
  • 进程线程的区别,举例易懂

    千次阅读 2022-04-17 17:24:51
    好了,其实进程就是一个应用程序的运行,那么线程就是这个应用程序的各个功能正常运行。 比如,咱们玩的GTA5,就是侠盗猎车手5,我们当点击那个exe的运行图标时,那个应用程序就能运行了,如上图。一个游戏就是进程...
  •  并发、并行、串行、同步、异步、阻塞、非阻塞、进程线程、协程是并发编程中的常见概念,相似却也有却不尽相同,令人头痛,这一篇博文中我们来区分一下这些概念。 2 并发与并行  在解释并发与并行之前,我们...
  • 进程线程概念

    万次阅读 多人点赞 2018-09-18 15:34:48
    进程的定义: 进程是指一个具有一定独立功能的程序,在一个数据集合上的一次动态执行过程。 如下图所示,源代码文件经过编译链接形成可执行文件,将可执行文件加载进内存进行执行。为什么要加载进内存呢?这是...
  • linux 程序 进程 线程的关系

    万次阅读 2018-03-19 20:10:20
    程序 定义:通常为二进制文件存放在存储媒介中(硬盘,光驱,软盘等),已物理文件的形式存在。 启动程序,通常要运行某个文件,这个文件... 一个标识符(PID),可以说进程就是一个运行中的程序。 用户在启动...
  • 进程 线程 程序的区别与联系

    千次阅读 2011-10-31 13:53:47
    进程和程序区别和联系表现在以下方面:  1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。 进程是一个动态的实体,它有自己的生命...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 954,710
精华内容 381,884
关键字:

进程线程