- 博客(11)
- 资源 (11)
- 收藏
- 关注
原创 分析Linux内核创建一个新进程的过程
分析Linux内核创建一个新进程的过程进程描述进程描述符(task_struct)用来描述进程的数据结构,可以理解为进程的属性。比如进程的状态、进程的标识(PID)等,都被封装在了进程描述符这个数据结构中,该数据结构被定义为task_struct进程控制块(PCB)是操作系统核心中一种数据结构,主要表示进程状态。进程状态fork()fork()在父、子进程各返回一次。在父进程中返回子进程的 p
2015-07-29 12:45:40 2604 2
原创 分析Linux内核创建一个新进程的过程
新进程的执行源于以下前提:- dup_task_struct中为其分配了新的堆栈- 调用了sched_fork,将其置为TASK_RUNNING- copy_thread中将父进程的寄存器上下文复制给子进程,保证了父子进程的堆栈信息是一致的- 将ret_from_fork的地址设置为eip寄存器的值最终子进程从ret_from_fork开始执行
2015-07-29 12:43:09 3810 3
原创 用 Arduino Uno 给 Arduino Mini(Pro)烧录程序
用 Arduino Uno 给 Arduino Mini(Pro)烧录程序准备Arduino UnoArduino Mini(Pro)杜邦线若干接线首先去掉 Arduino 上的芯片ATMEGA328P接线Uno —– Mini 0(RX) – 0(RX) 1(TX) – 1(TX) VCC —- VCC GND —- GND RESET – RST刷入程序将 Arduino
2015-07-24 13:59:33 18612
原创 Arduino初探:让 Arduino 闪起来
Arduino初探:让 Arduino 闪起来准备:一台电脑(笔者使用的是 Mac)Arduino(笔者使用的是 Arduino UNO)安装 Arduino IDE在官网(www.arduino.cc)下载相应的 IDE,解压并安装。打开IDE。将 Arduino 连接至计算机在 Mac 上会自动安装好驱动。在 工具 -> 板 中找到所对应的 Arduino 板子(笔者的是:Arduino
2015-07-19 21:00:43 3792
原创 分析system_call中断处理过程
分析system_call中断处理过程使用gdb跟踪分析一个系统调用内核函数(以 sys_chmod为例)启动调试内核qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -Sgdb 调试另开 shellgdb(gdb) file linux-3.18.6/vmlinux #在 gdb 界面中 targ
2015-07-19 09:40:52 3077
原创 浅析 Linux 系统调用
浅析 Linux 系统调用用户态、内核态以及中断具有高执行级别的程序可以执行特权指令intel X86 CPU 具有4种级别:0 ~ 3Linux 只用了0和3(0表示内核态,3表示用户态)特权级的表示:使用 CS 寄存器的低2位内核态逻辑地址空间:0xc0000000以上 用户态逻辑地址空间:0x00000000 ~ 0xbfffffff中断是从用户态到内核态的一种方式,即通过系统调
2015-07-11 21:46:20 2862
原创 跟踪分析Linux内核的启动过程
跟踪分析Linux内核的启动过程使用 gdb 跟踪调试内核使用 qemuqemu -kernel linux-3.18.6 /arch/x86/boot/bzImage -initrd rootfs.img -s -S参数:-s:在初始化时冻结 CPU-S: 为 gdb 分配1234端口gdb 调试另开 shellgdb(gdb) file linux-3.18.6/vmlinux #在
2015-07-10 16:18:32 3065
原创 完成一个简单的时间片轮转多道程序内核代码(二)
完成一个简单的时间片轮转多道程序内核代码重要汇编代码分析 asm volatile( "movl %1,%%esp\n\t" "pushl %1\n\t" "pushl %0\n\t" "ret\n\t" "popl %%ebp\n\t" : : "c" (task[pid]
2015-07-10 10:29:37 3277
原创 完成一个简单的时间片轮转多道程序内核代码(一)
完成一个简单的时间片轮转多道程序内核代码先上代码:myPCB.h/* * linux/mykernel/mypcb.h * * describe PCB * * by Yuanhang Luo * */ #define MAX_TASK_NUM 4#define KERNEL_STACK_SIZE 1024*8struct Thread{ unsigned lon
2015-07-07 23:26:47 2960
原创 几种基本汇编指令详解
几种基本汇编指令详解常见寄存器 寄存器 16位 32位 64位 累加寄存器 AX EAX RAX 基址寄存器 BX EBX RBX 计数寄存器 CX ECX RCX 数据寄存器 DX EDX RDX 堆栈基指针 BP EBP RBP 变址寄存器 SI ESI RSI 堆栈顶指针 SP
2015-07-07 11:02:09 43900 3
原创 反汇编一个简单的C程序并分析
反汇编一个简单的C程序并分析C 源码:int g(int x){ return x+1;}int f(int x){ return g(x);}int main(void){ return f(2) + 3;}汇编源码:1 g:2 pushl %ebp3 movl %esp, %ebp4 movl 8(%ebp), %eax5
2015-07-03 22:23:58 5114
The-Code-Survival-Guide
2016-01-19
程序员的数学 PDF
2014-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人