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

linux5-多任务--进程fork()

一.多任务:让系统具备同时处理多个任务的能力

1.如何实现多任务

1.1进程:操作系统上正在运行的程序,需要消耗内存和CPU

1.1.1 进程的生存周期:创建、调度、消亡
1.1.1.1进程的创建:每个进程被创建时,操作系统会为该进程分配4G的虚拟内存空间。

1.1.1.2进程的调度:微观串行、宏观并行

cpu在调度时常用的调度算法:时间片轮转调度算法、高优先级优先算法、先来先服务后来后执行、短作业优先

进程的状态:三态图

1

linux进程七态图

1.运行态(用户运行态、内核运行态) R

正在执行,且被CPU任务调度所执行的进程
2.就绪态 R
正在执行,没有CPU任务调度执行的进程(只缺少cpu)
3.可唤醒等待态 S
也称为睡眠态,阻塞等待资源的进程
4.不可唤醒等待态 D
不想被CPU任务调度所打断的进程任务可以设置为不可唤醒等待态
5.暂停态 T
被暂停执行的进程
6.僵尸态Z

进程执行结束,空间没有被回收
7.结束态 X
进程执行结束,空间被回收

1.1.1.3进程的消亡

提出进程

回收进程

1.1.2进程与程序的区别
进程程序
存储区域不同内存硬盘
状态不同动态执行过程、短暂的静态的数据集合、永恒的
关系一个进程可以运行多个程序程序运行可以产生多个进程
进程需要消耗CPU,进程间会资源竞争

1.1.3进程的常用命令

ps -aux:查看系统中所有进程的信息和状态

PID:进程的ID号   PPID:父进程的ID号

父进程:创建新进程的进程称父进程

子进程:创建出的新进程

操作系统运行时会打开一号进程,由一号打开2、3……进程

top:动态查看当前系统进程状态及CPU/内存占有率

ps -ef:查看进程状态信息和父子进程ID号

pstree:查看进程间的关系  pstree -p(关系族谱可带ID号) pstree -p id号(可查看某id的关系族谱图)

kill(给进程发送信号)

kill -l 查看kill相关命令的信号数

kill -信号编码 pid让某pid进程执行编码

ps -aux | grep a.out(组合命令)

|管道:将前面的输出作为后面的输入

grep(查找匹配)

jobs(查看后台进程编号)(当前终端)

fg(将后台编号将进程调到前台)

pid_t fork(void);

功能:通过拷贝父进程产生一个新的子进程

           拷贝父进程0-3G的虚拟内存

           内核中拷贝父进程的PCB块更新自己的PID号

            父子进程用户空间互相独立,数据不独立

参数无

返回值:

        成功:子进程的ID号返回给父进程、0返回给子进程

        失败:-1返回父进程

当产生子进程后,根据FIFO调度算法,先执行父进程,由于内核的PCB保存了父进程的产生子进程的位置,继续向下执行。

fork()&&fork()||fork()为五个进程,要根据返回值查看,是否fork()

pid_t  getpid() ;获取子进程ID

pid_t  getppid(); 获取父进程ID

http://www.dtcms.com/a/29432.html

相关文章:

  • 自动化测试中如何高效进行元素定位!
  • 第1章 快速认识线程
  • 人工智能 - 脑机融合:人类脑组织操控机器人,具身智能时代的革命性突破
  • 拥抱健康生活,开启养生之旅
  • 分布式数据库:架构演进、核心挑战与行业落地实践
  • SpringSecurity初始化的本质
  • Stream流简单使用
  • 第三章:前端技术栈与性能关联
  • 设计模式--访问者模式【行为型模式】
  • A000目录
  • 【C】识别一份嵌入式工程文件
  • Qt 保留小数点 固定长度 QString 格式化
  • npm在install时提示要安装python问题处理
  • python:多重继承、MRO(方法解析顺序)
  • [问题处理]BCLinux您的授权码是无效的,请获得正确授权码
  • 从传统到轻量级5G:网络架构演变与优化路径
  • 讯飞唤醒+VOSK语音识别+DEEPSEEK大模型+讯飞离线合成实现纯离线大模型智能语音问答。
  • C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector
  • mongoose和lwip有啥区别
  • 基于SpringBoot+Vue癌症患者交流平台的设计与实现
  • MYSQL的binlog有几种格式分别有什么区别
  • ubuntu追加path环境变量
  • git-提交时间和作者时间的区别
  • 宝塔mysql8.0设置数据库区分大小写
  • 英伟达(NVIDIA)芯片全解析:专业分类、应用场景与真实案例
  • Deepseek私有化部署
  • 车载调频发射机-参观、考察、学习随车讲解的好助手-车载移动调频发射车队解说导览系统应用
  • 什么是uniapi
  • 有道翻译逆向
  • 机器学习实战(9):神经网络基础——从感知机到多层感知机