1、cpu进程状态

linux中进程状态如下图:

浅度睡眠为进程等待资源或中断响应,即使资源没有拿到也可以被唤醒;深度睡眠为进程等待资源,拿到资源后进入就绪状态。

僵死状态为进程死亡,但还没有被父进程执行wait操作,此时进程中只剩下task_struct,其他资源已经被释放,当父进程执行完wait操作后,子进程的僵死状态被清除。如果一个父进程死了,那该父进程下面的子进程将被托孤给离该父进程最近的收割进程,该进程内含有wait操作,监控子进程。

暂停状态是进程暂时被挂起,ctrl+Z可以暂停进程,按fg继续执行进程。可用于作业控制。

2、进程描述符

Linux进程描述符采用task_struct结构体描述,该结构体内含有五个部分:

Linux中针对task_struct进行调度。多线程应用中同一个进程创建的多个线程它们pid和进程的pid一样,但是每个线程拥有不同的tid。

Linux对于进程描述符有三种表现形式,task_struct双向链表,进程树,哈希表。可以通过这三种数据格式描述同一个进程。

3、linux进程创建

创建进程有三种方式

Fork 创建子进程,将父进程的资源复制一份给子进程,task_struct内五项内容不共享,fork的返回值为0,必须要有mmu进行页表管理

Vfork 创建子进程,父进程和子进程共享mm,其他四项内容不共享,没有mmu的方式下使用

Clone(pthread_create) 创建子线程,资源共享,task_struct内五项内容共享。

三个函数最终都是调用do_fork。

在fork时,父进程和子进程最终会有不一样的物理地址,必须要有mmu才行。

4、进程生命周期

系统上电以后最早的进程为进程0,当进程0创建完进程1(init)后变化为idle进程,该进程在linux中优先级最低,当执行到该进程时,表明系统很闲,进入省电状态WFI

5、linux进程调度

进程类型分为I/O消耗性,CPU消耗性。

I/O消耗性是能够及时响应I/O中断消息,用户体验好,类似于手机。

CPU消耗性是运算好,用户体验差。

一个进程是I/O消耗性或是CPU消耗性只有进程运行过程中才能知道,不是由用户创建时选定的。

6、linux进程调度

linux进程分为两个类别

0-99采用SCHED_FIFO或SCHED_RR模式,直接抢占,数字越小优先级越高(linux内部用99-数字),现在也可以设定rt_period_us或rt_runtime_us,指定抢占式进程最多不超过一个固定值,比如1ms中最多执行0.95ms

100-139采用SCHED_OTHER模式,非抢占,每个进程都有时间来执行,通过nice来判断进程优先级。

Nice -20 对应 100,优先级高,每次被分到更多的时间片执行

Nice 19 对应 139,优先级低,分到的时间片较少

可以通过renice –n -5 –g pidof设定某个pidof的nice值。

切换FIFO RR或者OTHER命令为

Chrt –a –f –p 50 pid 修改为FIFO

Chrt –a –r –p [1..99] pid 修改为RR

Chrt –a –o –p -0 1024 修改为OTHER

后续linux采用CFS红黑树方式进行OTHER内存调度,每次选取VT值最小的进程进行调度

进程的virtual time=physical time/权重

权重和nice相关,nice值越小权重越大,得到的vt越小,但是如果pt执行的次数越多,pt越大,vt也会变大。

新内核中加入组的概念,不同组直接采用CFS调度,组内采用CFS调度。加入组的概念后可以进行CPU流量控制,每个组设置不同,获得的CPU资源不同。

创建组:/sys/fs/cgroup/cpu内创建mkdir A,mkdir B

将进程加入该组:sh –c ‘echo pod > cgroup.procs’

修改组内的配置 sh –c ‘echo 100 > cpu.shares’ shares越大,该组cpu拿到的时间片越多

Sh –c ‘echo 1000> cpu_cfs_quota_us’ 值越大,该组cpu每一个时间片内拿到的时间越多

7、smp负载均衡

负载均衡为硬件自动实现,RR和FIFO自动均分到每个核上执行,每个核进行推拉操作获取进程,每个核的调度算法都一样。可以通过命令指定将任务放到哪个核上。

Pthread_attr_setaffinity_np()内含有设置CPU掩码,指定在哪个CPU上面跑。0X1为CPU1,0x2为CPU2。

