当前位置: 首页 > news >正文

Linux编程--进程

1、基本概念:

  • 进程:是程序动态执行的过程,包括创建、调度、消亡
  • 程序:存放在外存中一段数据的集合
  • 虚拟地址:进程使用的逻辑地址,有操作系统管理,不直接对应物理内存
  • 物理地址:实际内存的硬件地址
  • MMU(内存映射单元):将物理地址映射到虚拟地址

2、进程空间分布

  • 每个进程运行之后,操作系统会为其开辟0 ~ 4 G的虚拟内存空间
  • 进程空间 = 用户空间 + 内核空间
  • 用户空间:文本段(文本去)+数据段(数据区)+系统数据段(堆栈)
    • 文本段:存放代码和指令
    • 数据段:存放字符串常量、全局变量与静态变量
    • 系统数据段:堆(malloc生擒空间),栈(函数运行与局部变量空间)

3、多个进程存储与调度

  1.多个进程的存储
  • 多个进程在操作系统中存储时,空间是独立的(物理地址独立)
  • 多个进程在操作系统中共用一个虚拟内存空间(虚拟地址是共享的)
  2.多个进程的调度

        宏观并行,微观串行(CPU 在多个任务中高速切换保障多任务执行)

4、进程相关 Linux 命令

  1.进程查看指令  

        top

功能:

        根据 CPU 占用率和内存占用率查看当前内存的信息

PID:

        进程 ID 号     

USER:

        创建者     

PR  NI:

        优先级    

VIRT    RES    SHR S :

        资源占用

%CPU %MEM:CPU:

        和内存占用率     

TIME+:

        运行时长

COMMAND :

        进程命令

        ps -ef

功能:

        查看该时刻的所有进程信息(强调父子关系和完整的进程信息)

UID:

        创建进程的用户        

PID:

        进程的ID号  

PPID:

        父进程的ID号  

C STIME TTY:

        进程依赖的终端        

ps -ef | grep 进程名 查找与进程名对应的进程信息

        ps -aux

        查看该时刻所有的进程信息(强调资源占用和进程的状态)

  2.后台执行进程任务
指令功能
进程名 &将进程转入后台运行
jobs查看终端下所有后台执行任务
fg PID编号将后台执行的任务放到前台执行
  3.优先级调整指令

        nice/renice

示例:nice -n 优先级编号 进程名    

           renice -n 优先级编号 进程PID

功能:

         改变进程的优先级

优先级范围:

         -20 - 20 数字越小优先级越高

4.进程终止指令

        kill/killall

示例:kill -编号 进程PID    

           killall -编号 进程名

功能:杀死进程任务

例:kill -9 PID

5、进程的状态

进程状态标识含义
就绪态/运行态R进程位于CPU任务调度的队列中
可唤醒等待态S等待某个资源的到来,资源到来后被唤醒加入调度队列 等待过程中可以被打断
不可唤醒等待态D等待某个资源的到来,资源到来后被唤醒加入调度队列 等待过程中不可以被打断
停止态T用户人为操作让进程等待
僵尸态Z进程代码运行结束,空间尚未回收
结束态X进程代码结束,空间被回收

6、进程相关函数接口

  1.fork(子进程创建接口)

  • 子进程拷贝父进程的文本段、数据段、系统数据段
  • 父进程与子进程的 PID 号不同
  • 若在子进程结束前父进程结束,子进程会被 init 领养,子进程的父进程 PID 号改为1

原型:

        pid_t fork(void);

功能:

        创建一个新的进程,新的进程称为子进程,调用fork的进程称为父进程

返回值:

        父进程中返回子进程的PID

        子进程中返回0

        出错返回-1

2.获取 PID 号与 父进程 PID

        getpid和getppid

原型:

        pid_t getpid(void); 、

功能:

        获得调用函数进程的PID号

原型:

        pid_t getppid(void);

功能:

获得调用函数进程的父进程的PID号

http://www.xdnf.cn/news/1299205.html

相关文章:

  • web请求和响应
  • SpringMVC(详细版从入门到精通)未完
  • 【科研绘图系列】R语言绘制蝶形条形图蝶形柱状堆积图
  • 【22-决策树】
  • 一款开源的远程桌面软件,旨在为用户提供流畅的游戏体验,支持 2K 分辨率、60 FPS,延迟仅为 40ms。
  • 多种适用于 MCU 固件的 OTA 升级方案
  • PHP现代化全栈开发:实时应用与WebSockets实践
  • 智能门锁:安全与便捷的现代家居入口
  • CMake笔记:Alias Target在哪些地方可以使用
  • python的艺术品收藏管理系统
  • [激光原理与应用-267]:理论 - 几何光学 - 胶卷相机的组成和工作原理
  • pytorch学习笔记-Loss的使用、在神经网络中加入Loss、优化器(optimizer)的使用
  • Video-R1论文解读
  • 前端框架选择之争:jQuery与Vue在现代Web开发中的真实地位-优雅草卓伊凡
  • 哈希表特性与unordered_map/unordered_set实现分析
  • 【Linux学习|黑马笔记|Day4】IP地址、主机名、网络请求、下载、端口、进程管理、主机状态监控、环境变量、文件的上传和下载、压缩和解压
  • 将 pdf 转为高清 jpg
  • OpenBMC中C++策略模式架构、原理与应用
  • 设计模式基础概念(行为模式):策略模式
  • c/c++实现 TCP Socket网络通信
  • ASCII与Unicode:编码世界的奥秘
  • 阿里云TranslateGeneral - 机器翻译SDK-自己封账单文件版本—仙盟创梦IDE
  • 机器学习实战篇--TF-IDF实战--名著红楼梦的文本数据处理
  • 亚马逊品牌权力重构:第三方卖家崛起下的竞争生态与系统性应对框架
  • 微信公众号推送文字消息与模板消息
  • 加密货币交易所开发:如何打造安全、高并发的数字资产交易平台?
  • 开源安全云盘存储:Hoodik 实现端到端数据加密,Docker快速搭建
  • 深度学习-卷积神经网络CNN-膨胀卷积、可分离卷积(空间可分离、深度可分离)、分组卷积
  • 【保姆级教程】CentOS 7 部署 FastDFS 全流程(避坑指南)
  • 具身智能Scaling Law缺失:机器人界的“摩尔定律“何时诞生?