![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux Kernel
ffutop
这个作者很懒,什么都没留下…
展开
-
理解 Linux Kernel (0) - 概述
概述《理解Linux Kernel》系列最早开始于 2018 年中,当时我刚刚结束对 JVM (Java Virtual Machine, Java 虚拟机) ClassFile 文件格式的学习。彼时,在实现新编程语言、学习 Linux 内核实现、继续深入 JVM 源码三个下一阶段的命题中,我选择了拥抱 Linux 源码。时间过去了大半年,我已经简单地建立了对 Linux Kernel 的结构...原创 2019-04-21 12:31:46 · 483 阅读 · 0 评论 -
理解 Linux Kernel(10) - 执行的上下文
在进行第四篇(任务调度)行文描述时,就一直闹不清内核所谓的task的概念。之前一直将其与进程(process)的概念等同视之。但这又导致了线程的概念无处安置(毕竟在计算机科学的概念中,线程作为进程的子集存在,负责程序执行)。不过,现在这个疑惑总算得到了合理的解释:我们错误地将理论和实践不加区分地混淆了。内核开发社区与学术界的合作在整个内核开发历史上并没有想象中的频繁,正相反,学术界对内核代码的贡献...原创 2019-04-21 13:49:20 · 506 阅读 · 0 评论 -
理解 Linux Kernel (7) - 字符设备
相比较于块设备,字符设备无论从物理认知上,抑或是理论理解上,都存在着相当大的入门门槛。特别是在将字符设备与控制台、命令行终端混淆的时候,就更加难以进行分辨了。回到字符设备本身,字符设备与块设备最主要的区别就在于块设备可以随机读写,而字符设备只能够顺序读,顺序写。那么,常见的字符设备有什么?显示器、键盘、鼠标。宏观概览通常在我们的认识中,命令行终端就被认为是与一套字符设备相配合来使用的。很...原创 2019-04-21 13:47:07 · 331 阅读 · 0 评论 -
理解 Linux Kernel (6) -文件操作
前一篇已经描述对文件系统进行了宏观性的描述,这一篇,将以特定的文件读写操作为示例,串联对整个文件系统的基本操作。首先先来看看平台相关的文件读写操作的 C 代码是怎样一个调用方式#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#includ...原创 2019-04-21 13:46:07 · 474 阅读 · 0 评论 -
理解 Linux Kernel (5) - 文件系统
用惯了类 Unix 系统,应该说文件系统是日常最常接触的一个操作系统模块之一了。$ lsApplications Network Users bin data etc net sbin usrLibrary System Volumes cores ...原创 2019-04-21 13:44:58 · 468 阅读 · 0 评论 -
理解 Linux Kernel (4) - 任务调度
前面几节已经描述过,对于单核 CPU 来说。CPU 就处于不断地执行指令的过程(或者通过 hlt 指令直接停止工作)。针对于每一个程序来说,这个程序执行流程是通过 CPU 中几组寄存器(通用寄存器、段寄存器、控制寄存器等) 和存储在内存中的代码和数据协作完成的。如果要达到单核多任务的目的,首先要做的就是完成对几组寄存器中当前值的保存(我称之为保存现场)。而对于内存来说,多个任务的代码、数据同时...原创 2019-04-21 13:43:54 · 477 阅读 · 0 评论 -
理解 Linux Kernel (3) - 操作系统启动
这次拖得有够久的,毕竟需要将知识串联起来并不是一件容易的事情。更何况很多内容可以说和常理(个人理解的常理)有了比较大的偏差。不过确实比较有意思。从引导程序到操作系统启动,这中间究竟经历了多少流程呢?由于前几篇已经有过介绍,这里不会再对引导程序及汇编语法做过多的介绍。而着重描述整个操作系统的启动流程。引导程序从 BIOS 将512字节长的引导程序加载到物理内存0x7c00开始的连续递增空间...原创 2019-04-21 13:40:41 · 383 阅读 · 0 评论 -
理解 Linux Kernel (2) - 多任务切换
概述《只是为了好玩》书中,林纳斯描述过他最早的试验性程序就是执行两个不同的任务(一个不断输出A,另一个输出B),同时不断地让 CPU 在两个任务间做切换。结合《Linux 内核完全注释》提供的一个多任务切换示例程序,本篇将就多任务切换程序的执行流程进行详述,并提供当下汇编工具下的适配。关于运行环境的说明,欢迎参考 Bochs 仿真器使用简介引导程序理解 Linux Kernel (1) ...原创 2019-04-21 13:22:39 · 612 阅读 · 0 评论 -
理解 Linux Kernel (1) - BIOS
前言在概述,我已经介绍过《理解 Linux Kernel》系列文章的写作原因。我不能担保我所进行的所有试验性操作都是对的,但至少操作我的环境下成功地运行了,并帮助我触及我始终敬畏的硬件&OS《Linux 内核完全注释》第三章——内核编程语言和环境,描述了用 as86 汇编语言构建 boot 引导程序,在 Bochs 仿真器成功模拟开机运行,最终输出 Loading System…。这就...原创 2019-04-21 12:33:27 · 427 阅读 · 0 评论 -
理解 Linux Kernel (8) - 网络
原创 2019-04-21 21:28:21 · 313 阅读 · 0 评论