- 博客(25)
- 收藏
- 关注
原创 为什么linux内核的加载地址是16M(0x1000000)
为什么Linux内核加载地址是16M(0x1000000)?因为BIOS的程序不支持对16M以上内存的访问(BIOS寻址指令只有24位地址描述位)12。* 参考资料内核源码学习:LILO的运行分析 ↩︎Linux系统引导过程(BIOS和Bootloader部分) ↩︎...
2020-04-13 19:30:31
765
原创 CentOS流系统U盘安装错误解决:Warning: /dev/root/does not exit
问题描述:在安装CentOS流系统时,在启动后会出现以下打印,并进入到Dracut紧急模式。[ xxx.xxxxxx] dracut-initqueue[503]: Warning: dracut-initqueue timeout -starting timeout scripts...[ xxx.xxxxxx] dracut-initqueue[503]: Warning: dra...
2020-04-01 16:50:15
2384
原创 《一个64位操作系统的设计与实现》纪要一:Bochs搭建
1. Bochs概述Bochs是一个X86平台的模拟器,可以完全模拟X86的硬件环境。而且全平台、全系统通用。2. Bochs下载Bochs官网为:Bochs官网各版本官方下载地址:各版本下载地址3. Bochs安装Bochs是全平台支持的。但是对于版本选择,建议选择书中相同的版本2.6.8。因为其他版本可能会存在一些问题,导致编译不成功。而书中的版本已经被无数人趟过坑,遇到问题也容...
2020-03-30 14:53:36
1242
原创 linux实时显示log信息
在一些时候需要我们实时的查看系统log信息,或者软件的log打印信息。例如在debug一些信息传输软件时,需要及时查看自己的双方log.方法一:tail -f命令实时显示test.log的最后一行,即可以动态显示最新的test.log信息的最新信息。tail -f test.log方法二:watch 命令watch命令是一个更加契合实时显示log的方法。或者可以说是一个比较专业方法。与...
2020-03-16 18:02:51
867
转载 smp_processor_id——获取当前执行cpu_id
smp_processor_id()获取当前执行cpu_id#. 参考资料smp_processor_id()获取当前执行cpu_id
2019-11-28 14:25:44
1407
原创 Linux中的cgroup功能
1. 概念Cgroups,其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)。#.参考资料Cgroup...
2019-11-28 14:05:39
410
原创 src.rpm包的使用方法
src.rpm包的使用方法1. src.rpm软件包的使用2. src.rpm内核源码包的使用方法一:rpm -ivh kernel-2.6.32-279.el6.src.rpmcd /root/rpmbuild/SOURCEls linux-2.6.32-279.el6.tar.bz2 该方法会在home目录下生产rpmbuild目录,里面有SOURCE和SPEC两个目录,其中...
2019-11-22 15:24:55
2919
原创 获得某字符串对应的行号
MP=$(grep -nri “CURRENT_ZIP_NAME” ./2_make.sh | sed -n “1,1p”|awk -F “:” ‘{print $1}’)
2019-11-19 16:49:36
400
原创 《linux-inside-zn》导读
linux-insides是github中一个文章库,里面是一系列介绍linux内核及其内在机理的文章。作者是0xAX,外国大神。所以文章都是英文的。很幸运的是,同样在github上有一个linux-insides-zh库,是针对linux-insides的中文翻译。该工程由MintCN发起,并由很多志愿者完成。在此表示感谢。在阅读linux-insides及linux-insides-zh时...
2019-11-13 18:44:20
489
原创 《linux-insides》内核引导过程 第一部分 从引导加载程序到内核
文章讨论的内核版本为3.18。按下电源按钮之后发生了什么?按下电源按钮后,主板会发送信号到电源,电源接受到信号后,会把合适的电量传输给主板。主板在接收到电源妥备信号后,...
2019-11-13 11:50:16
160
原创 《X86_64体系探索及编程》 第5章 了解Flags
Flags历经了三代flags、eflags和rflags。分别对应16位、32位和64位。在现在的64位处理器中,应该是rflags。但是在legacy mode中一般习惯性还是叫eflags。对于的有三个指令:pushf、pushfd和pushfq。32位的eflags寄存器如下图所示:其中的标志位分为三类:status flags(状态标志位)control flags(控制...
2019-11-05 20:08:07
556
原创 串操作指令
1. 概念串操作指令也叫串指令:是指在内存中执行数据串操作的指令。而数据串是指在内存中连续存放的若干字节或字。字节组成的叫字节串,字组成的叫字串。数据串的概念类似于高级语言中的数组的意思。2. 使用串操作指令每次只能处理数据串中的一个数据,需要与重复前缀组合使用才能连续处理数据串中的数据。其中连续处理的次数有CX寄存器(?)决定,处理的方向由eflags寄存器中的DF标志位决定。3. ...
2019-11-05 19:57:42
2237
原创 《X86-64体系探索及编程》 第4章 处理器的身份
X86-64处理器使用CPUID指令查看和识别身份。4.1 测试是否支持CPUID指令eflag寄存器的第21位是ID(Processor Feature Identification)标志位。测试方法为:如果该位可以修改该标志位,则表示支持CPUID指令。4.2 CPUID的术语和表达leaf(叶)一个功能号就是一个leaf叶。也就是要写入eax寄存器的值。sub-leaf(子叶)...
2019-11-04 21:10:31
234
原创 vim的配置文件中不回显打印信息的方法
在使用vim时,免不了要对vim进行配置,在一些复杂的配置中,可能会有一些打印信息,在每次打开vim时就会出现Press ENTER or type command to continue等信息,非常烦人。方法:通过csverb配置项该配置项是成对出现的:set nocsverb...set csverb把会出现打印信息的语句放到这一对配置项中,即可去掉多余打印信息。...
2019-11-01 16:14:14
294
原创 vim编辑器中cscope自动加载cscope.out文件的方法
cscope自动加载cscope.out的两种方法。一种使用插件。一种使用脚本。
2019-11-01 16:05:06
1592
1
原创 Intel® 64 and IA-32 Architectures Software Developer's Manual CHPTER 8 Multiple-processor management
第8章 多处理器管理CHPTER 8 Multiple-processor management8.1 LOCKED ATOMIC OPERATIONS 锁定的原子操作8.1.1 Guaranteed Atomic Operations 保证的原子操作8.1.2 Bus Locking 总线锁定8.1.2.1 Automatic Locking自动锁定8.1.2.2 Software Contro...
2019-10-24 16:33:12
885
原创 CPU拓扑结构中的Die等级是指什么?
先说结论:Die是指CPU的晶片。即把CPU打开后里面长方形的那个黑色贴片。是CPU的大脑。Die的常见英文翻译是:死亡。但显然这不是这次讨论内容。如果继续找它对应中文的列表,可以发现最接近的就是:模具。这个似乎有点意思了。但是还是不准确。如果有些翻译工具比较强大。可会会给出:芯片、管芯等解释。应该就是这个了。管芯在百度百科上给的解释是:指在集成电路中制造集成块所用的芯片。说白了,就是把我们买...
2019-10-15 18:48:32
3707
原创 《深入理解Linux内核》 第七章 进程调度
本章主要分为三个部分:调度策略从理论上介绍Linux的进程调度。调度算法介绍实现调度所采用的数据结构和相应算法。与调用相关的系统调用介绍影响进程调度的系统调用。7.1 调度策略Unix系统的调度主要要去实现的目标有:进程的相应时间要尽可能的少。进程的后台作业的吞吐量要尽可能的大。要尽量避免进程的饥饿现象。要兼顾好高优先级和低优先级。而一个系统如何实现上述这些目标的方法就...
2019-10-14 16:59:38
131
原创 什么是零寄存器(Zero Register)?
所谓零寄存器(Zero Register),就是软件只能向里面写入全0(记住:是全0,而不是某一位写0)。向里面写入1,会导致异常。
2019-09-26 09:35:03
3492
原创 《Linux内核完全剖析》第5章 Linux内核体系结构
本章主要介绍Linux内核中的编址模式和体系结构。5.1 Linux内核模式Linux采用的是单内核模式。也叫宏内核模式。5.2 Linux内核系统体系结构Linux由5个模块组成:进程调度模块内存管理模块文件系统模块进程间通信模块网络接口模块模块之间的相互关系为:内核的结构:5.3 Linux内核对内存的管理和使用5.3.1 物理内存在系统初始化阶段内存的划分...
2019-09-23 18:51:16
147
原创 《Linux内核完全剖析》第4章 80x86保护模式及其编程
本章主要参考资料为:《IA-32Intel体系结构软件开发者手册》,特别是第三卷《系统编程指南》。本章的主要内容有:80x86基础知识保护模式内存管理各种保护措施中断和异常处理任务管理保护模式编程的初始化一个简单的多任务内核例子4.1 80x86系统寄存器和系统指令为了协助处理器执行初始化和控制系统等的操作,系统提供了一个标志寄存器和几个系统寄存器。4.1.1 标志寄存器...
2019-09-23 18:08:31
234
原创 x86架构实模式和保护模式
x86架构实模式和保护模式0. 术语释义实模式——real model保护模式——protected model1. 概述保护模式又称虚拟地址保护模式,与之相对的是实模式。保护模式是在80286系列开始实现的一种CPU操作模式。在此之前,只有实模式。但是为了保持向前兼容,即在新的处理器上依然能够运行老的软件和系统,所以在现代的计算机上电后,系统会首先运行在实模式下,然后再转换为保护模式...
2019-09-16 18:33:04
845
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人