---- 保持更新,资源来源自操作系统课件。转载请注明出处。
进程间关系与守护进程 进程组 之前我们提到了进程的概念, 其实每一个进程除了有一个进程 ID(PID)之外 还属于一个进程组。进程组是一个或者多个进程的集合, 一个进程组可以包含多个进程。...还有一种情况,我们没考虑到,如果是父子进程之间呢?会有什么样的关系?...当我们在使用远程登录Xshell的时候,远端服务器会给我们做鉴权,我们登录成功之后系统会分配给我们一个终端文件,如下所示: 最开始我们只连接了一个客户端,此时在 /dev/pts 目录下就是我们的终端文件...建立与控制终端连接的会话首进程被称为 控制进程。 一个会话中的 几个进程组可被分成一个前台进程组以及一个或者多个后台进程组。..., 也就表示已经不属于当前的会话了,而SID同样与当前进程的SID不同,并且SID为守护进程的pid。
--- 乌龟大师 《功夫熊猫》--- 进程间关系与守护进程 1 进程组 2 会话 3 控制终端 4 作业控制 5 守护进程 1 进程组 之前我们提到了进程的概念, 其实每一个进程除了有一个进程 ID...进程组组长的作用: 进程组组长可以创建一个进程组或者创建该组中的进程 进程组的生命周期: 从进程组创建开始到其中最后一个进程离开为止。...控制终端是保存在 PCB 中的信息, 我们知道 fork 进程会复制 PCB中的信息, 因此由 Shell 进程启动的其它进程的控制终端也是这个终端。...另外会话、 进程组以及控制终端还有一些其他的关系。...我们在下边详细介绍一下: 一个会话可以有一个控制终端, 通常会话首进程打开一个终端(终端设备或伪终端设备) 后, 该终端就成为该会话的控制终端。 建立与控制终端连接的会话首进程被称为控制进程。
,因此我们可以知道: 前台进程:用户直接与之交互的任务或程序。...、父子关系之外,还有组内关系 也就是说多个进程组如果通过管道级联或者通过某种方式让几个进程协作起来,那么这些进程它们的 PGID 所对应的值其实是多个进程当中创建的第一个进程 pid,以第一个进程作为自己的老大...建立与控制终端连接的会话首进程被称为 控制进程 一个会话中的几个进程组可被分成一个前台进程组以及一个或者多个后台进程组。...由 bash 创建一个 子进程 或者 进程组,如果进程组中只有一个进程,那么就是单进程的进程组 然后如果不想受登录退出的影响,那么就要把它独立形成一个新的会话,那么此进程与bash 的关系 从 包含 -...,终端为问号,TPGID = -1,表示其已经与终端去关联了 现在我们就可以把终端关掉了,然后该进程就在我们的云服务器上 24 小时运行了,此时我们也可以把它上传到网上进行使用的,来随时访问了 使用 killall
采购人员、厨师、服务员和清洁人员相互协作,各司其职,共同为顾客提供美食和良好的用餐体验。这种协作和资源共享是一个进程能够提供功能的关键因素。 4. 线程与进程的关系 线程和进程之间存在密切的关系。...线程的执行可以提高程序的并发性和响应性,而进程的隔离性保证了不同进程之间的独立性。 5. 共享与通信 线程和进程之间的关系还体现在资源的共享和通信上。...进程间的通信则需要使用特定的机制,如管道、消息队列、共享内存等。 6. 并发编程与资源管理 线程和进程的关系在并发编程和资源管理中起着重要的作用。...进程的隔离性和资源管理机制使得不同进程可以独立运行,并且操作系统可以对进程进行资源分配和调度。 7. 总结 线程与进程是操作系统中的两个重要概念,它们之间既有相互包含的关系,也有明显的区别。...通过本文的介绍,希望读者能够深入理解线程与进程的关系,并在实际应用中灵活运用,从而构建出更可靠、高效的软件系统。
9501端口 $serv = new swoole_server("127.0.0.1", 9501); $serv->set(array( 'worker_num'=>8, // worker 进程数...CPU 1~4 倍 'max_request'=>1000 )); /** * $fd:客户端连接的唯一标识 * $reactor_id: 线程id */ //监听连接进入事件 //...\n"; }); //启动服务器 $serv->start(); //使用 telnet 127.0.0.1 9501 // netstat -anp|grep 9501 tcp_client.php...'; exit(); } //php cli 常量 fwrite(STDOUT,'请输入消息:'); $msg=trim(fgets(STDIN)); //发送消息给tcp server 服务器...$client->send($msg); //接受来自server 的数据 $result=$client->recv(); echo $result; 发布者:全栈程序员栈长,转载请注明出处:https
TGID 进程以 CLONE_THREAD 标志调用 clone 方法,创建与该进程共享资源的线程。...PID/TGID/PGID/SID总结 用一幅图来总结 PID/TGID/PGID/SID : 进程间关系 内核中所有进程的 task_struct 会形成多种组织关系。...根据进程的创建过程会有亲属关系,进程间的父子关系组织成一个进程树;根据用户登录活动会有会话和进程组关系。...亲属关系 进程通过 fork() 创建出一个子进程,就形成来父子关系,如果创建出多个子进程,那么这些子进程间属于兄弟关系。可以用 pstree 命令查看当前系统的进程树。...会话有一个前台进程组,还可以有一个或多个后台进程组,只有前台作业可以从终端读写数据。示例的进程组关系如图: 注意到上图中显示,终端设备可以向进程组发送信号。
创建一个Java线程常见的有两种方式: 1.继承Thread类 两种表示方法: (1).外部类 import java.util.Date; public class Test1...{ public static void main(String[] args) { //启动新线程 来完成输出时间的操作 Mytime mt=new Mytime...(); //启动新线程 Thread的start() mt.start(); for (int i = 0; i < 100; i++) {...class Mytime extends Thread{ @Override public void run() { // 放入线程要执行的代码 这是一个非常耗时的操作...args */ public static void main(String[] args) { //匿名内部类 方案 因为这时 子类名是没有的 直接对Thread的run
除此之外,Linux 系统中的进程之间还存在其他层次关系,如进程组和会话。 它们可以进一步拓展进程之间的关系,不仅局限于独立进程或父子进程关系,还包括进程组和会话等。...1、无关系 两个进程之间没有任何依赖关系,彼此独立运行,互不干扰。这类进程可以单独运行和终止,彼此之间没有任何联系。 2、父子进程关系 父子进程关系是通过 fork() 系统调用创建的。...会话与进程组之间的关系如下: 一个会话可以包含多个进程组。 每个会话只能有一个前台进程组,其它进程组则为后台进程组。 会话的首领是创建该会话的进程,且会话首领也作为新的进程组的组长。...Linux 系统通过进程 ID、父子进程关系、进程组和会话等层次结构,提供了灵活的进程管理方式。 进程组简化了对多个相关进程的管理,而会话机制则在多终端、多用户环境下起着重要作用。...通过系统调用,用户可以精确控制这些进程关系,以实现复杂的进程管理任务。
Linux的进程相互之间有一定的关系。比如说,在Linux进程基础中,我们看到,每个进程都有父进程,而所有的进程以init进程为根,形成一个树状结构。...ID,PGID为进程所在的进程组的ID, PPID为进程的父进程ID。...从上面的结果,我们可以推测出如下关系: ? 图中箭头表示父进程通过fork和exec机制产生子进程。ps和cat都是bash的子进程。进程组的领导进程的PID成为进程组ID。领导进程可以先终结。...此时进程组依然存在,并持有相同的PGID,直到进程组中最后一个进程终结。 我们将一些进程归为进程组的一个重要原因是我们可以将信号发送给一个进程组。进程组中的所有进程都会收到该信号。...会话是由其中的进程建立的,该进程叫做会话的领导进程(session leader)。会话领导进程的PID成为识别会话的SID(session ID)。会话中的每个进程组称为一个工作(job)。
线程和进程的关系 在计算机世界中,线程和进程是构成程序运行基础的两个重要概念。想象一下,计算机系统是一家繁忙的餐厅,而进程和线程则分别是餐厅的厨房和厨师。...进程:餐厅的厨房 在这家餐厅里,每一个独立的厨房都可以看作是一个“进程”。每个厨房(进程)都有自己的设备和工具,比如烤箱、冰箱、炉灶等,这些对应于计算机中的进程拥有的独立内存空间和系统资源。...协作与竞争:并发的艺术 厨师们需要高效地协作,以确保餐点及时上桌。但是,如果多个厨师同时需要使用同一个烤箱,就必须妥善安排使用顺序,以免发生冲突。...独立与依赖:生命周期的联系 虽然每个厨房(进程)都是独立的,但厨房里的厨师(线程)的存在是依赖于厨房的。如果厨房关门了,厨师们也就无法继续工作。同样,在计算机中,线程的生命周期依赖于它所属的进程。...当一个进程结束时,它的所有线程也会随之终止。
# a 选项表示不仅列当前⽤户的进程,也列出所有其他⽤户的进程 # x 选项表示不仅列有控制终端的进程,也列出所有⽆控制终端的进程 # j 选项表示列出与作业控制相关的信息, 作业控制后续会讲...另外会话、进程组以及控制终端还有一些其他的关系,我们在下边详细介绍一下: 一个会话可以有一个控制终端,通常会话首进程打开一个终端(终端设备或伪终端设备)后,该终端就成为该会话的控制终端。...建立与控制终端连接的会话首进程被称为控制进程。 一个会话中的几个进程组可被分成一个前台进程组以及一个或者多个后台进程组。...这些特性的关系如下图所示: 4 -> 作业控制 4.1 -> 什么是作业(job)和作业控制(Job Control) 作业是针对用户来讲,用户完成某项任务而启动的进程,一个作业既可以只包含一个进程,也可以包含多个进程...】 作业已完成并退出,返回的状态码为非0 已停止【Stopped】 前台作业,当前被Ctrl+Z挂起 已终止【Terminated】 作业被终止 4.4 -> 作业的挂起与切回 4.4.1 -> 作业挂起
进程是系统资源的使用者,系统的资源的大部分都是以进程为单位分配的。而用户使用计算机是为了实现一串相关的任务,通常把用户要求计算机完成的这一串任务成为作业。...(1)批处理系统中作业与进程的关系(进程组织) 批处理系统中的可以通过磁记录设备或卡片机向系统提交批作业,由于系统的spooling输入进程将作业放在磁盘的输入井中,作为后备作业。...作业调度程序(一般也作为独立的进程运行)每当选择一道后备作业运行时,首先为该作业创建一个进程(称为该作业的根进程)。该进程将执行 作业控制语言 解释 该作业的 作业说明书。...父进程在运行过程中可以动态地创建一个或多个子进程,执行说明书中的语句。例如,对一条编译的语句,该进程可以创建一个子进程执行编译程序对用户源程序进行编译。...至此,一道进入运行的作业全部结束。 (2)分时系统中作业与进程的关系 在分时系统中,作业的提交方法,组织形式均与批处理作业有很大差异。分时系统的用户通过命令语言逐条与系统应答式地输入命令,提交作业步。
在多进程编程中,进程之间的关系可以分为父子进程关系、兄弟进程关系和无关进程关系。不同的关系会对进程间的通信、共享资源等方面产生不同的影响。父子进程关系父子进程关系是最常见的进程间关系。...() # 子进程 else: os.waitpid(pid, 0) # 父进程等待子进程结束在上面的示例中,我们首先输出了父进程的进程ID,然后创建了一个子进程,子进程会输出自己的进程...兄弟进程关系兄弟进程关系是指两个或多个进程之间没有父子关系,但它们通常是在同一时刻由同一个进程创建的。在多进程编程中,这种关系通常是通过共享内存、消息队列等方式进行通信和同步。...子进程1和子进程2都会输出自己的进程ID。父进程等待子进程1和子进程2都结束之后才退出。无关进程关系无关进程关系是指两个或多个进程之间既没有父子关系,也没有兄弟关系。...在多进程编程中,这种关系通常是通过网络通信等方式进行通信和同步。
一、进程与可执行程序之间关系的理解 系统会将此时在系统运行的进程的各种属性都以文件的形式给你保存在系统的proc目录下。...运行一个程序的时候,本质就是把磁盘中的程序拷贝到内存中,当一个进程运行起来的时候,它本质已经和磁盘中的可执行程序没有直接关系了。...,它本质已经和磁盘中的可执行程序没有直接关系了。...从上面的截图中我们也可以看到,/proc目录下的虚拟文件系统是会记录下进程的工作目录和对应可执行程序的路径,/proc目录下记录的进程信息与PCB中的某些信息有重叠,比如说PCB中同样也会记录下进程的工作目录和对应可执行程序的路径...我们也可以看到,其中父子进程fork的返回值是不一样的,父进程fork返回的是子进程的pid,子进程返回的是0。 那这里就会有疑问了,为什么fork给父进程返回子进程的pid,给子进程返回0?
# 打印多进程时,进程之间的关系 """ 1、使用pycharm时,根进程是pycharm(主进程的父进程(爷爷辈。。。))...2、主进程是创建的多进程的父进程 """ from multiprocessing import Process import os import time def info(title):...print(title) print('module name:', __name__) # 调用该程序的名称 print('父进程ppid:', os.getppid())...,打印的是 ppid:pycharm,pid:主程序进程 time.sleep(1) p = Process(target=info, args=('多进程',)) # 第二次打印...,子进程执行,打印的是 ppid:主进程,pid:子进程 p.start() p.join()
三.进程与JVM内存空间 JVM本质就是一个进程,因此其内存空间(也称之为运行时数据区,注意与JMM的区别)也有进程的一般特点。深入浅出 Java 中 JVM 内存管理,这篇参考下。...JVM进程与普通进程内存模型比较如下图: 需要说明的是,这个模型的并不是JVM内存使用的精确模型,更侧重于从操作系统的角度而省略了一些JVM的内部细节(尽管也很重要)。...下面从用户内存和内核内存两个方面讲解JVM进程的内存特点。 1.用户内存 上图特别强调了JVM进程模型的代码区和数据区指的是JVM自身的,而非Java程序的。普通进程栈区,在JVM一般仅仅用做线程栈。...细心的人会发现,引言中给出两个服务器,一个SWAP最多占用了2.16g,另外一个SWAP最多占用了871m;但是,似乎我们的内存缺口没有那么大。...内存泄漏问题 另一个案例是,8g内存的服务器,Linux使用800m,监控进程使用600m,堆大小设置4g;系统可用内存有2.5g左右,但是也发生了大量的SWAP占用。
进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。 1. ...背后的含义就是,单个CPU一次只能运行一个任务。 3. 进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。 4. ...线程就好比车间里的工人。一个进程可以包括多个线程。 6. 车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。 ...操作系统的设计,因此可以归结为三点: (1)以多进程形式,允许多个任务同时运行; (2)以多线程形式,允许单个任务分成不同的部分运行; (3)提供协调机制,一方面防止进程之间和线程之间产生冲突...,另一方面允许进程之间和线程之间共享资源。
假设是a进程创建了b进程,那么a进程就是b进程的父进程。...这对于一部分低端的木马具有提醒作用(注意这里说的是能够提示一般的 灰鸽子等变种,高端的木马会绕过这里,具体思路见后面),好了这里再回头说进程关系,这里先说一句关键的话:进程在创建进程时。...AIS服务(AppInfo Service)调用的CreateProcessAsUser() 函数创建进程而且赋予恰当的管理员权限,在理论上说AIS服务(所在的进程)是提权后进程的父进程。...IceSworld,Process Explorer等) 查看时,会发现提权的进程的父进程是创建它的进程,这是由于AIS利用了CreateProcessAsUser() API中的一个新的功能,这里的新功能就是将提权进程的父进程设置成创建该进程的进程...,假设我们利用一下该API,我们就能够将自己的进程的的父进程设置为随意进程(要提权绕过UAC的鸽子注意了),假设把木马进程的父进程设置为 杀软 的ID或者csrss.exe ,notepad.exe 等可信进程
进程间通信(三) — 进程同步原语及管道与队列 回顾操作系统所提供的所有进程间通信方式的系统调用,我们会发现还有两种进程间通信方式我们还没有介绍:共享内存与域套接字,本文我们就来介绍这剩下的几种 IPC...但 Python 的 multiprocessing 包中仍然提供了两种方法让你可以在多进程环境下共享数据: 共享内存 服务器进程 3....服务器进程 — server process python 提供了一种十分类似共享内存的数据共享机制 — 服务器进程。...通过 multiprocessing 包中的 Manager 类可以构造一个服务器进程对象,他支持用于进程间共享的多种数据类型: list dict Namespace Lock RLock Semaphore...BoundedSemaphore Condition Event Barrier Queue Value Array 一旦创建,对象的使用与原生类型的用法是完全相同的,因此相比于共享内存,服务器进程的使用更为简单和灵活
领取专属 10元无门槛券
手把手带您无忧上云