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

20250825的学习笔记

一、进程的含义

        进程是一个程序执行的过程,会去分配内存资源,cpu的调度

二、进程和程序的区别

(1)程序:静态

        存储在硬盘中代码,数据的集合

(2)进程:动态

①程序执行的过程,包括进程的创建、调度、消亡。

        .C ----> a.out-----> process(pid)

                1)程序是永存,进程是暂时的

                2)进程有程序状态的变化,程序没有

                3)进程可以并发,程序无并发

                4)进程与进程会存在竞争计算机的资源

                5)一个程序可以运行多次,变成多个进程

②内存的分布

        0-3G,是进程的空间,3G-4G是内核的空间。

③进程分类

        1.交互式进程。

        2.批处理进程 shell脚本。

        3.守护进程。

三、进程的作用

        并发,并行区别。

四、进程的状态

        3个状态,就绪->执行态->阻塞(等待,睡眠)基本操作系统

        Linux中的状态,运行态,睡眠态,僵尸,暂停态。

五、查询进程相关命令

1.ps aux

        查看进程相关信息。

注:

        1.就绪态、运行态R

        2.睡眠态、等待态

                可唤醒状态 S

                不可唤醒状态 D

        3.停止态

        4.僵尸态 T

        5.结束态

2.top

        根据CPU占用率查看进程相关信息。

3.kill和killall

        kill -2 PID 默认发15

发送信号+PID对应的进程,默认接收者关闭

        killall -9 进程名

发送信号 进程名对应的所有进程

        killall a.out

4.apt install / dnf install

        ---安装

六、进程函数

1.fork

        pid_t fork();叉子

注:

        ①一次调用,会返回两次。

        ②子进程先运行和是父进程先进程,顺序不确定。

        ③变量不共享。

        ④子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。

(1)功能:通过该函数可以从当前进程中克隆一个同名新进程。

注:

        ①克隆的进程称为子进程,原有的进程称为父进程。

        ②子进程是父进程的完全拷贝。

        ③子进程的执行过程是从fork函数之后执行。

        ④子进程与父进程具有相同的代码逻辑。

(2)返回值:int类型的数字

        在父进程中:成功 返回值是子进程的pid号>0

            失败 返回-1

        在子进程中:成功 返回值 0

            失败 无

2.getpid

        pid_t getpid(void);

(1)功能:

                获得调用该函数进程的pid

(2)参数:

                缺省

(3)返回值:

                进程的pid

3.getppid

        pid_t getppid(void);

(1)功能:

                获得调用该函数的父进程的pid号

(2)参数:

                缺省

(3)返回值:

        返回父进程的id号

4.应用场合

        1)一个进程希望复制自己,使父子进程同时执行同的代码段。网络服务中会比较多见。

        2)一个进程需要执行一个不同的程序。

5.父子进程的关系

        子进程是进程的副本。子进程获得父进程数据段,堆,栈,正文段共享。在fork之后,一般情况那个会先运行,是不确定的。如果非要确定那个要先运行,需要IPC机制。

6.区别

        1)fork的返回值

        2)pid不同

七、进程的终止

1) main 中return

2)exit,c库函数,会执行io库的清理工作,关闭所有 的流,以及所有打开的文件。已经清理函数(atexit)。

3)_exit,_Exit 会关闭所有的已经打开的文件,不执行清理函数。

4)主线程退出

5)主线程调用pthread_exit

6)abortO

7) signal kill pid

8)最后一个线程被pthread_cancle

八、进程的退出

注:僵尸进程:进程执行结束但空间未被回收变成僵尸进程。

1.exit 库函数

        退出状态,终止的进程会通知父进程,自己使如何终止的。如果是正常结束(终止),则由exit传入的参数。如果是异常终止,则有内核通知异常终止原因的状态。任何情况下,负进程都能使用wait,waitpid获得这个状态,以及资源的回收。

        void exit(int status)

        exit(1); 25.6 KB/s 598 KB/s

(1)功能:

                让进程退出,并刷新缓存区

(2)参数:

                status:进程退出的状态

        EXIT_SUCCESS        0

        EXIT_FAILURE          1

(3)返回值:

                缺省

2._exit系统调用

        void _exit(int status);

(1)功能:

                让进程退出,不刷新缓存区

(2)参数:

                status:进程退出状态

(3)返回值:

                缺省

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

相关文章:

  • 2025年09月计算机二级Java选择题每日一练——第七期
  • 配置单区域 OSPF
  • 集群与集群概念
  • 自动修改excel 自动统计文件名称插入 excel辅助工具
  • 升级openssh后ORACLE RAC EM 安装失败处理
  • 【机器学习入门】1.2 初识机器学习:从数据到智能的认知之旅
  • C#_性能优化高级话题
  • MySQL数据备份与恢复全攻略
  • 10-应用调试与性能优化
  • 嵌入式与机器视觉的交叉点:构建智能化设备的实时视频通路
  • [pilot智驾系统] 控制守护进程(controlsd) | 纵向横向 | 比例-积分-微分(PID)
  • AR技术赋能农业机械智能运维
  • imx586手册和相机寄存器部分解读
  • 钉钉推出下一代AI办公应用形态:钉钉ONE
  • 智谱多模态系列:GLM-4.5V 环境配置与本地部署
  • java全局处理Date和LocalDateTime,统一响应固定格式
  • 无刷电机控制 - STM32F405+CubeMX+HAL库+SimpleFOC08,速度闭环控制(有电流环)
  • xm-select多选组件在layer.open中使用、获取、复现
  • 交叉导轨在医疗设备领域中的应用
  • 5G与6G技术演进与创新对比分析
  • 在线旅游及旅行管理系统项目SQL注入
  • 力扣(用队列实现栈)
  • STL——vector的使用(快速入门详细)
  • c++26新功能—带原因说明的删除函数
  • 用 PyTorch 从零实现 MNIST 手写数字识别
  • 微论-神经网络中记忆的演变
  • volatile关键字:防止寄存器操作被优化
  • Java设计模式-装饰器模式:从“咖啡加料”到Java架构
  • 动态线程池核心解密:从 Nacos 到 Pub/Sub 架构的实现与对比
  • 使用百度统计来统计浏览量