猩猩の點燈
这个作者很懒,什么都没留下…
展开
-
Linux Kernel:目录
1、Linux Kernel:thread_info与task_struct2、Linux Kernel:栈指针sp与进程切换原创 2023-06-13 09:18:40 · 908 阅读 · 0 评论 -
Linux Kernel:scheduler之cfs
目录环境:一:前言二:数据结构三:CFS操作1、虚拟时钟(1)确定就绪队列的当前执行进程curr(2)获取主调度器就绪队列的实际时钟值now,该值在每个调度周期都会更新(3)计算当前和上一次更新负荷统计量时两次的时间差delta_exec(4)更新当前进程完全公平调度开始时间exec_start(5)更新当前进程在CPU上执行花费的物理时间sum_exec_runtime和虚拟时间vruntime(6)更新就绪队列上最小虚拟运行时间min_vruntime,必须小心保证该值是单调递增的完全公平调度的真正关键原创 2023-09-22 14:42:52 · 219 阅读 · 0 评论 -
Linux Kernel:调度器scheduler
内核针对若干连接起来的进程任务能公平地共享CPU时间,创造并行执行的错觉,并且需要考虑到不同任务的优先级问题提供了一种方法即schedule(调度器),调度器的一般原理是,按所能分配的计算能力,向系统中的每个进程提供最大的公正性,例如有N个进程,那么每个进程会得到总计算能力的1/N,所有的进程在物理上真实的并行执行。每次调用调度器时,都会挑选具有最高等待时间的进程,这些按照等待时间排队的结构称之为就绪队列。原创 2023-09-11 16:08:24 · 375 阅读 · 0 评论 -
Linux Kernel:syscall之fork与exec
上一节我们提到了进程的产生方式fork,exec与clone,本节将详细分析fork和exec族系统调用的具体实现。通常这些调用不是由应用程序直接发出的,而是通过一个中间层调用,即负责与内核通信的C标准库。定义了预处理常数,将所有系统调用的描述符关联到符号常数,诸如__NR_chdir,__NR_fchmod等。定义了内核内部调用系统调用所有的函数。原创 2023-08-29 11:17:40 · 401 阅读 · 0 评论 -
Linux Kernel:pid与namespace
Linux内核涉及进程和程序的所有算法都围绕Linux Kernel:thread_info与task_struct同时Linux提供了资源限制(resource limit, rlimit)机制,对进程使用系统资源施加某些限制,数据类型为:struct rlimit和struct rlimit64,该机制后续会新开一章详细分析。原创 2023-08-16 17:30:32 · 290 阅读 · 0 评论 -
Linux Kernel:栈指针sp与进程切换
在上一节《Linux Kernel:thread_info与task_struct》末尾我们分析出指向task_struct是sp_el0堆栈指针。本章将围sp以及与它密切关联的系统调用进行分析。原创 2023-07-07 15:45:01 · 527 阅读 · 0 评论 -
Linux Kernel:thread_info与task_struct
其他Exception level下,可以使用SP_EL0或者当前Exception level所对应的SP_ELn寄存器;具体使用SP_EL0还是SP_EL1是由PSTATE.SP决定,对应的寄存器是Spsel。若Spsel==0,那么强制使用SP_EL0,否则使用用SP_ELn。,每当切换开始时首先需要做的是保存当前进程上下文到内核栈中,准备next进程环境之后切到next进程堆栈。内核栈中的最低地址中,相较之前的版本避免了栈溢出的问题。用来描述进程的通用数据,而针对不同架构的数据则存储在。原创 2023-06-12 17:42:48 · 941 阅读 · 0 评论 -
Linux-udev
udev 是一个用户空间的设备管理器,用于为事件设置处理程序。作为守护进程, udev 接收的事件主要由 linux 内核生成,这些事件是外部设备产生的物理事件。总之, udev 探测外设和热插拔,将设备控制权传递给内核,例如加载内核模块或设备固件。udev 是一个用户空间系统,可以让操作系统管理员为事件注册用户空间处理器。为了实现外设侦测和热插拔,udev 守护进程接收 Linux 内核发出的外设相关事件;加载内核模块、设备固件;调整设备权限,让普通用户和用户组能够访问设备。原创 2023-02-16 18:16:58 · 919 阅读 · 0 评论