开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情
进程管理
触发任何一个事件时,系统都会将他定义成为一个进程,并且给予这个进行一个ID,称为PID.
同时依据启发这个进行的用户与相关属性关系,给予这个PID一组有效的权限设定
进程定义
- 进程是一个独立的可调度的活动
- 进程是一个抽象实体,当它执行某个任务时,要分配和释放各种资源
- 进程是可以并行执行的计算单位
- 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动
- 进程是一个程序的一次执行过程,同时也是资源分配的最小单元
- 进程和程序的区别
- 程序 : 静态的,是一些保存在磁盘上的指令的有序集合,没有任何执行的概念
- 进程 : 是一个动态的概念,是程序执行的过程,可以说进程就是一个正在执行的程序.程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存中,操作系统并给予这个内存内的单元一个标识符.
进程分类
- 交互进程 : 由shell启动的进程.交互进程既可以在前台运行,也可以在后台运行
- 批处理进程 : 这种进程和终端没有联系,它是被提交到一个队列中的进程序列
- 守护进程 : 又称监控进程,也就是通常说的Daemon进程,是Linux中的后台服务进程
进程控制块
- 标识号
- 每个进程都有一个进程标识号(PID)和一个父进程标识号(PPID),其中PID唯一标识一个进程.
- 一个进程还有自己的用户标识号(UID)和组标识号(GID),系统通过这两个标识号判断进程对文件或设备的访问权
[llllljian@llllljian-virtual-machine 20180612 20:31:55 #40]$ cat 2.sh #!/bin/bash ######################################################################### # 文件名: 2.sh # 作者: llllljian # 邮箱: 18634678077@163.com # 创建时间: 2018年06月12日 星期四 20时21分44秒 # 更新时间: 2018年06月12日 星期四 20时31分37秒 # 注释: 标识号 ######################################################################### echo "PID of this script: $$" echo "PPID of this script: $PPID" echo "UID of this script: $UID" echo "GID of this script: `id -G`" [llllljian@llllljian-virtual-machine 20180612 20:32:01 #41]$ sh 2.sh PID of this script: 8979 PPID of this script: 8689 UID of this script: 1008 GID of this script: 1008 - 状态信息
- 执行态
- R (running)
- 该进程正在运行,即进程正在占用CPU.
- 正在运行或在运行队列中等待
- 睡眠状态
- 可中断的睡眠状态
- S (sleeping)
- 处于这个状态的进程因为等待某某事件的发生,而被挂起
- 不可中断的睡眠状态
- D (disk sleep)
- 不会因为任何命令/指令终止,保证数据完整性,只能关机重启,也叫不可中断睡眠
- 可中断的睡眠状态
- 暂停状态
- T (stopped)
- 停止或被追踪
- 停止状态
- T (stopped)
- 当进程收到一个SIGSTOP信号后,便由运行态进入停止状态,当收到SIGCONT信号时又会恢复运行态,该状态主要用于调试.
- 进程收到SIGSTOP[19,暂停进程], SIGTSTP[20], SIGTTIN[21],SIGTTOU[22]信号后停止运行运行
- 僵死状态(终止状态)
- Z (zombie)
- 进程已终止,但其task_struct 结构仍在内存中.顾名思义,处于这种状态的进程实际是死进程.
- 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放
- 执行态
- 调度信息
- 调度器根据这些信息判定系统中哪个进程最迫切需要运行.
- 有关进程间通讯的信息
- 系统利用这一信息实现进程间的通讯
- 进程与其他进程之间的关系信息
- 时间和定时器信息
- 文件系统信息
- 虚拟内存与物理内存相关信息
- 和进程相关的上下文信息
进程优先级
- 进行优先级概念
- 优先级指的是PRI的值,越小越优先
- nice
- 命令功能
- 通过对NI的修改来改变PRI的值,从而影响优先级
- 命令格式
- nice -n 数值 +文件名
- 注意事项
- 进程的nice值不是进程的优先级,但是会影响优先级的变化
- PRI(new)=PRI(old)+nice
- nice的范围为-20 ~ 19
- PRI的范围为60 ~ 99
- 命令功能
- 进程显示说明
- ps -l: 显示当前终端下开启的任务.
- ps -al: 显示当前终端下所有的任务.
[llllljian@llllljian-virtual-machine ~ 20:37:46 #13]$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 1837 1835 0 80 0 - 1737 wait pts/0 00:00:00 bash 0 R 1000 1897 1837 0 80 0 - 1952 - pts/0 00:00:00 ps [llllljian@llllljian-virtual-machine ~ 20:37:54 #14]$ ps -al F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 R 1000 1898 1837 0 80 0 - 1952 - pts/0 00:00:00 ps UID : 代表执行者的身份 PID : 代表这个进程的代号 PPID : 代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号 PRI : 代表这个进程可被执行的优先级,其值越小越早被执行 NI : 代表这个进程的nice值