1.进程基本概述

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

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

1.1 进程的组成部分

已分配内存的地址空间

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

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

进程状态

1.2 进程的环境

本地和全局变量

当前调度上下文

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

1.3 进程的产生

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

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

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

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

1.4 进程的分类

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

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

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

2.进程的状态

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表示僵尸进程

linux中第一个进程的形成,Linux进程管理相关推荐

  1. linux vi 移动光标,linux中vi命令的光标移动操作linux网页制作 -电脑资料

    分享一篇关于linux中vi命令的光标移动操作的文章,有需要的朋友可以参考一下, 全屏幕文本编辑器中, 光标的移动操作无疑是最经常使用的操作了.用户只有熟练地使用移动光标的这些命令,才能迅速准确地到达 ...

  2. Linux下dislocate命令用法,在 Linux 中遨游手册页的海洋 | Linux 中国

    原标题:在 Linux 中遨游手册页的海洋 | Linux 中国 Linux 系统上的手册页可以做的不仅仅是提供特定命令的信息.它们可以帮助你发现你没有意识到的命令. https://linux.cn ...

  3. linux中打开pdf文件_在Linux中减少PDF文件大小

    linux中打开pdf文件 In our Linux system, If we have a large PDF file, we may want to reduce it's size. We ...

  4. linux中把程序启到前台,Linux操作系统桌面应用与管理Q4rw2进程与作业管理-PPT精品文档.ppt...

    红旗Linux,情境四任务2:进程和作业管理,任务2-1,了解进程管理知识用命令实现进程管理,Linux进程管理,WINDOWS?任务管理器LINUX利用命令管理进程包括前.后台进程的管理以及终止等, ...

  5. linux php d 含义,Linux中状态为D 或Z 的进程

    长期生活在 Linux 环境里,渐渐地就有一种环保意识油然而生.比如,我们会在登录提示里写上"悟空,我跟你说过叫你不要乱扔东西,乱扔东西是不对的.哎呀我话没说完你怎么把棍子扔掉了?月光宝盒是 ...

  6. c++ 进程快照_如何在 Linux 中找出内存消耗最大的进程

    很多次,你可能遇见过系统消耗了过多的内存.如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程. -- Magesh Maruthamuthu(作者) 很多次,你可能遇见过系统 ...

  7. linux磁盘第一个扇区分析,[转]Linux中如何读写硬盘上指定物理扇区

    读指定物理扇区: dd  if=  of=   skip=  bs=512 count=1 写指定物理扇区: dd   if=   of=   seek=  bs=512 count=1 实例: 我们 ...

  8. 在Linux中,如何找到并杀掉僵尸进程?

    如果你经常使用 Linux,你应该遇到这个术语"僵尸进程Zombie Processes". 那么什么是僵尸进程? 它们是怎么产生的? 它们是否对系统有害? 我要怎样杀掉这些进程? ...

  9. 如何在 Linux 中找出内存消耗最大的进程

    很多次,你可能遇见过系统消耗了过多的内存.如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程.我相信,你可能已经运行了下文中的命令以进行检查.如果没有,那你尝试过哪些其他的命 ...

最新文章

  1. SDUT—2054数据结构实验之链表九:双向链表 (基本建立)
  2. OpenStack行业实践和发展趋势
  3. Android Handler Runnable和Thread之间的区别和联系详解
  4. 2020中国民营企业500强调研分析报告
  5. css3直线运动_CSS3中如何使元素曲线运动
  6. jquery ajax 调用webservice以及跨域问题
  7. modelmap前端怎么取值_【百度】前端开发岗面试题
  8. paip.DISCUZ道具开发指南-attilax总结-
  9. 技术升级成为Linux运维人前途的魔障,是跟进还是选择被淘汰?
  10. 分享我本人打造微信公众号吸粉引流的恶搞方法
  11. 服务器位置异常饿了么,饿了么定位失败怎么办 饿了么无法定位解决办法
  12. Oracle数据库:oracle外连接left/right/full outer join on,oracle扩展的左右外连接展示符号(+)
  13. 删除桌面上文件,提示此文件位置不在当前位置?
  14. 互联网金融概念股龙头有哪些
  15. 英文论文中的accuracy与precision的区别
  16. 二次指数平滑法 C++
  17. 苹果电脑系统还原出现服务器,苹果电脑恢复出厂设置【应对方向】
  18. [含论文+源码等]SSH超市进销存管理系统
  19. 北京某公司前端笔试题及其答案
  20. 【K8S】ctr和crictl的区别

热门文章

  1. Github常用搜索指令(毕设资料搜索必备)
  2. Java多线程(2)--Thread类继承和Runnable接口创建线程
  3. MySQL中字符串函数详细介绍
  4. 谈谈yii2-gii如何自定义模板
  5. BZOJ 3511 土地划分
  6. linux线程池简单实例
  7. C#中 Convert与Parse的区别
  8. [转载]jquery cookie的用法
  9. Gentoo man手册指南
  10. 简单用于测试的listview的视图