操作系统 底层
djinglan
喜欢
展开
-
栈帧及内存分配
来源:http://blog.csdn.net/yxysdcl/article/details/5569351首先应该明白,栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(地址地)。下图为典型的存取器安排,观察栈在其中的位置 入栈操作转载 2012-02-17 09:17:04 · 1437 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day01
http://blog.csdn.net/ltbylc/article/details/83092571. 计算机只知道01代码,计算机启动时从引导扇区开始执行,文件如下hellos.asm [plain] view plaincopy DB 0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0转载 2013-02-18 14:25:04 · 850 阅读 · 0 评论 -
编码---隐匿在计算机软硬件背后的语言
14 章 反馈与触发器 看不到图, 请看word版:http://pan.baidu.com/share/link?shareid=443881&uk=3088134014电磁继电器 可以抽象为一个反向器;下图是一个反向器; 输出原创 2013-03-03 13:18:23 · 1329 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day02
http://blog.csdn.net/ltbylc/article/details/82804881. 将第一天直接生成软盘映像的代码抽取出引导扇区部分,ipl.asm[plain] view plaincopy ORG 0x7c00 JMP entry DB转载 2013-02-18 14:26:07 · 927 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day12~day13
http://blog.csdn.net/ltbylc/article/details/83092571. 定时器是任务切换的重要中断响应程序,由8254芯片PIT生成。2. 初始化,发送out指令。中断产生在IRQ0,由此可见这个中断的重要性了。10ms产生一次。[cpp] view plaincopy#define PIT_CTRL 0x004转载 2013-02-18 14:34:12 · 948 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day11
http://blog.csdn.net/ltbylc/article/details/83092571. 窗口的绘制,与鼠标绘制类似[cpp] view plaincopyvoid make_window8(unsigned char *buf, int xsize, int ysize, char *title) { static cha转载 2013-02-18 14:33:24 · 888 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day07
http://blog.csdn.net/ltbylc/article/details/83092571. 键盘中断的处理:产生中断后中断处理程序应该向PIC发出OCW2发出0x60+IRQ号码的out指令,并发出in指令从0x0060读取键盘信息,该键盘信息保存到FIFO缓冲区中。[cpp] view plaincopy#define PORT_KEY转载 2013-02-18 14:29:59 · 753 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day06
http://blog.csdn.net/ltbylc/article/details/83092571. 鼠标及键盘的响应功能,因为用到中断所以必须自32位保护模式下设置GDT和IDT,以前在asmhead中设置时用汇编代码设置,现在用C操作。2. GDT,IDT的补充知识,图片来自赵炯博士linux0.11内核分析书[cpp] vie转载 2013-02-18 14:29:28 · 859 阅读 · 0 评论 -
x86、amd64、x86-64、x64以及ia64的基本概念
http://www.liuyongkang.com/archives/487.htmlX86x86是一个指令集,是刚有个人电脑时候的什么8086,286,386的那个兼容的指令集。 x86-64 x86-64有时会简称为“x64”,是64位微处理器架构及其相应指令集的一种,也是Intel x86架构的延伸产品。“x86-64”1999由AMD设计,AMD 首转载 2013-02-19 14:53:32 · 16671 阅读 · 0 评论 -
ELF格式文件符号表全解析及readelf命令使用方法
http://blog.csdn.net/edonlii/article/details/8779075ELF文件符号表1. 读取ELF文件头:$ readelf -h signELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class:转载 2013-05-08 22:00:33 · 1432 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day05
http://blog.csdn.net/ltbylc/article/details/83092571. 将字库看成为保存像素的数组2. 将hankaku.txt读到数组,编译链接成为C可调用的数组,编译bat修改为[plain] view plaincopy..\z_tools\makefont.exe hankaku.txt hankaku.b转载 2013-02-18 14:28:39 · 885 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day08
http://blog.csdn.net/ltbylc/article/details/83092571. 鼠标的显示,这个与显示字符是一样的道理,写像素[cpp] view plaincopyvoid init_mouse_cursor8(char *mouse, char bc) { static char cursor[16][16]转载 2013-02-18 14:30:37 · 807 阅读 · 0 评论 -
intel x86 cpu系列的寻址方式
当说一个cpu是 16位 或32位时, 指的是中央处理器中的 算术逻辑运算单元(ALU)的宽度。 系统总线中的 数据总线通常与ALU有相同的宽度(有例外)。地址总线宽度最好与数据总线宽度一致,但不现实。对8086的16位cpu,采用1M字节的内存地址空间,地址总线的宽度就是20位。这就产生一个问题:ALU是16位,也就是说可以直接加以运算的指针的长度是16位的。那么如何实现原创 2012-12-01 10:25:46 · 2054 阅读 · 0 评论 -
操作系统真实的虚拟内存是什么样的(一)
1. 内存及虚存基本布局http://blog.csdn.net/iihero/article/details/8236079提起虚存,大都能说出几条来。对于32位系统,大多数操作系统都会将4GB的内存空间的一部分挪给内核使用,应用程序无法直接访问这一段内存,这部分内存空间称为内核空间。Windows默认情况下会将高地址的2GB分配给内核(也可配置为1GB),而Linux默认情况下转载 2012-12-01 22:06:29 · 976 阅读 · 1 评论 -
LINUX程序的虚拟内存映射机制
1)虚拟内存的解释:虚拟内存的核心概念是指代码所用的内存地址与物理地址没有关系.在用户空间中,一个进程的虚拟地址A指向不同的物理内存,而不是另一个进程的地址A.任何时候CPU发送指令向内存存取数据时,通过软件将虚拟地址的数据变为物理地址.将虚拟地址变为物理地址变为物理地址的工作是由内存管理单元(MMU)完成的.虚拟内存地址也可以称为逻辑地址.2)内存管理单元:内存管理单转载 2012-12-02 14:15:42 · 952 阅读 · 0 评论 -
操作系统内存映射机制
这个问题思考的是程序与内存的映射问题? (请高手指教)程序在编译以后,被分配到了一个4G的逻辑地址空间当中, 在这当中是以分区段的方式进行管理的(如有代码段,数据段,堆栈段等) 。那么,如何将这4G的地址映射到真实的内存空间中? cpu当中,有内存控制单元(硬件),这通过两次地址映射(第一次是分段单元,第二次是分页单元)将程序中的逻辑地址映射到真实的内容地址中。原创 2012-12-02 12:43:59 · 4018 阅读 · 0 评论 -
System.map详解
[注:此文转载于http://forum.eepw.com.cn/thread/128712/1][作者: 永远在路上]有时system.map文件可以帮助我们理解内核编译,它记录了所有代码的运行地址。下面一起看看如何读懂它system.map内容格式为:线性地址 类型 符号具体内容如下: 00100000 A phys_startup_32c0100000转载 2012-12-14 15:39:14 · 486 阅读 · 0 评论 -
linux物理内存描述(接近新版本内核)
http://blog.csdn.net/bullbat/article/details/7166736inux使用于广泛的体系结构,因此需要用一种与体系结构无关的方式来描述内存。linux用VM描述和管理内存。在VM中兽药的普遍概念就是非一致内存访问。对于大型机器而言,内存会分成许多簇,依据簇与处理器“距离”的不同,访问不同的簇会有不同的代价。每个簇都被认为是一个节点(pg_转载 2012-12-14 14:52:42 · 728 阅读 · 0 评论 -
linux各部分的初始化过程(待续)
http://blog.csdn.net/voice_shen/article/details/6690201[内核版本:Linux-2.6.30]众所周知,Linux C代码初始化入口是start_kernel() [init/main.c]函数。以下进行单核CPU进行分析。先列出start_kernel内执行的调用:start_kernel [init/main.c转载 2012-12-14 15:46:19 · 613 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day10
http://blog.csdn.net/ltbylc/article/details/83092571. 显示到屏幕上的图形界面信息要分层,比如最顶层是鼠标,中间是应用程序,最低是桌面。2. 移动鼠标和窗口应用可以看为是移动图层。3. 屏幕显示的原理是向显存内写信息,显存的地址在0x000a0000这个已经在前面见过了。[cpp] view plainco转载 2013-02-18 14:32:05 · 681 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day04
http://blog.csdn.net/ltbylc/article/details/83092571. 调色板的使用,照猫画虎就可以了2. func.nas[plain] view plaincopy; naskfunc ; TAB=4 [FORMAT "WCOFF"] [INSTRSET "i486p"转载 2013-02-18 14:27:37 · 1083 阅读 · 1 评论 -
读书笔记《30天自制操作系统》day03
http://blog.csdn.net/ltbylc/article/details/83092570. 自己试着在win7下用NASM和minGW改写汇编和C混合编程,结果受挫了。还是先使用作者提供的工具构建吧。1. 通过前2天的工作已经能使用NASM制作一个映像了,并且编写的汇编代码可以成为引导扇区代码。2. 引导扇区代码中可以调用BIOS中断,读取软盘上其它扇区到内转载 2013-02-18 14:26:55 · 1929 阅读 · 4 评论 -
windows8.1 快速使用指南(英文原版 + 中文翻译版txt)
文档共享下载地址: http://pan.baidu.com/s/1kT0WSEN原创 2014-03-15 13:13:07 · 2240 阅读 · 0 评论