宋宝华Linux培训笔记-Linux进程管理相关推荐

  1. linux内核笔记二 进程管理

    三.系统的进程管理 1.系统的进程运转方式 系统时间 (jiffies 系统滴答) cpu内部有一个RTC(系统的定时器),会在上电的时候调用mktime函数算出1970年一月一日0时开始到当前开机点 ...

  2. 宋宝华:slab在内核内存管理和用户态Memcached的双重存在

    很多基础的概念,将跨越软件的层次而存在.比如slab,对于内核人员,我们都知道slab是buddy之上的一层. 因为buddy作为Linux内核最底层的内存管理器,它分配1页,2页,4页,2^n页,但 ...

  3. 宋宝华Linux培训笔记-Linux多线程

    1.POSIX标准多线程 发送给进程下一组线程的信号将被共享,被其中任意一个线程处理.同一进程创建的线程同生死,如果收到一个kill信号,这一组task_struce都会退出. 2.NPTL模型 内核 ...

  4. 【Linux 内核笔记】进程管理

    文章目录 进程创建 进程终结 孤儿进程 小结 clone()-fork()-exec()-exit() 子进程结束ZOMBIE 父进程wait4() 进程描述符task_struct进程所有信息 由t ...

  5. Linux学习笔记_12_进程管理(ps, top)服务管理(service)查看系统网络(netstat)

    1. 进程的基本介绍 在 LINUX 中, 每个执行的程序(代码) 都称为一个进程. 每一个进程都分配一个 ID 号. 每一个进程, 都会对应一个父进程, 而这个父进程可以复制多个子进程. 例如 ww ...

  6. 宋宝华:评Linux 5.13内核

    目录 Misc cgroup Landlock安全模块 系统调用的堆栈随机化 printk无锁ringbuffer的进一步优化 BPF可调用内核函数 公共的IO PAGE Fault支持 Linux ...

  7. 宋宝华:LEP(Linux易用剖析器) 是什么,为什么以及怎么办(2)

    LEP(LINUX EASY PROFILING) 是Linuxer之LEP项目组(Barry Song,Mac Xu,陈松等以及陈莉君教授/西邮Linux 3+1实验室)正在致力于打造的一个开源项目 ...

  8. linux pdf 宋宝华,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    原创 宋宝华 Linux阅码场 2018-04-10 前言 网上关于BIO和块设备读写流程的文章何止千万,但是能够让你彻底读懂读明白的文章实在难找,可以说是越读越糊涂! 我曾经跨过山和大海 也穿过人山 ...

  9. 宋宝华: 用off-cpu火焰图进行Linux性能分析

    在<宋宝华:火焰图:全局视野的Linux性能剖析>一文中,我们主要看了on-cpu火焰图,理解了系统的CPU的走向的分析.但是,很多时候,单纯地看on-cpu的情况(什么代码在耗费CPU) ...

最新文章

  1. 全球 35 大开源公司都在这里!
  2. AD5933测量容性负载时的神秘振荡信号
  3. java static 变量 初始化一次_关于java static变量初始化的疑问
  4. 【软件开发底层知识修炼】二十五 ABI之函数调用约定二之函数返回值为结构体时的约定
  5. java 调用dll内存泄露_对 精致码农大佬 说的 Task.Run 会存在 内存泄漏 的思考
  6. 12步让你的web1.0变成web2.0
  7. Ubuntu 禁止集成noueavu驱动并安装NVIDIA显卡驱动
  8. 谷歌最新版本浏览器如何兼容flash插件
  9. 软考试题合格率如何?
  10. 路由器WDS桥接教程
  11. [转]一个计算机高手的成长
  12. 一个公司存在不同职位,不同职位计算工资的方法也不相同。工资可能是固定的,也可能根据销售额或工作量来计算。假设公司有三种职务:经理、计件工人和计时工人:他们的工资组成分别为:
  13. 内网穿透软件对比——cpolar : 花生壳(下)
  14. oracle配置话清单,oracle 几个常用话语
  15. 如何提高接口自动化测试的有效性覆盖和案例有效性
  16. python N位水仙花数
  17. VsCode 使用less
  18. SnapMotion for Mac(视频截图工具)
  19. ERR_SPDY_PROTOCOL_ERROR错误解决
  20. 副业项目做什么比较靠谱,如何知道自己适合做什么?

热门文章

  1. 如何编写无法维护的代码
  2. 计算机内存不足黑屏怎么办,win10内存不足会黑屏吗_win10电脑内存不足黑屏了怎么办...
  3. 每日新闻:华为获首个微模块产品PUE测试证书;Linux发布Acumos AI开源架构平台;商汤技联手华侨城中学打造智能实验学校...
  4. 关于图片转base64的加密解密
  5. 怎么更新opengl.dll文件_iOS 13更新体验:测试版升级教程!
  6. 如何把很多照片拼成一张照片_如何能把多张照片拼凑在一张上图片上
  7. 中国医科大学计算机试题,中国医科大学《计算机应用基础》在线作业和参考答案...
  8. 爬虫爬取豆瓣电影排行,保存到excel和SQLite
  9. 群晖经典第三方套件_使用群晖第三方套件进行IPV6的DDNS
  10. Block Recurrent Transformer:结合了LSTM和Transformer优点的强大模型