进程地址空间 Posted on 2020-03-23 | Edited on 2020-04-02 | In 深入理解Linux内核 进程的地址空间 由允许进程使用的全部线性地址组成 与创建、删除线性区相关的系统调用 内存描述符 内存描述符:包含与进程地址空间有关的全部信息。详细字段见P354 线性区 每个线性区描述符表示一个线性地址空间 线性区对象的字段 线性区数据结构 进程所拥有的所有线性区通过链表链接在一起 内 ... Read more »
内存管理 Posted on 2020-03-21 | Edited on 2020-04-02 | In 深入理解Linux内核 页框管理 Linux采用4KB页框大小作为标准内存分配单元 页描述符 描述页框的信息 页描述符字段 _count: 页的引用计数器,该字段为-1标示页框空闲 flags: 描述页框状态的标志 非一致内存访问(NUMA) 不同CPU访问页面所需的时间不一样 对于每个CPU,内核试图把耗时 ... Read more »
进程调度 Posted on 2020-03-20 | Edited on 2020-04-02 | In 深入理解Linux内核 调度策略 目标 进程响应时间尽可能快 作业吞吐量尽可能高 尽可能避免进程的饥饿现象 低优先级和高优先级进程尽可能调和 Linux进程调度 基于分时方式 动态优先级,避免饿死 进程分类 交互式进程: 响应时间要求高 批处理进程: 不需要尽快响应,吞吐量尽可能大 实时进程:响应时间要求高 ... Read more »
定时测量 Posted on 2020-03-17 | Edited on 2020-04-02 | In 深入理解Linux内核 时钟和定时器电路 实时时钟(RTC) 独立于CPU,单独供电 Linux只用RTC获取时间和日期 时间戳计数器(TSC) CPU内部提供 与处理器频率有关 可以获得更精确的时间测量 可编程间隔定时器(PIT) CPU本地定时器 高精度事件定时器 ACPI电源管理定时器 Lin ... Read more »
内核同步 Posted on 2020-03-16 | Edited on 2020-04-02 | In 深入理解Linux内核 内核为不同请求服务 内核抢占 如果进程正在执行内核函数时,允许发生内核切换,则这个内核就是可抢占内核 可抢占内核的特点: 一个在内核态运行的进程,可能在执行内核函数期间被另外一个进程取代 同步原语 Linux内核使用的同步技术 每CPU变量 系统为每个CPU分配数据,一个CPU不能访 ... Read more »
中断和异常 Posted on 2020-03-15 | Edited on 2020-04-02 | In 深入理解Linux内核 中断信号的作用 作用 允许处理器执行正常控制流之外的代码 中断与进程上下文切换的区别 中断或异常处理程序执行的代码不是一个进程。 相比于上下文切换,中断的上下文很少,需要时间更少 中断和异常 中断(CPU外其他设备产生) 可屏蔽中断:可被屏蔽,屏蔽后控制单元忽略该中断 非屏蔽中断:少数几 ... Read more »
进程 Posted on 2020-03-13 | Edited on 2020-04-02 | In 深入理解Linux内核 进程 进程 分配系统资源的实体(CPU、内存等) 创建时,子进程拷贝父进程的地址空间 轻量级进程 用于实现线程 与进程相比,轻量级线程共享一些资源(地址空间,打开的文件等) 线程 系统调度的最小单位 进程描述符 进程描述符 包含进程的优先级、状态、地址空间等信息(与进程相关的所有信 ... Read more »
内存寻址 Posted on 2020-03-11 | Edited on 2020-04-02 | In 深入理解Linux内核 内存地址 逻辑地址 段+偏移量 在机器语言指令中使用的地址 线性地址(虚拟地址) 页式内存转换前的地址 物理地址 芯片级的内存单元地址 硬件中的分段 检查段选择符的TI字段,决定段描述符保存在哪一个描述符表中(TI = 0 表示段描述符在GDT中;TI = 1 表示端描述符在 ... Read more »
Linux 内核简介 Posted on 2020-03-08 | Edited on 2020-03-19 | In 深入理解Linux内核 Linux与其它类Unix内核的比较 宏内核: 基于模块,弥补了部分宏内核的劣势 模块按需装载 内核线程 多线程支持: 轻量级进程 抢占式 多处理器支持 文件系统 操作系统基本概念功能 与硬件交互 为应用程序提供执行环境 多用户系统 并发 独立 进程 程序执行的一个实例 内核体系结构 宏内 ... Read more »
IO模型 Posted on 2019-08-10 在《UNIX网络编程卷1》中,提到了五种IO模型,分别如下: 阻塞IO(Blocking IO) 非阻塞IO(nonblocking IO) IO多路复用(IO multiplexing) 信号驱动的IO(SIGIO) 异步IO(asynchronous IO) 对于一个IO操作,通常可以将其分 ... Read more »