linux中第一个进程的形成,Linux进程管理

1.进程基本概述

定义:进程是已经启动的可执行程序的运行中实例。

/proc目录下以数字为名的目录,每一个目录代表一个进程,保留着进程的属性信息,每一个进程的PID是唯一的,就算进程退出了,其他进程也不会占用其PID

1.1 进程的组成部分

已分配内存的地址空间

安全属性,包括所有权凭据和特权

程序代码的一个或多个执行线程

进程状态

1.2 进程的环境

本地和全局变量

当前调度上下文

分配的系统资源,如文件描述符合网络端口

1.3 进程的产生

现有的(父)进程复制自己的地址空间(fork)来创建一个新的(子)进程结构。

每个新进程分配有一个唯一的进程ID(PID),满足跟踪和安全性之需。PID与父进程ID(PPID)是新进程环境的元素。

任何进程可创建子进程。所有进程都是第一个系统进程的后代。REHEL7上,第一个系统进程就是systemd。

4039b81696e2a17bbfc482ce6a2c8ca0.png

通过fork例程,子进程继承安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量以及程序代码。随后,子进程可能exec其自己的程序代码。通常,父进程在子进程运行期间处于睡眠状态,设置一个在子进程完成时发出信号的请求(wait)。在退出时,子进程可能以及关闭或丢弃了其资源和环境,剩余的部分被称作僵停。父进程在子进程退出时收到信号而被唤醒,清理剩余结构,然后继续执行其自己的程序代码。

1.4 进程的分类

前台进程:与终端相关的进程,通过终端启动的进程

注意:也可把在前台启动的进程送往后台,以守护模式运行

守护进程:daemon ,与终端无关的进程(如内核),在系统引导过程中启动的进程

2.进程的状态

afc62b12aa595bbfccabbc6f3d57228e.png

Excuting //运行态

ready //就绪态,也可称作睡眠态

Uninterrutible sleep //不可中断的睡眠。不可随时会唤醒,只有当IO资源加载成功后才能唤醒

Interruptible sleep // 可中断的睡眠。可随时唤醒

Zombie //僵尸进程。正常运行结束了,但是不释放占据的内存资源

Stopped //停止态,暂停于内存中,但不会被调度,除非手动启动

进程睡眠的原因

当一个执行中的进程,需要加载额外的IO资源的时候,由于IO设备的速度太慢,所以会转入睡眠状态等待,交出CPU给其他进程,以免浪费剩余执行时间。

在多任务处理操作系统中,每个CPU(或CPU核心)在一个时间点处理一个进程。在进程运行时,它对CPU的时间和资源分配的直接要求会有变化。进程分配有一个状态,它随着环境要求而改变。

Linux进程状态

标志 内核定义的状态和描述

R TASK_RUNNING: 进程正在CPU上执行,或者正在等待运行。处于运行中(或可运行)状态时,进程可能正在执行用户例程或内核例程(系统调用),或已排队并就绪

S TASK_INTERRUPTIBLE :进程处于睡眠状态且正在等待某一条件:硬件请求、系统资源访问或信号。当事件或信号满足该条件时,该进程将返回运行中。

D TASK_UNINTERRUPTIBLE:此进程也在睡眠,但与S状态不同,不会响应传递的信号。仅在特定的条件下使用,其中进程可能会导致意外的设备状态

K TASK_KILLABLE :进程处于睡眠状态,与不可中断的D状态相同,但有所修改。允许等待中的任务通过响应信号而被中断(彻底退出)。实用程序通常可中断的进程状态显示为D状态

T TASK_STOPPED:进程已被停止(暂停),通常是通过用户或其他进程发出的信号。进程可以通过另一信号返回运行中状态,继续执行(恢复)

Z EXIT_ZOMBIE :子进程在退出时向父进程发出信号。除进程身份(PID)之外的所有资源都已释放。

X EXIT_DEAD :当父进程清理(获取)剩余的子进程结构时,进程现在已彻底释放。此状态从不会在进程列出实用程序中看到

< 高优先级进程

N 低优先级进程

前台进程组中的进程

| 多线路进程

s 会话进程首进程

3.进程优先级

3.1Linux进程调度与多任务

现代计算机每台配备数百个CPU,每个CPU上具有多个核心,它们可以并执行数以百计的指令。但是所有这些系统往往具有一个共同点:它们需要运行的进程数量总是超出实际具有的核心数。

通过时间分片技术、Linux(和其他操作系统)实际能够运行的进程数(和线程数)可以超出可用的实际处理单元数。操作系统进程调度程序将在单个核心上的进程之间快速切换,从而给用户一种有多个进程的同时运行的印象。

执行此切换的Linux内核部分称为进程调度程序。

3.2 进程优先级

进程优先级范围:0-139,数字越小,优先级越高

0-99 实时优先级,内核调整

100-139 静态优先级,用户可控制

进程优先级的特点

获得更多的CPU运行时间

更优先获得CPU运行的机会

要修改进程的优先级可以通过调整进程的nice值来实现,nice值越小,优先级越高

