操作系统进程

进程介绍

进程与程序:
  • 程序是存储在磁盘上的可执行文件,里面包含可执行的机器指令和数据的静态实体;进程是处于活跃状态的计算机程序,也就是正在运行中的程序

  • 一个运行中的程序,可能由多个进程组成,但至少要有一个进程,称为主进程,同时可以通过系统调用创建出若干个子进程同时进行任务

  • 一个程序也可以同时运行出若干个进程

进程的分类:

根据进程的功能不同一般分为三类:交互进程、批处理进程、守护进程

  • 交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行在前台,也可以运行在后台

  • 批处理进程:该进程是一个进程指令集合,负责按顺序去启动其他进程

  • 守护进程:一般都处于活跃状态,运行在后台,由系统在开机时通过脚本自动创建并运行。

进程查看:
简单形式:

ps: 以简略的形式显示出当前用户有控制终端控制的进程信息

复杂形式:

ps auxw 以更宽大的列表形式详细地列出所有用户的进程信息

a - 所有用户的有终端控制的进程

x - 包括无终端控制的进程

u - 以更详细的内容显示

w - 以更大的列宽显示

e - 显示所有进程

f - 显示出其他信息字段

进程的信息列表:
  • USER : 进程属主

  • PID : 进程ID

  • %CPU : CPU使用率

  • %MEM :内存使用率

  • VSZ : 占用虚拟内存大小(Kb)

  • RSS : 占用物理内存大小(Kb)

  • TTY :控制终端设备号 ? 表示无终端控制 ,例如后台进程

  • STAT :进程状态 ,可有以下值:

    • O - 就绪态 ,表示等待被调度

    • R - 运行态,Linux下没有O状态,就绪态也用R表示

    • S - 可被唤醒睡眠态。当系统中断、获得资源、收到信号等都可以被唤醒转入回运行态

    • D - 不可被唤醒睡眠态。只能被wake_up系统调用唤醒

    • T - 暂停态。收到停止类信号转入暂停态,当收到SIGCONT(18)转入运行态

    • Z - 僵尸态。已经停止运行,但是父进程尚未回收相关资源

    • X - 死亡态。不可见

    • N - 低优先级

    • < - 高优先级

    • s - 进程组的领导

    • l - 多线程化的进程

    • + 在前台的进程组中的

    • L - 有被锁入内存的分页

  • START : 进程启动的时间点

  • TIME : 进程运行的耗时时间

  • COMMAND :启动进程的指令

复制代码
# 查看指定进程  
ps aux | grep bash      #过滤出包含bash关键字的进程信息
​
# 分页查看进程
ps aux | more
​
# 查看指定用户进程
ps -u 用户名 uw
父进程与子进程:
  • 一个进程可以创建出另一个进程,创建者称为被创建者的父进程,被创建者称为创建者的子进程

  • 父进程创建出子进程后,子进程在操作系统的调度下与父进程同时运行

孤儿进程与僵尸进程:
  • 子进程先于父进程结束,子进程一定会向父进程发送SIGCHLD(17)信号,父进程负责回收子进程的相关资源

  • 如果父进程先于子进程结束,此时子进程称为孤儿进程,同时会被孤儿院进程收养,就成为了孤儿院进程的子进程

    • 早期孤儿院进程init pid是1

    • 现在孤儿院进程不是1了,在图形化界面中是/sbin/upstart --user

  • 子进程先于父进程结束,但是父进程没有去回收子进程相关资源,该子进程就成为僵尸进程

进程标识符:
  • 每个进程都有一个以非负整数表示的唯一标识,称为进程ID,简称PID

  • 进程ID在任意时刻内是唯一的,但是可以重用,当一个进程结束后,它的进程ID就会被分配个后面创建的其他进程使用

  • 延时重用:当进程结束后,它的ID不会立即被系统重新分配,会隔一段时间后再重新分配

复制代码
#include <sys/types.h>
#include <unistd.h>
​
pid_t getpid(void);
功能:获取当前进程的ID
pid_t getppid(void);
功能:获取当前进程的父进程ID
相关推荐
多多*3 分钟前
OJ在线评测系统 登录页面开发 前端后端联调实现全栈开发
linux·服务器·前端·ubuntu·docker·前端框架
王哲晓1 小时前
Linux通过yum安装Docker
java·linux·docker
gopher95111 小时前
linux驱动开发-中断子系统
linux·运维·驱动开发
码哝小鱼1 小时前
firewalld封禁IP或IP段
linux·网络
鼠鼠龙年发大财2 小时前
【x**3专享】安装SSH、XFTP、XShell、ARM Linux
linux·arm开发·ssh
nfgo2 小时前
快速体验Linux发行版:DistroSea详解与操作指南
linux·ubuntu·centos
Rookie_explorers2 小时前
Linux下go环境安装、环境配置并执行第一个go程序
linux·运维·golang
weixin_424215842 小时前
shell运算实战案例-KFC点餐系统
linux·centos
小黑爱编程3 小时前
【LInux】HTTPS是如何实现安全传输的
linux·安全·https
BeyondESH3 小时前
Linux线程同步—竞态条件和互斥锁(C语言)
linux·服务器·c++