随笔分类 -  linux

摘要:1 系统调用流程图 2 源码 /* * linux/kernel/system_call.s * * (C) 1991 Linus Torvalds */ /* * system_call.s contains the system-call low-level handling routines. 阅读全文
posted @ 2022-03-13 23:06 zhenjingcool 阅读(334) 评论(0) 推荐(0)
摘要:0 回顾 在main.c中我们对各个设备进行了初始化动作,并创建了进程0,通过进程0创建了其他进程,现在操作系统内核已经初步初始化完成。但是在main.c中,我们讲解时对于如何初始化没有展开细讲,因为这些初始化动作分布在内核代码的各个文件中,从这一篇文章开始,我们讲解内核初始化的各个细节,可能会持续 阅读全文
posted @ 2022-03-13 02:34 zhenjingcool 阅读(452) 评论(0) 推荐(0)
摘要:0 __asm__ 参考1:https://www.cnblogs.com/zhenjingcool/p/15925494.html中的嵌入式汇编部分 参考2:https://blog.csdn.net/yt_42370304/article/details/84982864 00 系统调用int 阅读全文
posted @ 2022-03-12 22:49 zhenjingcool 阅读(341) 评论(0) 推荐(0)
摘要:进程是程序的执行的一个实例。从内核的角度看,进程的目的就是担当分配系统资源(CPU时间片和内存)的实体。 1 普通线程和轻量级进程 普通线程,指的是,在一个应用中,有多个线程在执行。但是CPU对该应用的调度是以进程为单位进行调度的,这个进程中的多个线程不能够并发的执行。轻量级进程实现多线程,情况则不 阅读全文
posted @ 2022-03-12 12:11 zhenjingcool 阅读(185) 评论(0) 推荐(0)
摘要:这一篇我们来讲解head.s源码,不同于bootsect.s和setup.s,head.s使用at&t汇编格式。存放在磁盘的第6个扇区处(bootsect.s存放在第一个扇区,setup.s存放在第2345个扇区)。 1 源码 /* * linux/boot/head.s * * (C) 1991 阅读全文
posted @ 2022-03-06 17:43 zhenjingcool 阅读(330) 评论(0) 推荐(0)
摘要:1 8259A芯片 外部引脚和内部结构 IR0-IR7:中断源 IRR:中断请求寄存器,8位,每一位对应一个中断请求,某一位置1表示对应有中断请求 IMR:中断屏蔽寄存器,8位,每一位对应一个中断,某一位置1表示屏蔽某个中断源(比如IR3被屏蔽,则CPU将不会收到IR3的中断请求) PR判优电路:中 阅读全文
posted @ 2022-03-05 18:32 zhenjingcool 阅读(866) 评论(0) 推荐(0)
摘要:1 源码 ! ! setup.s (C) 1991 Linus Torvalds ! ! setup.s is responsible for getting the system data from the BIOS, ! and putting them into the appropriate 阅读全文
posted @ 2022-02-28 01:07 zhenjingcool 阅读(128) 评论(0) 推荐(0)
摘要:编译器 由于当时的特殊情况,bootsect.s使用的是XX编译器 汇编格式 bootsect.s使用的是Intel的汇编格式 1 源码 ! ! SYS_SIZE is the number of clicks (16 bytes) to be loaded. ! 0x3000 is 0x30000 阅读全文
posted @ 2022-02-26 02:36 zhenjingcool 阅读(189) 评论(0) 推荐(0)
摘要:参考:https://zhuanlan.zhihu.com/p/113536449 1 实模式下的内存分布 实模式下,内存可用范围是0到0xFFFFF(2^20字节,1MB内存空间)。 我们可以看到,内存被各种外设瓜分了。 2 主板做的工作 电源按钮连接着主板上的复位线,主板上的复位线连接着CPU的 阅读全文
posted @ 2022-02-26 00:31 zhenjingcool 阅读(649) 评论(0) 推荐(0)
摘要:我们的源码选用的是Linux0.11版本,因为这个版本简单好学,我们将以这个版本为基础学习Linux的基本体系结构。 1 源码下载 http://www.oldlinux.org/Linux.old/ 2 源码文件结构树 boot为启动相关的代码,用汇编写的 init是内核启动的代码 fs是虚拟文件 阅读全文
posted @ 2022-02-25 22:45 zhenjingcool 阅读(227) 评论(0) 推荐(0)
摘要:1 内存地址 逻辑地址 每个逻辑地址都由一个段和偏移量组成,偏移量指明了从段开始的地方到实际地址之间的距离。 物理地址 物理地址和CPU地址引脚发送到内存总线上的电信号相对应 CPU可以实现逻辑地址到物理地址的转换。 2 实模式和保护模式 从80286开始引入保护模式。 实模式体现在内核中用到的地址 阅读全文
posted @ 2022-02-24 01:03 zhenjingcool 阅读(672) 评论(0) 推荐(0)
摘要:0 教材 kernel源码对应的参考教材是《Linux内核完全注释:基于0.11内核(修正版V3.0).pdf》这本书,基于0.11内核。已上传到git私有仓库中 (一)AT&T汇编语法 1 寄存器引用 引用寄存器要在寄存器号前面加%,如mov %eax,%ebx 2 操作数顺序 操作数排列是从源( 阅读全文
posted @ 2022-02-22 23:25 zhenjingcool 阅读(313) 评论(0) 推荐(0)
摘要:参考:《linux内核设计与实现》原书第三版,美Robert Love著,陈莉君 康华译 目前手上有一个centos7.5的系统,我们在该系统上进行内核的编译与安装新内核,我们安装2.6.34的内核 首先确保安装了如下软件: make gcc gcc-c++ ncurses-devel 如果没有安装 阅读全文
posted @ 2022-02-21 00:38 zhenjingcool 阅读(511) 评论(0) 推荐(0)
摘要:1 制作启动盘 使用UltraISO软件打开iso文件 在写入硬盘映像对话框中,硬盘驱动器选择我们要写入的U盘,写入方式可以选择USB-HDD也可以选择USB-HDD+,均可以。 现在的这一步是非常关键的,关系到我们最后制作的硬盘映像能否启动电脑并安装系统,点击“便捷启动”,然后再弹出的菜单中依次选 阅读全文
posted @ 2022-02-20 21:09 zhenjingcool 阅读(875) 评论(0) 推荐(0)
摘要:(一)磁盘结构 文件系统是创建在磁盘上,因此,想搞清楚文件系统首先要了解磁盘结构。 机械硬盘主要由磁盘盘面、主轴、磁头、传送轴组成 当存取数据时,主轴转动到指定位置,然后传送轴前后移动使磁头达到指定磁道上的指定扇区,然后读取数据。 机械硬盘转速一般都是7200r/min,高速旋转,所以避免晃动和磕碰 阅读全文
posted @ 2022-02-15 23:41 zhenjingcool 阅读(187) 评论(0) 推荐(0)