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

0804 进程

Part 1.梳理思维导图

一.什么是进程

        1.进程是程序的一次执行过程,是资源调度分配的独立单元

        2.进程和程序的区别:

a.进程是在内存上存在的,会有创建和消亡的过程

b.程序是在硬盘上存在的

        3.CPU的调度机制?

时间片轮转机制:cpu通过超快的处理速度,在执行完一个进程后再执行其他进程,让时间间隔看不出来

        4.进程是资源分配的最小单位

        5.进程的意义:

可以让多个死循环一起执行

二.进程的五态

1.创建态

2.就绪态:创建态申请了cpu资源

3.运行态:获得cpu资源的就绪态就会进入运行

4.终止态:运行态运行结束

5.阻塞态:输入io函数,使运行态阻塞(可以输入io函数进入就绪态)

三.进程的标识

        1.pid:进程id(process id)

        2.ppid:父进程id(parent process id)

        3.pgid:进程组id(process group id)

        4.SID:会话id(session id)

        5.一个会话包含一个前台进程组id,多个后台进程组id,进程组又包含多个进程id。

四.三个特殊进程id

        1.(0)indel进程:操作系统的引导进程,能创建1,2

        2.(1)init进程:初始化进程,收养没有父进程的进程

        3.(2)kthread进程:用户进程,线程调度

五.进程shell语句ps

        1.ps -ef:查看每一个进程

        2.ps -aux:查看进程的内存使用情况

        3.ps -ajx/ps -ajx | grep a.out:打印进程树/只打印a.out的进程树

六.查看进程的id号

        1.pidof  进程名

七.杀死进程

        1.kill -l:查看所有信息

a. (2)SIGINT 用法和仔控制台输入ctrl c一样

b.(9)SIGKILL 杀死进程,并且该信号不能被捕获和忽略

c.(11)SIGSEGV 和段错误产生的杀死方法一样

d.(19)SIGSTOP ctrl z一样的作用,将进程挂起,并且该信号不能被捕获和忽略

        2.kill的用法:

kill -9 进程id

kill -9 1001//用第九个信号的方法杀死进程

        3.killall的用法

killall -9 进程名

killall -9 a.out//当a.out有多个进程的时候,就可以一起杀死

八.进程的状态

D:不可中断的休眠态

R:运行态

S:可中断的休眠态

T:挂起态

t:bug调试状态

W:分页

X:死亡态

Z:僵尸态

< 高优先级 (对其他用户不友好)

N 第优先级(对其他用户友好)

L 将页面锁定在内存

s 会话领导者

l 多线程

+ 运行在前端

九.进程的内存

        1.虚拟内存

                a.虚拟内存的划分

内核:3G - 4G

用户空间:0 - 3G

        栈区:局部变量以及参数,计算机自动申请鹤释放,内存生长方向高向低

        堆区:程序员手动申请和释放,malloc和free,内存生长方向低向高

        静态区:.bss .data .RO .text

                b.堆区栈区区别

1.堆区手动申请,栈区自动申请

2.栈区存储变量和参数,堆区需要申请

3.栈区从高到低,堆区从低到高

4.栈区内存基本没有碎片化,堆区碎皮化严重。

5.栈区8M,堆区2G - 3G

                c.堆栈溢出

空间不足

例如:大型递归需要很大空间

                d.内存泄漏

堆区申请了没有释放,或者释放不完全

解决方法:用gdb用指针指向堆区首地址

        2.物理内存和虚拟内存

1.物理内存分为多个页框,虚拟内存分为多个页表,大小相同

2.虚拟内存的页表对应着物理内存的页框,通过控制虚拟内存来控制物理内存,更安全更独立

3.虚拟内存分为内核空间和用户空间,内核空间各进程之间共享,而用户空间不共享

十.进程相关函数

        1.fork

                a.功能:创建子进程,子进程拷贝父进程用户空间
                b.格式
pid_t fork(void);
                c.例子
pid_t pid = fork();//给pid父进程创建子进程
                d.创建n次的子进程个数:2^n
                e.写实拷贝:

1.子进程拷贝的是父进程的用户空间,当数据没有改变时,子父进程指向的是同一片空间

2.当子或父进程其中有一个在申请后改变,则两个进程指向的空间不同

3.这样可以提高速率和空间使用

Part 2.牛客网刷题

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

相关文章:

  • 【笔记】重学单片机(51)(下)
  • 数据结构——并查集及C++实现
  • Javascript面试题及详细答案150道(046-060)
  • 5天从0到1!用阿里Qwen3-Coder开发故障调度指挥室系统,运维也能搞定开发
  • 嵌入式 C 语言入门:函数指针基础笔记 —— 从计算器优化到指针本质
  • 文本转语音(TTS)脚本
  • 【项目实践】在系统接入天气api,根据当前天气提醒,做好plan
  • C语言的控制语句
  • 16day-人工智学习-机器学习-特征工程
  • 【世纪龙科技】虚拟技术助力职教汽车自动变速器拆装虚拟实训软件
  • RFID技术在汽车倍速链中的应用:驱动智能制造的隐形引擎
  • Windows/Linux入侵排查
  • CPP学习之多态
  • Python高频元素分析技术:高效找出序列中出现次数最多的元素
  • 【Unity3D实例-功能-镜头】第三人称视觉
  • FeiQ飞秋安装教程:FeiQ.1060559168 详细安装步骤(附注意事项)​
  • 【QT】常⽤控件详解(三)常用按钮控件PushButton RadioButton CheckButton Tool Button
  • 茗鹤工业低代码可视化技术开发平台
  • 网络相关命令
  • 全国计算机二级C语言二级考试通关笔记
  • 风光储并网协同运行simulink仿真模型实现
  • [找出字符串中第一个匹配项的下标]
  • MiDSS复现
  • Codeforces Round 1010 (Div. 2, Unrated)
  • 8.4IO进程线程——进程
  • MySQL 基本操作入门指南
  • 代码随想录day55图论5
  • 通往L4之路:构建自我进化的智能驾驶决策大脑
  • Dubbo 3.x源码(32)—Dubbo Provider处理服务调用请求源码
  • CSS 安卓应用卸载碎片化动画效果