2011年3月18日
摘要: boot->loader->一个处理各种中断的框架(软中断,硬中断)->各种中断处理程序(包括我们熟悉的文件系统、内存分配、键盘操作等等) 阅读全文
posted @ 2011-03-18 20:15 文鬼 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 前面提到了boot和loader。boot存在是因为存储介质的第一个扇区只有512个字节。要在这么少的空间内完成加载内核前的准备工作,有点困难。所以要写个boot,去引导loader。再由load去完成加载内核前的准备工作。boot的主要工作是从存储介质中寻找loader,并加载loader到指定的内存。然后把控制权交给loader。loader得到控制权后,完成加载内核的准备工作。这个包括,从式模式到保护模式的跳转。准备gdt,ldt,tss。并开启分页机制。这个准备工作听起来和做起来都很麻烦。工作量远远大于512个字节。准备完后,把控制权限交给内核。boot和loader的具体代码,前面有 阅读全文
posted @ 2011-03-18 19:13 文鬼 阅读(181) 评论(0) 推荐(0) 编辑
摘要: int long 字节数2008年05月19日 星期一 上午 09:01上次腾讯面试,问我int和long分别几个字节,结果被鄙视了。事过N天,鼓起勇气来好好查了一下,发现学问还是蛮大的。int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量用__int16 __int32 __int64吧,或者自己typedef int INT32一下。C、C++标准中只规定了某种类型的最小字节数(防止溢出)64位指的是cpu通用寄存器的数据宽度是64位的。找到一个图数据类型名称字节数别名取值范围int*signed,signed int由操作系统决定,即与操作系统的"字长"有关un 阅读全文
posted @ 2011-03-18 16:34 文鬼 阅读(2070) 评论(0) 推荐(0) 编辑
摘要: 一个字节包含8位16位机是char:一个字节,占8位int:2个字节,占16位。一个int就是一个机器字。long:4个字节,占32位32位机的字节与位数都是翻倍的而且现在的大部分机器都是32位所以:int:32位short:16位char:8 阅读全文
posted @ 2011-03-18 13:59 文鬼 阅读(3436) 评论(0) 推荐(0) 编辑
摘要: 进内核的确是个麻烦的活。从16跳到32后,先得熟悉一下32的汇编环境。其中主要的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)32位的指令没有太大的变化。但是在段处理上有了很大的变化。首先,原先由段机制和偏移确定地址的机制由描述符来完成了。然后,就是32位保护模式特有的特权机制。在代码和代码之间,代码和数据之间跳转需要使用一种叫做门的描述符来实现。这种描述符是一个8B的数据,里面包括了一个段的属性。下面 阅读全文
posted @ 2011-03-18 09:20 文鬼 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 现在看的是怎样将系统引导进编制的操作系统内核。以《orang‘s os 一个操作系统的编制》为参考。首先要做的就是在存储介质的前512个字节上大作文章,写程序。而进内核,一种方案是自己写个16位汇编程序,放进512。用这个程序去引导内核,就像开源项目grub一样。但很明显,这样做起来,无论从技术和代码量上都不易 。我学着书中所说,还是用dos引导吧。先把原型做出来,再在上面增添功能。使用快速开发的思想,编制我的操作系统。 一般对于80386以上的内核中,程序一般运行在32位环境中(64位,晕!不谈,那不是给人用的)。所以还需要先从16为跳到32位。 总之,上面的步骤主要有三。 一、将存储介质前 阅读全文
posted @ 2011-03-18 09:12 文鬼 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.zhuoqun.net/html/y2011/1590.html开发与研发(上)01月 5th, 2011 — Dreamer按:这几天我一直在写这篇东西,本来是胸有成竹,没想到后来越写越发现自己在这个题目下有太多话想说,而以我现在的能力又不能很好地概括总结,以至于越写越长,文章结构也变得混乱,到后来修改的时候每次都要考虑好久才能下笔,所以决定拆成两部分来发,以便阅读。这篇写得我心力交瘁,质量不算好,凑合着看吧。同样是写程序,不同的岗位工作内容不一样,对程序质量以及工程师的要求也不一样。程序开发大概可以划分成两类:开发和研发,相应也就有开发工程师和研发工程师。很多人 阅读全文
posted @ 2011-03-18 09:07 文鬼 阅读(340) 评论(0) 推荐(0) 编辑