IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 进程、线程、子进程、僵尸进程、孤儿进程,这一篇就够了 -> 正文阅读

[系统运维]进程、线程、子进程、僵尸进程、孤儿进程,这一篇就够了

进程、线程与子进程

1.定义

进程: 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

线程:线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

子进程:子进程指的是由另一进程(父进程)所创建的进程。

进程和线程在与粒度不同,进程之间的资源无法共享,但是线程可以。线程一定会依附在进程上运行。

2.举例

  • 在Windows下开一个IE浏览器, 这个IE浏览器是一个进程
  • 用浏览器去打开一个pdf, IE就去调用Acrobat去打开, 这时Acrobat是一个独立的进程, 就是IE的子进程
  • IE本身同时开了2个网页, 这两个网页的执行就是IE自己通过两个线程实现的。

3.子进程创建方法

使用fork()函数在父进程内创建一个新的进程(子进程)。使用fork()函数得到的子进程是父进程的复制品,子进程完全复制了父进程的资源,包括进程上下文、代码区、数据区、堆区、栈区、内存信息、打开文件的文件描述符、信号处理函数、进程优先级、进程组号、当前工作目录、根目录、资源限制和控制终端等信息,而子进程与父进程的区别有进程号、资源使用情况和计时器等。


僵尸进程

1.定义

当一个子进程退出后,其父进程还在继续执行,子进程的退出信息并没有被父进程接收到,但是一个进程的退出信息必须被父进程或一些有联系的进程接收到,所以当前进程会一直处于僵死状态。

处于僵尸状态的进程会一直等待其父进程读取其退出信息。
所以,只要子进程退出,而父进程还在执行,但父进程没有读取子进程的状态信息,则子进程会变成一个僵尸进程。

2.为什么子进程的退出信息要被接收到呢?

因为一个进程的退出方式有三种(程序执行完结果正确即正常退出,程序执行完结果不正确,程序还没有执行完),父进程必须要知道子进程到底是以何种状态退出的,如果子进程不是正常退出,则父进程还要创建子进程执行这件事。

3.解决方法

因为僵尸进程会占用进程号,但是进程号是有限的。如果产生大量的僵尸进程,就会导致系统无法创建新的进程。
解决方法主要有两个:
如果是

  • 主进程不是起的服务,那么直接杀死父进程,使僵尸进程变为孤儿进程(后面会介绍),孤儿进程会由init进程回收。
  • 子进程在退出时,会给父进程传送sigchid信号,那么在父进程中建立接收sigchid信号的函数,就可以捕获子进程的状态信息,避免僵尸进程的产生。

孤儿进程

1.定义

孤儿进程是没有父进程的进程,回收孤儿进程这个重任就落到了init进程身上,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为init,init进程会负责孤儿进程的回收,因此孤儿进程不会产生什么危害


参考博客

僵尸进程和孤儿进程
僵尸进程
fork子进程的执行顺序和过程1
fork子进程的执行顺序和过程2

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:47:18  更:2021-09-14 13:48:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:20:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码