nice值的范围是(-20,19),-20对应100 ,19对应139

3.3 相对优先级

由于不是每个进程都与其他进程同样重要,可告知调度程序为不同的进程使用不同的调度策略。常规系统上运行的大多数进程使用的调度策略称为SCHED_OTHER(也称为SCHED_NORMAL),但还有一些其他策略可用于不同的目的。

由于并非所有进程都以同样的方式创建,可为采用SCHED_NORMAL策略运行的进程指定相对优先级。此优先级称为进程的nice值。一个进程可以有40种不同级别的nice值。

这些nice级别的范围是从-20到19.默认情况下,进程将继承其父进程的nice级别,通常为0

nice级别越高,表示优先级越低(该进程容易将其CPU使用量让其他进程)

nice级别越低,表示优先级越高(该进程更加不倾向于让出CPU)

如果不存在资源争用(例如当活动进程数小于可用CPU核心数时),即使nice级别高的进程也将仍使用它们可使用的所有可用CPU资源。当请求CPU时间的进程数超过可用核心数时,nice级别较高的进程将比nice级别较低的进程收到更少的CPU时间。

3.4 nice级别与权限

为很少占CPU资源的进程设置较低的nice级别可能会对同一系统上运行的其他进程的性能造成负面影响,所以紧允许root用户设置负nice级别以及降低现有进程的nice级别

普通非特权用户仅允许是指正的nice级别,只能对现有进行级别提升nice级别,而不能降低nice级别。

3.5 进程优先级调整

调整nice值

```

//调整以及启动的进程的nice值

renice NI PID (例:renice 3 3704)

//在启动时指定nice值(-20,19)

nice -n NI (COMMAND)

```

4.进程管理命令

Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

4.1 ps(process state)命令用于列出当前的进程,可以显示详细的进程信息,包括:

用户标识符(UID),它确定进程的特权

唯一进程识别符(PID)

CPU和已经花费的时间

进程在各种位置上分配的内存数量

进程的位置STDOUT,称为控制终端

当前的进程状态

ps支持是三种选项格式:

UNIX(POSIX)选项、可以分组但必须以连字符开头

BSD选项,可以分组但不可与连字符同用

GNU长选项,以双连字符开头

ps(process state),显示进程信息,注意事项:

加了[ ]中括号的,表示内核进程,通常位于顶部

exiting或defunct表示僵尸进程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XX(北京)科技股份公司为啥需要购置服务器?

其实老板只是要一个量化的标准,只是没人能讲明白,我简单陈述一下: 公司现在只有一台阿里的1核两G的1M带宽服务器40G,属于低配,买了3年的,打了三折花了2800元左右,为啥需要额外购置服务器呢? 目前服务器上有,一个后台管理系统,一个小程序,一个APP,一个网站,目前就…

[BZOJ 1588] [HNOI 2002] 营业额统计

1588: [HNOI2002]营业额统计 Time Limit: 5 SecMemory Limit: 162 MBDescription 营业额统计 Tiger最近被公司升任为营业部经理&#xff0c;他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本&#xff0c;账本上记录了公司成立以…

Python----socket编程

socket 一、socket是什么&#xff1f; socket 通常也称为“套接字”&#xff0c;用于描述 IP 地址和端口&#xff0c;是一个通讯链的句柄。应用程序通常通过 “套接字”向网络发出请求或者应答网络请求。说白了&#xff0c;就是一种通讯机制。它类似于公司的电话客服部门&…

怎样编写测试类测试分支_测试技巧–不编写测试

怎样编写测试类测试分支对此没有太多疑问&#xff0c;测试代码的方式是一个有争议的问题。 不同的测试技术由于各种原因&#xff08;包括企业文化&#xff0c;经验和总体心理观点&#xff09;而受到不同开发人员的青睐。 例如&#xff0c;您可能更喜欢编写经典的单元测试&#…

怎么样才算高级java工程师

高级水平&#xff1a; 1.能对需求进行架构设计&#xff0c;选择框架以适应最合适的业务&#xff0c;作为某个项目的领导&#xff0c;带领团队完成项目。 2.有自己的开源项目&#xff0c;可以写出自己的组件&#xff0c;对开源的框架能够进行二次编写&#xff0c;java核心技术有…

Autorize插件的使用方法

在Proxy或者Repeater有Request请求包后&#xff0c;要ctrlA全选&#xff0c;然后再右键发送到Autorize插件中&#xff1a; 如果只是像这样空白的发送是不会发送过去的&#xff1a;

粉丝提问:求问大神您会查exif吗?

无需下载安装任何软件,直接上传图片即可查看EXIF。支持JPEG、TIFF、CR2、NEF、XMP等多种图片格式破解Canon、

linux和windows的分区区别,Linux分区与Windows分区的区别

打开开始-管理工具-计算机管理&#xff0c;如下图所示&#xff1a;在Windows系统中&#xff0c;计算机的分区是用磁盘0&#xff0c;磁盘1&#xff0c;磁盘2&#xff0c;磁盘3来表示多块硬盘的&#xff0c;比如磁盘0表示第一块硬盘&#xff0c;磁盘2表示第二块硬盘&#xff0c;以…

