深入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

 

目录
打赏
0
0
0
0
680
分享
相关文章
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
128 67
【Linux】进程概念和进程状态
本文详细介绍了Linux系统中进程的核心概念与管理机制。从进程的定义出发,阐述了其作为操作系统资源管理的基本单位的重要性,并深入解析了task_struct结构体的内容及其在进程管理中的作用。同时,文章讲解了进程的基本操作(如获取PID、查看进程信息等)、父进程与子进程的关系(重点分析fork函数)、以及进程的三种主要状态(运行、阻塞、挂起)。此外,还探讨了Linux特有的进程状态表示和孤儿进程的处理方式。通过学习这些内容,读者可以更好地理解Linux进程的运行原理并优化系统性能。
56 4
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
122 34
|
1月前
|
Linux:守护进程(进程组、会话和守护进程)
守护进程在 Linux 系统中扮演着重要角色,通过后台执行关键任务和服务,确保系统的稳定运行。理解进程组和会话的概念,是正确创建和管理守护进程的基础。使用现代的 `systemd` 或传统的 `init.d` 方法,可以有效地管理守护进程,提升系统的可靠性和可维护性。希望本文能帮助读者深入理解并掌握 Linux 守护进程的相关知识。
71 7
|
1月前
|
Linux 进程前台后台切换与作业控制
进程前台/后台切换及作业控制简介: 在 Shell 中,启动的程序默认为前台进程,会占用终端直到执行完毕。例如,执行 `./shella.sh` 时,终端会被占用。为避免不便,可将命令放到后台运行,如 `./shella.sh &`,此时终端命令行立即返回,可继续输入其他命令。 常用作业控制命令: - `fg %1`:将后台作业切换到前台。 - `Ctrl + Z`:暂停前台作业并放到后台。 - `bg %1`:让暂停的后台作业继续执行。 - `kill %1`:终止后台作业。 优先级调整:
93 5
Linux 进程管理基础
Linux 进程是操作系统中运行程序的实例,彼此隔离以确保安全性和稳定性。常用命令查看和管理进程:`ps` 显示当前终端会话相关进程;`ps aux` 和 `ps -ef` 显示所有进程信息;`ps -u username` 查看特定用户进程;`ps -e | grep <进程名>` 查找特定进程;`ps -p <PID>` 查看指定 PID 的进程详情。终止进程可用 `kill <PID>` 或 `pkill <进程名>`,强制终止加 `-9` 选项。
38 3
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
[笔记]读书笔记 C++设计新思维《一》基于策略的类设计(下)
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
144 1
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
137 1

热门文章

最新文章