Linux内核编程入门(由尚德系列讲座)

Linux内核编程入门(由尚德系列讲座)

5 (16人评价)
  • 课时:(44)

  • 学员:(926)

  • 浏览:(52090)

  • 加入课程
  • (第二章)保护模式(第一节)的笔记

    这章不懂的更多啊 难道不会汇编就不能学linux内核? 

  • (第一章)att汇编语法格式的笔记

    寄存器引用+%顺序:src->dest立即数前+$

  • (第四章) 引导启动程序 (第一节)的笔记

    引导程序1。源码boot目录 bootsect.s setup.s head.s。内核映像文件的组成 5min。启动流程:bootsect.s setup.s system模块。bootsect.s功能:磁盘第一个扇区:加载setup.s,加载system,确定根文件系统设备号

  • (第三章)linux内核体系结构(第二节)的笔记

    Linux中断机制 中断描述符 4个字节 2个字节为段值 2字节为段内偏移地址 256个,总大小为1024个字节。系统调用:应用程序使用内核资源的唯一接口,一般是使用函数库间接调用系统调用。系统时间:系统调用time可以获得。系统定时,每隔10ms就产生一个系统时钟周期,调用时间中断程序。进程时间片为10ms的倍数。进程在内核态运行的时候不能被抢占,时间片用完后调用程序负责切换。单CPU某个时刻只能有一个进程在运行。内核通过进程控制块struct task_struct来描述进程。进程运行状态:运行,就绪,停止,僵死,可中断的睡眠,不可中断的睡眠。所有进程都是进程0的子进程。Linux 0.1.1 支持最大创建64个进程。进程的初始化过程。

  • (第三章)linux内核体系结构(第一节)的笔记

    (1)单内核 微内核(2)物理内存的使用 (3)虚拟地址 逻辑地址 线性地址 物理地址(4)内存分段机制(5)每个进程64M空间

  • (第二章)保护模式(第二节)的笔记

    (1)GDT全局描述符表8192项,LDT局部描述表8192项,IDT中断符描述符表256项,检索利用段选择子16位,3-15位检索,2位局部全局标志位,0-1位请求优先级(4)IDT门描述符(5)任务状态段;I/O允许位图;任务切换过程与任务返回;(6)CR3页目录基地址,1024项,每项4个字节,需要4M的储存空间

  • (第二章)保护模式(第一节)的笔记

    (1)80386寻址空间4G;(2)80386控制寄存器说明;(3)实模式被特殊定义为20位地址内存可访问空间上,为了兼容以前的8086,,80186格式:段地址+偏移地址;(4)实模式:段选择子+偏移地址;其中段选择子中指明了程序的段地址在全局段描述符或者本地段描述符中的地址(5)段描述符64位:段起始地址+段长度+状态位(访问权限);(6)段选择子16位:段索引号+状态位(全局/本地)(7)程序不可见寄存器GDTR,LDTR(8)分页机制:页目录基地址;线性地址=页目录项10位+页表项10位+偏移地址12位(9)mmu:线性地址转换到物理地址(10)线性地址=选择子对应的基地址+偏移地址

  • (第一章)att汇编语法格式的笔记

    att格式的汇编语句,用于内核启动的关键文件。原来我看到的很多带有%的汇编语句就是att格式的哦,现在才晓得哦!

  • (第一章)att汇编语法格式的笔记

    1.寄存器引用前要加上%2.操作数顺序3.立即数前加$符号4.操作数的长度:b(byte)、w(word)、l(long),如movw %ax,%bx5.跳转jmp/call $section,$offset

  • (第三章)linux内核体系结构(第一节)的笔记

    内核模块组成:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块五部分组成。物理内存也有编号,并且在一开始的阶段存放内核模块代码。Linux采用

  • (第二章)保护模式(第二节)的笔记

    描述符表 :  lgdt,lldt,lidt加载三种描述符。  dgtr, ldtr, idtr 三种描述符表寄存器  描述符由段选择子进行选择的。选择子:   高13位是描述符的index   第3位 标示是否是GDT   前两位表示:权限等级。  

  • (第二章)保护模式(第一节)的笔记

    80386从16位体系到32位体系控制寄存器EFLAGS  CR3CR2CR1CR0 

  • (第二章)保护模式(第一节)的笔记

    不要复位就可以在实模式和保护模式之间的操作 

    by pkking 0 0
  • (第一章)att汇编语法格式的笔记

    att汇编语法格式:操作数顺序指令 源 目标 寄存器引用要在寄存器号前加% 例如:mov %eax,%ebx 立即数前加$,例如:mov $4,%ebx变量前加$则表示该变量数值对应的地址 操作数长度,参数放在指令后面b=byte(8bit) w=word(16bit) l=long(32bit) 例如movb 绝对转移和调用指令钱要加*远转移和调用为ljmp/lcall 寻址方式:disp(base,index,scale)=base +index*scale+disp C语言中的嵌入汇编:_asm_(_有么有都可以)("asm statements" :=outputs:inputs:registers-modified); ""中的内容可以有多行,之间用;分开。 outputs为输出寄存器输出到的变量inputs为输入寄存器,将变量输入到该寄存器register-modified:要改变的寄存器如果要用%则需要加2个%%,例如:例如movw %1,%%eax;%1则表示outputs:inputs:registers-modified中的第二个参数"=a(b1)";"b"(a1);"%eax"则表示输出寄存器eax中的值赋给b1,输入则是把a1中的值赋给ebx 改变的是eax中的值"a","b","c","d"分别表示eax ebx ecx edx"S" "D"表示esi,edi "r"任何寄存器

    by pkking 2 2
  • (第二章)保护模式(第一节)的笔记

    参考资料:《linux0.11内核完全注释》 第76页实模式:段+偏移地址保护模式:段寄存器中存放的是选择子,选择子决定描述符两种模式的区别在于对段寄存器的解释不同选择子:指向GDT或LDT选择子即16位段寄存器(可能不太准确)0~1位:优先级2位:LDT或GDT选择3~15位:描述符表索引  

    by foTok 0 0
  • (第一章)att汇编语法格式的笔记

    AT&T汇编1.在寄存器前面加上%2.指令 source destination3.立即数前面加$,否则认为是内存地址4.操作数长度由加在指令的符号表示b(byte)、w(word)、l(long)5.在jmp/call要加上*前面加l表示长跳转7.返回指令长跳转前加l8.寻址section:disp(base,index,scale)计算方法section:base+index*scale+disp9.C嵌入汇编_asm_("asm statements":outputs:inputs:regsters_modified);调用寄存器时,前面需要加两个%更多详细情况,参见《深入分析linux内核源代码》,50页

    by foTok 0 0

你感兴趣的课程

5万+浏览/ 1756学员/ 3.8评分
免费
4万+浏览/ 281学员/ 4.5评分
免费