┈┈【操作系统的设计与实现】
CHENG Jian
天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
展开
-
探索ucos-ii之路(一)--内核目录结构和内核组成
UCOS-ii2.5.2内核目录结构和组成 1.uCOS-II Source->source:(与处理器类型无关的代码)OS_CORE.C系统初始化,开启多任务环境等的代码OS_FLAG .C事件标志组管理代码OS_MBOX .C消息邮箱管理代码OS_mem.c内存原创 2014-03-12 16:23:06 · 18937 阅读 · 0 评论 -
深入理解计算机系统-之-内存寻址(六)--linux中的分页机制
[注意] 如果您当前使用的系统并不是linux,或者您的系统中只有一份linux源码,而您又期待能够查看或者检索不同版本的linux源码 可以使用 http://lxr.free-electrons.com/ LXR (Linux Cross Reference)是比较流行的linux源代码查看工具,而这里集成了全版本的linux源码的索引1 linux的分页机制1.原创 2016-02-27 19:38:59 · 7078 阅读 · 0 评论 -
深入理解计算机系统-之-内存寻址(一)--存储管理机制(虚拟地址,线性地址,物理地址)
参照 《深入理解计算机系统》 《深入理解linux内核》 《80x86汇编语言程序设计》 《操作系统的设计与实现》为了对存储器中的程序及数据实现保护和共享硬件支持,为了对实现虚拟存储器提供硬件支持,现代的CPU不仅采用了扩充的存储器段式管理机制,而且还提供了可选的存储器分页管理机制。段页式存储管理物理地址(physical address)用于内存芯片级的单元寻址,与处理器原创 2016-02-09 16:08:45 · 6744 阅读 · 0 评论 -
深入理解计算机系统-之-内存寻址(二)--存储保护机制(CPU实模式与保护模式)
CPU实模式和保护模式cpu的保护模式由来分段机制8086的诞生,标志着Intel 正式进入了x86时代,这是个多么具有纪念意义的日子:1978-6-8。同时,8086的诞生也是处理器内存寻址技术的第一次飞跃。对于一根实际的、实实在在的、物理的、可看得见、摸得着的内存条而言,处理器把它当做8位一个字节的序列来管理和存取,每一个内存字节都有一个对应的地址,我们叫它物理原创 2016-02-09 16:12:56 · 11597 阅读 · 2 评论 -
深入理解计算机系统-之-内存寻址(三)--分段管理机制(段描述符,段选择子,描述符表)
逻辑地址-=>线性地址-=>物理地址前面我们提到了当使用80x86微处理器时,有三种不同的地址: 逻辑地址(logical address):包含在机器语言指令中用来指定一个操作数或一条指令的地址。这个寻址方式在80x86著名的分段结构中表现得尤为具体,它促使MS-DOS或Windows程序员把程序分成若干段。每一个逻辑地址都由一个段(segment)和偏移量(offset或dis原创 2016-02-11 11:42:04 · 13713 阅读 · 9 评论 -
深入理解计算机系统-之-内存寻址(四)--linux中分段机制的实现方式
linux中的分段机制前面说了那么多关于分段机制的实现,其实,Linux以非常有限的方式使用分段。因为,Linux基本不使用分段的机制(注:并不是不使用,使用分段方式还是必须的,会简化程序的编写和运行方式),或者说,Linux中的分段机制只是为了兼容IA32的硬件而设计的。实际上,分段和分页在某种程度上显得有些多余,因为它们都可以划分进程的物理地址空间,分段可以给每一个进程分配不同的线性地址,而分页原创 2016-02-11 15:22:43 · 3468 阅读 · 1 评论 -
深入理解计算机系统-之-数值存储(一)-CPU大端和小端模式详解
大端与小端在嵌入式开发中,大端(Big-endian)和小端(Little-endian)是一个很重要的概念。MSB与LSB最高有效位(MSB)指二进制中最高值的比特。在16比特的数字音频中,其第1个比特便对16bit的字的数值有最大的影响。例如,在十进制的15,389这一数字中,相当于万数那1行(1)的数字便对数值的影响最大。比较与之相反的“最低有效位”(LSB)。LSB(Least Signif原创 2016-02-18 16:07:00 · 8549 阅读 · 0 评论 -
深入理解计算机系统-之-数值存储(二)--C程序打印变量的每一字节或者位
大端与小端前面我们提到了依据CPU端模式的不同,数据的存储顺序也不一样。采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,BE big-endian 大端模式 ,最直观的字节序 ,地址低位存储值的高位,地址高位存储值的低位 ,不需要考虑对应关系,只需要把内存地址从左到右按照由低到高的顺序写出 ,把值按照通常的高位到低位的顺序写出 ,两者对照,一个字节一个字节的填充进去LE little-en原创 2016-02-18 19:20:52 · 4845 阅读 · 1 评论 -
深入理解计算机系统-之-数值存储(三)-- 原码、反码、补码和移码详解
原码 如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1。剩下的n-1位表示概数的绝对值。PS:正数的原、反、补码都一样:0的原码跟反码都有两个,因为这里0被分为+0和-0。 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制: [+1]原 = 0000 0001 [-1]原 =原创 2016-02-21 15:19:30 · 3425 阅读 · 0 评论 -
深入理解计算机系统-之-数值存储(四)--整数在内存中的存储方式
前景回顾前面我们了解到依据CPU的端模式的架构不同,数据的存储的字节序也不同 BE big-endian 大端模式,最直观的字节序 地址低位存储值的高位,地址高位存储值的低位 ,数据填写时,不要考虑对应关系,只需要把内存地址从左到右按照由低到高的顺序写出,把值按照通常的高位到低位的顺序写出,两者对照,一个字节一个字节的填充进去。 LE little-endian 小端模式,则最符合人的原创 2016-02-21 16:04:16 · 9485 阅读 · 0 评论 -
深入理解计算机系统-之-数值存储(六)--以不同的方式窥视内存
在前面的篇博文中,我们讲解整数和浮点数在内存中的存储结构 参见 深入理解计算机系统-之-数值存储(四)–整数在内存中的存储方式 深入理解计算机系统-之-数值存储(五)–浮点数在内存中的存储方式浮点数写,整数读好了知道了浮点数的存储方式,那么我们的问题来了,如果我们定义了一个浮点数,那么如果以整数的格式去读取它,会发生什么奇妙的现象代码示例我们对上一篇文章中修改main函数为如下原创 2016-02-26 12:10:06 · 2168 阅读 · 0 评论 -
深入理解计算机系统-之-数值存储(五)--浮点数在内存中的存储方式
前景回顾前面我们了解到依据CPU的端模式的架构不同,数据的存储的字节序也不同 BE big-endian 大端模式,最直观的字节序 地址低位存储值的高位,地址高位存储值的低位 ,数据填写时,不要考虑对应关系,只需要把内存地址从左到右按照由低到高的顺序写出,把值按照通常的高位到低位的顺序写出,两者对照,一个字节一个字节的填充进去。 LE little-endian 小端模式,则最符合人的原创 2016-02-21 17:19:14 · 6595 阅读 · 0 评论 -
深入理解计算机系统-之-内存寻址(五)--页式存储管理
前景回顾前面我们讲解了操作系统段式存储管理的主要内容。32位,在保护方式下,其能够访问的线性地址空间可达4GB,而且允许几乎不受存储空间限制的虚拟存储器程序。虚拟存储器地址空间能够可达64TB。它还提供了复杂的存储管理和硬件辅助的保护机构和增加了支持多任务操作系统的特别优化的指令。实际上,64TB的虚拟地址空间是有磁盘等外部存储器的支持下实现的。在编写程序是可以放在磁盘存储器上,但在执行时,必须把原创 2016-02-12 20:36:15 · 7892 阅读 · 0 评论