
Linux
文章平均质量分 85
asada
Bread Sir
记录算法之路
展开
-
Linux内核设计与实现——第一章 Linux内核简介
1.1 Unix Unix系统是一个强大、健壮和稳定的操作系统。因为它: Unix很简洁。仅提供几百个系统调用。 在Unix中,所有的东西都被当做文件对待。这种抽象使对数据和对设备的操作是通过一套相同的系统调用接口来进行的。 Unix的内核和相关的系统工具软件是用C语言编写而成,因此被广大开发人员接受。 Unix的进程创建迅速,并且有 fork() 系统调用。 Unix提供一套非常简单但又很稳定的进程间通信元语。 1.2 Linux Linux是类Unix系统,但不是Unix,因为它没有直接使用Unix原创 2021-05-05 20:03:56 · 123 阅读 · 0 评论 -
Linux内核设计与实现——第三章 进程管理
进程 定义 何为进程? 就是处于执行器的程序。但不仅仅局限于一段可执行程序代码,通常还包括其他资源,如打开的文件、挂起的信号、内核内部数据、处理器状态、一个或多个具有内存映射的内存地址空间及一个或多个执行线程,还包括用来存放全局变量的数据段等。(即 程序不是进程,进程是处于执行期间的程序及相关资源的总称) 何为线程? 执行线程就是在进程中活动的对象。每个线程都拥有一个独立的程序计数器、进程栈和一组进程寄存器。 内核调度的对象是线程。对于Linux而言,线程和进程并不区分,可以说线程只不过是一种特殊的原创 2021-05-08 21:36:03 · 191 阅读 · 0 评论 -
Linux内核设计与实现——第四章 进程调度
调度程序负责决定将哪个进程投入运行,何时运行和运行多长时间。 进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统。 多任务 多任务操作系统就是能同时并发地交互执行多个进程的操作系统。 多任务系统分类两类: 非抢占式多任务 除非进程自己主动停止运行,否则它会一直执行。进程主动挂起称为“让步” 抢占式多任务 在此模式下,由调度程序来决定什么时候停止一个进程的运行。这种强制的挂起动作叫“抢占”。进程被抢占前有一个预先设置好的时间——进程的时间片,它是分配给每个可运行进程的处理器时间段原创 2021-05-11 17:29:10 · 151 阅读 · 0 评论 -
Linux内核设计与实现——第五章 系统调用
主要介绍Linux系统调用的规则和实现方法。 1 与内核通信 系统调用在用户空间进程和硬件设备之间添加一个中间层,其作用有: 为用户空间提供了一种硬件的抽象接口 系统调用保证系统的稳定和安全 在Linux中,系统调用是用户空间访问内核的唯一手段,也是除异常和陷入外,内核唯一的合法入口。 2 API、POSIX 和 C 库 一般情况,应用程序通过API而不是直接通过系统调用编程。 而最流行的应用编程接口是基于POSIX标准,是由IEEE的一组标准组成,目标是提供一套大体上基于Unix的可移植操作系统标原创 2021-06-01 21:02:08 · 164 阅读 · 0 评论 -
Linux内核设计与实现——第七章 中断和中断处理
为什么要有中断机制? 计算机有很多的硬件设备,如硬盘、键盘、鼠标等,操作系统需要对这些硬件设备进行管理,然而处理器的速度和外围硬件设备的速度往往不在一个数量级上。如果内核让处理器向硬件发出一个请求,然后专门等待回应,性能会很差。内核应该在此期间处理其他事务,等到硬件真正完成请求的操作后再回头对它进行处理。因此,采用一种机制让硬件在需要的时候向内核发出信号。 1 中断 中断本质就是一种特殊的电信号,由硬件发向处理器。内核随时可能因为新到来的中断被打断。 不同设备对应的中断不同,每个中断都通过唯一的一个数字标识原创 2021-06-13 17:51:41 · 202 阅读 · 0 评论 -
Linux内核设计与实现——第9章第10章 内核同步介绍与方法
内核同步介绍 本章的意义何在? 因为目前内核支持多处理器,所以共享资源一定要防止并发访问,如果多个执行线程同时访问和操作数据,就可能发生各线程之间相互覆盖共享数据情况,造成被访问数据处于不一致状态,因此我们要了解Linux内核如何解决同步问题和防止产生竞争条件。 1 临界区和竞争条件 临界区:访问和操纵共享数据的代码段。 为了避免在临界区中并发访问,我们必须保证这些代码原子地执行,即操作在执行结束前不可被打断。但是如果发生两个执行线程处于同一个临界区中同时执行,就称为 竞争条件 ,这种情况可能会导致错误,原创 2021-06-16 17:19:51 · 146 阅读 · 0 评论