博客专栏  >  架构   >  操作系统原理(linux)

操作系统原理(linux)

BIOS(BIOS中断服务程序),Intel风格x86汇编的内核引导主程序,从实模式下怎么进入保护模式,怎么实现中断调用,怎么实现特权级检查,怎么实现任务的创建,怎么实现多任务的管理;怎么加载全部内核代码。内存管理系统,进程调度,文件系统,,,

关注
11 已关注
25篇博文
  • Linux内核源码分析--文件系统(四、Bitmap.c)

    总结的来说其实Bitmap.c程序就是操作文件系统中的两个位图:i节点位图和逻辑块位图;拿逻辑块位图来说吧,申请一个新的逻辑块时,首先是在8块逻辑块位图中查找一个空闲的比特位,找到以后转换成逻辑块号,...

    2015-02-21 16:17
    1427
  • 全面解析C语言中可变参数列表

    全面解析c语言中可变参数列表问题:1、大众版:大家习惯的使用方式;2、真实版:真正的使用方式;3、实际原理:具体原理,本质;4、自己实现可变参数列表:理解本质后,自己用自己的方法来实现可变参数列表;5...

    2015-02-11 15:27
    3560
  • Linux内核源码分析--文件系统(三、buffer.c)

    前面已经大概的分析了下高速缓存区相关知识,这里再来分析下几个重要的函数;1、清缓存:把缓存区数据和设备进行同步; 2、缓存块插入到双链表/hash链表中,从双链表/hash链表中删除缓存块; ...

    2015-02-10 14:52
    1520
  • Linux内核源码分析--文件系统(二、高速缓存区)

    从块设备中读取数据是很慢的(I/O操作相对于内存操作来说是比较慢的),所以为了不让CPU浪费宝贵的时间来等待读取块设备上的数据,就在内存中开辟了一段内存地址用来预获取最近使用过的多块设备块上的数据。当...

    2015-02-09 22:14
    1845
  • memcopy()函数c语言实现和汇编实现比较

    首先来看汇编实现的memcpy函数,是利用宏函数来实现的,用汇编指令rep和movsb配合循环把数据以字节为单位从ds:esi传送到es:edi中,把循环次数放在ecx中。当然这样拷贝的才是真正的内存...

    2015-02-07 11:06
    1076
  • Linux 新内核中主次设备号范围

    作者:李强,华清远见嵌入式学院讲师。      设备驱动中,设备号设一个很重要的概念和变量。不论是主设备号,还是次设备号,在设备驱动中都占据了很重要的地位。那么他在Kernel中是如何操作的?这...

    2015-01-28 15:58
    653
  • Linux内核源码分析--内存管理(二、函数实现技巧)

    仔细的分析了一下各个内存管理函数的实现,发现里面涉及到了几个技巧,如果知道了这几个技巧,那么阅读内存管理源码将会事半功倍(主要是这几个技巧在几个函数中都出现过),当然也会选择性的分析几个比较重要的函数...

    2015-01-23 17:33
    1358
  • Linux内核源码分析--内存管理(一、分页机制)

    最开始的地方是在head汇编中,如果看boot中那三个汇编的应该记得(那三个汇编还是比较重要的)。首先是分页机制,在CR0的第31位(PG位)置1表示开启分页机制,顺便也介绍下其他几个控制寄存器:CR...

    2015-01-22 16:30
    1837
  • Linux内核源码分析--系统时间初始化(kernel_mktime()函数)

    从boot文件中的几个汇编程序执行后跳转到init文件中的main.c程序开始继续执行,该main.c函数式为系统运行的环境进行初始化的。首先来看系统时间的初始化(因为系统时间的初始化开始程序就在in...

    2015-01-19 23:14
    1446
  • BCD码转换成二进制和ASCII码

    BCD码转换成二进制和ASCII码;用BCD码表示:十位上的十进制数为 2 == BCD码表示为 0010;个位上的十进制数9 === BCD码表示为 1001;所以总的来说 十进制数 29 用BCD...

    2015-01-17 16:32
    4277
  • C程序代码中内嵌as汇编(四、宏函数)

    先来回忆下C语言中宏是怎么定义的,最基本的是定义常量:#define MAX_LEN 1024  这是最简单的常数宏定义,其中宏名按规定是要大写的,宏名在预编译时会由后面的值替代掉(预编译四大步骤:1...

    2015-01-16 15:15
    1066
  • C程序代码中内嵌as汇编(三、跳转)

    在内联汇编中使用跳转语句是非常常见的,比如:比较两个数,返回较大数时,就会用到跳转;先看下汇编和运行结果,然后再一步步分析下:                                运行结果...

    2015-01-14 18:16
    1180
  • C程序代码中内嵌as汇编(二、占位符)

    本篇blog只给几个例题来进行快速学习内嵌as汇编。         第一、输入参数中包含输出参数 #include int main(void) { char string1[]...

    2015-01-14 16:59
    936
  • C程序代码中内嵌as汇编(一、基础知识)

    汇编代码是最接近机器码,所以也是执行效率最高的,在操作系统中有将近10%的关键性代码是由汇编编写的,而还有部分代码是由C代码嵌入汇编构成的。C代码中嵌入汇编可以提高程序的执行效率,同时这种程序还既有高...

    2015-01-14 14:51
    952
  • as汇编基础程序设计--函数设计及函数堆栈传参问题

    其实上面的重点是 .type print_fun, @function ,这是定义函数的方式,后面一般接着是函数入口地址标识符; 函数传参问题: 在as汇编和C语言中函数调用时传参的标...

    2015-01-14 10:57
    943
  • as汇编基础程序设计--基础知识点

    1、数据类型,as汇编和C语言类似,也有数据类型之分。数据类型为了区分数据存放所需要的空间(也就是字节数),浮点型操作没怎么了解,浮点型操作时对数据类型应该有特殊的限制。 .section .data...

    2015-01-14 10:29
    682
  • as汇编基础程序设计--gdb调试汇编

    开始命令:gdb test; 设置断点:break *_start + 1(cpu运行到 _start+1 的地址上会停止,break可以简写b) 开始运行:run...

    2015-01-10 17:08
    966
  • as汇编基础程序设计--调用C库和内存访问

    as汇编中的内存访问:movl (%ebx), eax(把ebx寄存器指向的地址上的值传送给eax);movl 4(%ebx), eax(把ebx指向的地址的位置往上偏移4字节的地址上的值传送给eax...

    2015-01-09 16:13
    1007
  • AT&T风格的基础汇编程序--Hello word

    为了看懂Linux内核源代码,所以不得不重新学习下汇编语言。汇编语言大体可以分为两个风格,官方的intel风格和unix系列的AT&T风格。Intel风格汇编是比较常见的,一般大学时会学习点基础的(至...

    2015-01-08 17:10
    974
  • x86架构保护模式下界限问题

    在保护模式下有很多界限问题,下面集中来看下:         若段界限是0xFFFFF,粒度是4KB,那么实际界限值是多少?若粒度G=0,那么段界限就是实际的界限值;但粒度为4KB,那么界限值就是:(...

    2015-01-04 17:13
    848
img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部