首页 > 系统相关 >进程管理

进程管理

时间:2023-11-28 22:56:18浏览次数:27  
标签:TASK 优先级 管理 Linux 进程 执行 nice

进程介绍

进程(Process)是计算机中已运行程序的实体,是程序的一个具体实现。每个 Linux 进程在被创建的时候,都被分配给一段内存空间,即系统给该进程分配一定的逻辑地址空间。

每个程序都能看到一片完整连续的地址空间,这些空间并没有直接关联到物理内存,而是操作系统提供了内存的一种抽象概念,使得每个进程都有一个连续完整的地址空间,在程序的运行过程,再完成虚拟地址到物理地址的转换。我们同样知道,进程的地址空间是分段的,存在所谓的数据段,代码段,bbs段,堆,栈等等。

进程的生命周期

每个进程都有一个唯一的进程 ID (PID),用于追踪该进程。

任何进程都可以通过复制自己地址空间的方式(fork)创建子进程,子进程中记录着父进程的 ID(PPID)。第一个系统进程是 systemd,其他所有进程都是其后代。

  • 每个进程都有自己生命周期,比如创建、执行、终止和删除。在系统运行过程中,这些阶段反复执行成千上万次
  • 当一个进程创建一个新的进程,创建进程的进程(父进程)使用名为fork()的系统调用。当fork()被调用的时候,它会为新创建的进程(子进程)获得一个进程描述符,并且设置新的进程ID。复制父进程的进程描述符给子进程。这时候,不会复制父进程的地址空间,而是父子进程使用同样的地址空间。
  • exec()系统调用把新程序复制到子进程的地址空间。由于共享同样的地址空间,写入新进程的数据会引发页错误的异常。此时,内核给子进程分配新的物理页。
  • 这个延迟的操作叫做Copy On Write。子进程和父进程执行的程序通常不一样,它执行自己的程序。这个操作避免了不必要的开销,因为,复制整个地址空间是很慢且低效率的,还会消耗很多的处理器时间和资源。
  • 当程序执行完成,子进程使用exit()系统调用终止。exit()会释放进程的大部分数据结构,并且把这个终止的消息通知给父进程。这时候,子进程被称为zombie process(僵尸进程)。
  • 直到父进程通过wait()系统调用知悉子进程终止之前,子进程都不会被完全的清除。一旦父进程知道子进程终止,它会清除子进程的所有数据结构和进程描述符。

进程的状态

  • 运行状态(TASK_RUNNING):是运行态和就绪态的合并,表示进程正在运行或准备运行,Linux 中使用TASK_RUNNING 宏表示此状态
  • 可中断睡眠状态(浅度睡眠)(TASK_INTERRUPTIBLE):进程正在睡眠(被阻塞),等待资源到来是唤醒,也可以通过其他进程信号或时钟中断唤醒,进入运行队列。Linux 使用TASK_INTERRUPTIBLE 宏表示此状态。
  • **不可中断睡眠状态(深度睡眠状态)(TASK_UNINTERRUPTIBLE):**其和浅度睡眠基本类似,但有一点就是不可被其他进程信号或时钟中断唤醒。Linux 使用TASK_UNINTERRUPTIBLE 宏表示此状态。
  • **暂停状态(TASK_STOPPED):**进程暂停执行接受某种处理。如正在接受调试的进程处于这种状态,Linux 使用TASK_STOPPED 宏表示此状态。
  • 僵死状态(TASK_ZOMBIE):进程已经结束但未释放PCB,Linux 使用TASK_ZOMBIE 宏表示此状态。

进程的优先级

进程的 CPU 资源(时间片)分配就是指进程的优先级(priority);优先级高的进程有优先执行权利;配置进程的优先级对多任务环境下的 Linux 很有用,可以改善系统性能。

  1. **使用ps **命令查看进程
  2. openEuler 中使用 CFS 调度器来调度进程
    • UID : 代表执行者的身份
    • PID : 代表这个进程的代号
    • PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
    • PRI :代表这个进程可被执行的优先级,其值越小越早被执行
    • NI :代表这个进程的nice值
    • 进程优先级由动态优先级(PRI)和静态优先级(PR)决定,它是决定进程在CPU中执行顺序的数字。优先级越高的进程被处理器执行的机会越大
    • 根据进程的行为,内核使用启发式算法决定开启或关闭动态优先级。可以通过nice级别直接修改进程的静态优先级,拥有越高静态优先级的进程会获得更长的时间片(时间片是进程在处理器中的执行时间)
    • Linux支持的nice级别从19(最低优先级)到-20(最高优先级),默认只是0。只有root身份的用户才能把进程的nice级别调整为负数(让其具备较高优先级)
  3. PRI,即进程的优先级,表示程序被CPU执行的先后顺序,值越小进程的优先级别越高;NI,即 nice 值 ,表示进程可被执行的优先级的修正数值,可理解为“谦让度”;进程的 nice 值不是进程的优先级,但是可以通过调整 nice 值可以影响进程的优先值。
  4. PRI 值越小越快被执行,那么加入nice值后,PRI变为:PRI(new)=PRI(old)+nice
    当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行
    内核使用一些简单的数值范围0~139表示内部优先级, 数值越低, 优先级越高。从0~99的范围专供实时进程使用, nice的值[-20,19]则映射到范围100~139

调整进程的优先级

