Linux内核第七节 20135332武西垚】的更多相关文章

预处理.编译.链接和目标文件的格式 可执行程序是怎么得来的 以C语言为例,c代码经过编译器的预处理,编译成汇编代码,由汇编器编译成目标代码,再链接成可执行文件,由操作系统加载到cpu里来执行. (截图) .c----.asm(.s)-----.o(二进制文件)-----A.out(可执行文件) 预处理负责把include的文件包含进来及宏替换等工作 可执行文件是使用共享库的. 静态编译 -static 把库里的东西都放在里面了所以比较大 可执行文件的内部是怎样的? 目标文件的格式ELF (截图)…
实验目的: 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 实验过程: 查看系统调用列表 get pid 函数 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main(int argc, const char *argv[]) { pid_t tt; tt = getpid(); printf("%u\n&quo…
20135332武西垚 在MenuOS中通过添加代码增加自定义的系统调用命令 使用gdb跟踪调试内核 简单分析system_call代码了解系统调用在内核代码中的处理过程 由于本周实验是在Kali虚拟机上进行操作的,具体实现过程中的代码和实验楼里的环境有一定的差异,在解决了各种报错之后终于完成了实验,在这次的实验报告中将较为详细的记录实验过程中遇到的问题以及解决方案,以便以后更加熟练地理解与掌握Kali的操作原理和步骤. 实验——分析system_call中断处理过程 给MenuOS增加time…
如何描述一个进程:进程描述符的数据结构: 如何创建一个进程:内核是如何执行的,以及新创建的进程从哪里开始执行: 使用gdb跟踪新进程的创建过程. 进程的描述 操作系统三大功能: 进程管理(最核心最基础) 内存管理 文件系统 进程描述符task_struct数据结构 task _ struct:为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息.struct task_struct数据结构很庞大. 进程的状态:Linux进程的状态(就绪态.运行态.阻塞态)与操作…
http://www.cnblogs.com/wuxiyao/p/5220677.htmlhttp://www.cnblogs.com/wuxiyao/p/5247571.htmlhttp://www.cnblogs.com/wuxiyao/p/5272748.htmlhttp://www.cnblogs.com/wuxiyao/p/5299117.htmlhttp://www.cnblogs.com/wuxiyao/p/5325392.htmlhttp://www.cnblogs.com/wu…
总结部分: Linux内核源代码: Arch 支持不同cpu的源代码:主要关注x86 Init   内核启动的相关代码:主要关注main.c,整个Linux内核启动代码start_kernel函数 Kernel 核心代码 installing the kernel source:如何安装内核源代码 构建Linux系统os 使用gdb跟踪内核运行过程 -S cpu在初始化之前将其冻结 -s 在tcp端口创建server 分析start_kernel函数 Trap init 涉及中断 这个函数用来做…
第一种分类: I/O-bound:频繁进行I/O,并且需要花费很多时间等待I/O完成 CPU-bound:计算密集,需要大量的CPU时间进行运算 第二种分类: 批处理进程:不必与用户交互,常在后台进行:不必很快响应(典型的批处理系统:编译程序.科学计算). 实时进程:有实时需求,不应被低优先级进程阻塞,响应时间短.要稳定(典型的实时进程:视频/音频.机械控制等). 交互式进程:需要经常与用户交互,因此要花很多时间等待用户输入操作,响应时间要快,平均延迟要低(典型的交互式程序:shell.文本编辑…
一 原子操作 指令以原子的方式执行——执行过程不被打断. 1 原子整数操作 原子操作函数接收的操作数类型——atomic_t //定义 atomic_t v;//初始化 atomic_t u = ATOMIC_INIT(0); //操作 atomic_set(&v,4); // v = 4 atomic_add(2,&v); // v = v + 2 = 6 atomic_inc(&v); // v = v + 1 = 7 //实现原子操作函数实现 static inline vo…
作者:武西垚 深入理解函数调用堆栈 堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 堆栈的作用 函数调用框架 传递参数 保存返回地址 提供局部变量空间 堆栈相关的寄存器 esp,堆栈指针,指向栈顶 ebp,基址指针,指向栈底,在C语言中用作记录当前函数调用基址. 其他关键寄存器 cs(代码段寄存器) : eip:总是指向下一条的指令地址 顺序执行:总是指向地址连续的下一条指令 跳转/分支:执行这样的指令的时候, cs : eip的值会根据程序需要被修改 参数传递与局部变量 建立框架(相…
原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解. 今天我们会分析到以下内容: 1.      Linux体系结构简介 2.      Linux内核源码简介 3.      Linux内核配置.编译.安装 l  Linux体系结构简介 1.       Linux体系结构(linux系统构成)…