一个用于伪造IP地址进行爆破的BurpSuite插件:BurpFakeIP

BurpFakeIP介绍 一个用于伪造ip地址进行爆破的BurpSuite插件&#xff0c;burpsuite伪造ip可用于突破waf及进行安全规则绕过等场景&#xff1b;昨天我们分享了《BurpSuite IP代理扩展&#xff0c;使用AWS API网关动态更改请求&#xff1a;IPRotate_Burp_Extension》有同学也发现…

学习Spring-Cloud –编写微服务

继续我的Spring-Cloud学习历程&#xff0c; 之前我已经介绍了如何编写典型的基于Spring-Cloud和Netflix OSS的微服务环境的基础架构组件–在此特定实例中&#xff0c;有两个关键组件&#xff0c;用于注册和发现服务的Eureka和Spring Cloud用于维护服务配置集中式配置库的配置。…

linux内核配置usb虚拟串口,Linux USB虚拟串口设备

Linux内核中usb设备侧驱动程序分成3个层次&#xff1a;UDC驱动程序、Gadget API和Gadget驱动程序。UDC驱动程序(USB控制器)直接访问硬件&#xff0c;控制USB设备和主机间的底层通信&#xff0c;向上层提供与硬件相关操作的回调函数。Gadget API是UDC驱动程序回调函数的简单包装…

Chunked coding converter插件的使用方法

burp插件----Chunked coding converter url下载&#xff1a;https://github.com/zxl2605/chunked-coding-converter 安装步骤&#xff1a;BurpSuite -> Extender -> Extensions -> Add -> Extension Type: Python -> Select file: chunked-coding-converter.0.…

linux 提升cpu权限,CPUlimit有效防止Linux系统CPU过载

最近使用Nginx服务器测试 pagespeed 的加速效果时&#xff0c;发现这货会造成 CPU 占用过高&#xff0c;Nginx 经常 100%&#xff0c;尽管使用的是静态缓存&#xff0c;总是触发主机商的CPU占用上限&#xff0c;不停的被强制关机。发现 CPULimit 这款工具刚好可以解决这个问题&…

domain hunter pro插件的使用方法

bilibili教程&#xff1a;https://www.bilibili.com/video/BV1eA411P7xC/ 安装 获取软件的Jar包&#xff0c;由于该软件是基于BurpSuite的插件程序。需要与BurpSuite一起使用。 安装后的界面效果 项目管理 创建一个新的项目&#xff0c;也可以打开已有的项目文件&#xf…

CSS基本语法?

CSS 实例 CSS 规则由两个主要的部分构成&#xff1a;选择器&#xff0c;以及一条或多条声明: 选择器通常是您需要改变样式的 HTML 元素。 每条声明由一个属性和一个值组成。 属性&#xff08;property&#xff09;是您希望设置的样式属性&#xff08;style attribute&#x…

BurpSuite插件 -- FastjsonScan(反序列化检测)

你可以因为现任不好二分手&#xff0c;但千万不要认为别人更好&#xff0c;永远有人更好&#xff0c;眼下便是更好。。。 ---- 网易云热评 一、插件介绍&#xff1a; 一个简单的Fastjson反序列化检测burp插件&#xff0c;我在挖洞的时候看到一些json请求总是想要检测一下有没有…

查看linux电脑总内存,如何查看Linux系统中的内存使用情况的命令呢?

有些命令可用于检查Linux系统中的内存使用情况。这是一些更好的命令。有很多工具可以查看Linux系统中的内存使用情况。一些命令被广泛使用&#xff0c;例如free和ps。其他命令允许以多种方式显示系统的性能统计信息&#xff0c;例如top。在本文中&#xff0c;我们将介绍一些命令…

【工具使用】Xray与Burp联动--流量转发插件Passive Scan Client

Burp被动扫描流量转发插件:Passive Scan Client 0x01 插件编译 插件地址&#xff1a;https://github.com/c0ny1/passive-scan-client rootkali:~# git clone https://github.com/c0ny1/passive-scan-client.git rootkali:~# cd passive-scan-client/ rootkali:~/passive-scan…

linux 用mutex定义一个linkedlist,【基于LINUX的操作系统实验教程最终版材料】

(基于LINUX的操作系统实验教程)(最终版)《基于LINUX的操作系统实验教程.doc》由会员分享&#xff0c;可免费在线阅读全文&#xff0c;更多与《(基于LINUX的操作系统实验教程)(最终版)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、b&#xff1b;*Waitonthe…

服务器硬件监控转载:

转载&#xff1a;http://nolinux.blog.51cto.com/4824967/1664664 前一周上架服务器&#xff0c;本来准备把针对服务器的硬件监控这一部分总结下成文&#xff0c;结果过个端午给过忘了。。。今天就又整理了下&#xff0c;在这里分享给51博友&#xff0c;也算是对自己前段工作的…