openEuler 中使用 nicerenice 调整进程的 nice 值,进而影响进程优先级

  • nice 命令语法,优先序(adjustment 取值范围 -19 ~ 20):
    • nice [-n adjustment][command][arg...]]
  • 例如,将 vi 运行的优先级设置为 -18:
    • nice -n -18 vi &
  • renice 命令语法,优先序范围同 nice,作用对象有程序群组 -g、进程 -p、用户-u,语法格式:
    • renice [-n adjustment][-]<pid>
  • 例如,将 vi 运行的优先级设置为 10:
    • renice -n 12 -p 9700
    • 9700(process ID) old priority -18, new priority 12
  • 查看 nice 说明:nice –help
  • 查看 renice 说明:renice –h

也可以使用 top 更改进程的 NI 值:
进入top后按“r”–>输入进程PID–>输入nice值

前台与后台进程

后台进程几乎不和用户交互,优先级略低。Linux 的守护进程(Daemon)是一种特殊的后台进程,其独立于终端并周期性地执行任务或等待唤醒。

前台进程和用户交互,需要较高的响应速度,优先级较高。前台进程就是用户使用的有控制终端的进程。

  • 守护的意思就是不受终端控制。
  • Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等
  • 守护进程一般用作系统服务,可以用crontab提交,编辑或者删除相应得作业。
  • Daemon进程也就是守护进程,linux大多数的服务进程都是通过守护进程实现的。比如0号进程(调度进程) ,1号进程(init进程)。机器启动后就运行,关机才停止。

控制前台与后台进程

opneEuler 中常用以下命令管理进程,包括前后台切换及启停:

  • &:将 & 放在命令的最后,可以把这个命令放到后台执行
  • Ctrl + z:当前台正在执行一个命令时,按键 Ctrl + z,将其放到后台并暂停
  • Ctrl + c:中断当前正在执行的命令
  • jobs:查看当前有多少正在后台运行的命令
  • fg:将后台中的命令调至前台继续运行
  • bg:将后台任务唤醒,并在后台运行

查看进程

  • 使用ps或top命令查看每个进程的详细信息。
  • ps 命令可以显示当前进程,并列出详细的进程信息,字段含义如下表。常用 ps auxps -ef 查看进程信息。
  • ps 命令用于显示特定时间点的进程信息,top 命令可以实时显示进程信息。

管理进程

openEuler 中使用 kill 和 killall 命令向进程发送信号;发送的前提是,当前用户必须是进程的属主或 root 用户;kill 通过 PID 向进程发信号,默

  • 认发送 TERM 信号,使用 –s 参数指定其他信号,例:

    kill 3389

    kill -s HUP 3389

  • killall 通过进程名向进程发信号,且支持通配符,例:

    killall python*

标签:TASK,优先级,管理,Linux,进程,执行,nice
From: https://www.cnblogs.com/cyndbk/p/17863332.html

相关文章

  • RPM包管理
    一、RPM包管理的用途;1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;3、可以在查询系统中的软件包是否安装以及其版本;4、作为开发者可以把自己的程序打包为RPM包发布;5、软件包......
  • linux进程管理
    什么是进程?进程是正在系统中运行的程序的实例。每个进程都有唯一的进程标识符(PID),用于在系统中标识和跟踪该进程。进程优先级nice和renice命令nice命令用于启动进程并设置其优先级。值越小,优先级越高。nice-n10commandrenice命令用于修改正在运行进程的优先级。renice10......
  • linux存储管理
    文件系统与磁盘管理1.文件系统Linux支持多种文件系统,如ext4、XFS、Btrfs等。文件系统是数据在磁盘上的组织方式,它负责管理文件的存储、检索和修改。2.磁盘分区fdisk和parted是常用的工具,用于创建、删除和管理硬盘分区。例如,使用fdisk/dev/sdX可以对指定硬盘进行分区操......
  • 进程管理
    1.初始进程进程是已启动的可执行程序的运行实例。进程有以下组成部分已分配内存的地址空间。安全属性,包括所有权凭据和特权程序代码的一个或多个执行线程。进程状态。每个进程都有唯一的进程标识PID一个PID只能标识一个进程,PPID为父进程I,需要给该进程分配系统资源进程状态是指......
  • yum管理器
    一、yum介绍Yum(全称为YellowdogUpdater,Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查......
  • Linux文件管理的相关命令
    文件目录与路径mkdir创建一个文件夹.mkdir-p一次性创建多个文件夹,在自己的当前所在目录,用指令qwd查看.qwd自己的当前所在目录.qwd-p查看自己的绝对路径.目录与文件操作ls-a查看隐藏目录和文件.在自己的所在的目录下.ll(ls-a)查看目录和文件属性.cd切换目录.rmdir......
  • Linux存储管理
    1存储管理在Linux系统下,系统识别到硬盘后,会为其创建一份初始分区表。硬盘在分区后才可以使用。系通过分区表来管理磁盘。 1.1磁盘磁盘是一种计算机的外部存储器设备,由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成,用来存储用户的信息,这种信息可以反复地被读取和改写......
  • Linux用户管理
    用户/组概览从CentOS6开始,UID为0是特权用户,UID为1~499是系统用户,UID为500以上为普通用户。root用户可以拥有所有系统权限,是超级用户。管理用户/组useradd命令能创建用户grep能过滤信息userdel可以用来删除用户groupdel命令可以删除用户组passwd命令可以用来修改用户密码 ......
  • 基于springboot的课程作业管理系统-计算机毕业设计源码+LW文档
    一、 研究目的和意义当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能......
  • 第2章 文件管理
    1.文件目录和路径 绝对路径:从根目录开始的完整路径 相对路径:相对于当前工作目录的路径  2.根目录的常见目录:/bin:bin是Binary的缩写,这个目录存放着最经常使用的命令。/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev:dev是D......