深入linux内核架构读书笔记-进程管理和调度

简介: 看了这本书以后才知道自己对Linux了解的肤浅,希望写一些笔记对大家有所帮助。 一。进程分类: 1、硬实时进程例如飞机操作系统 2、软实时进程有些延迟 3、普通进程,分配进程优先级。

看了这本书以后才知道自己对Linux了解的肤浅,希望写一些笔记对大家有所帮助。

一。进程分类:

1、硬实时进程例如飞机操作系统

2、软实时进程有些延迟

3、普通进程,分配进程优先级。

二。进程生命周期

1. 运行 分配CPU时间之后进入运行状态

2. 等待 进程回收CPU资源进入等待状态

3.睡眠  进程等待事件,状态从运行转到睡眠,但是无法从睡眠转到运行,只能转到等待,然后进入循环

4.终止 程序退出

5. 僵尸 正常退出程序的流程是程序必须由另外一个进程或者用户杀死通过SIGTERM或SIGKILL信号,第二个重要的进程的父进程在子进程终止时必须调用或者已经调用wait4系统调用。僵尸程序就是正常退出程序,但同时没有执行wait4函数,其数据尚未从进程表删除之前,处于僵尸状态。系统重启以后即可解决僵尸进程。

三。进程内核结构

代码省略,太过复杂主要分成以下几个方面

1. 状态和执行信息,例如进程pid号,到父进程及其他有关进程的指针、优先级和程序执行有关的时间信息例如CPU时间

2.有关已经分配的虚拟内存信息

3.进程身份凭据例如uid,gid以及权限

4.task_struct定义在sched.h定义了STATE状态

TASK_RUNNING 进程处于可以运行状态

TASK_INTERRUPTIBLE 针对等待某事件或其他资源的睡眠进程设置的

TASK_UNINTERRUPTIBLE 因为内核指示而停用的睡眠进程

TASK_STOPPED 停止运行

TASK_TRACED

EXIT_ZOMBIE 僵尸

EXIT_DEAD 值wait系统调用已经发出,而进程完全从系统移除之前的状态

 

5. 资源限制

resource.h

struct rlimit{

         unsigned long rlim_cur;

         unsigned long rlim_max;

}

rlim_cur是进程当前的资源限制称为soft limit

rlim_max是hard limit

系统调用函数setrlimit增减当前限制

系统调用函数getrlimits检查当前限制

setrlimit资源限制:

RLIMIT_CPU 按毫秒计算的最大CPU时间

RLIMIT_FSIZE 允许的最大文件长度

RLIMIT_STACK 用户状态栈的最大长度

RLIMIT_DATA 数据段的最大长度

RLIMIT_CORE 内存转储文件的最大长度

RLIMIT_RSS 常驻内存的最大尺寸

RLIMIT_NPROC 与进程真正UID关联的用户可以拥有的进程的最大数目

RLIMIT_MEMLOCK 不可换出页的最大数目

RLIMIT_AS 进程占用的虚拟地址空间的最大尺寸

RLIMIT_LOCKS 文件锁的最大数目

RLIMIT_SIGPENDING 待决信号的最大数目

RLIMIT_MSGQUEUE 信息队列的最大数目

RLIMIT_NICE 非实时进程的优先级

RLIMIT_PTPRIO 最大的实时优先级

查看以前内容通过cat /proc/self/limits

 

目录
相关文章
|
3天前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
50 34
|
7天前
|
消息中间件 Linux C++
c++ linux通过实现独立进程之间的通信和传递字符串 demo
的进程间通信机制,适用于父子进程之间的数据传输。希望本文能帮助您更好地理解和应用Linux管道,提升开发效率。 在实际开发中,除了管道,还可以根据具体需求选择消息队列、共享内存、套接字等其他进程间通信方
39 16
|
1月前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
117 20
|
1月前
|
安全 Linux 测试技术
Intel Linux 内核测试套件-LKVS介绍 | 龙蜥大讲堂104期
《Intel Linux内核测试套件-LKVS介绍》(龙蜥大讲堂104期)主要介绍了LKVS的定义、使用方法、测试范围、典型案例及其优势。LKVS是轻量级、低耦合且高代码覆盖率的测试工具,涵盖20多个硬件和内核属性,已开源并集成到多个社区CICD系统中。课程详细讲解了如何使用LKVS进行CPU、电源管理和安全特性(如TDX、CET)的测试,并展示了其在实际应用中的价值。
|
1月前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
95 15
|
2月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
121 13
|
存储 安全 编译器
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
|
存储 算法 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
94 1
|
存储 算法 Java
[笔记]读书笔记 C++设计新思维《二》技术(Techniques)(二)
[笔记]读书笔记 C++设计新思维《二》技术(Techniques)(二)
|
存储 编译器 程序员
C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象
C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象
100 0

热门文章

最新文章