摘要: 父进程 僵死进程 init进程 阅读全文
posted @ 2012-07-28 23:13 llkkyy 阅读(6092) 评论(0) 推荐(0) 编辑
摘要: 进程终止 进程终止处理 阅读全文
posted @ 2012-07-28 22:49 llkkyy 阅读(1612) 评论(0) 推荐(0) 编辑
摘要: 专用进程 unix linux 操作系统 交换进程 init进程 页精灵进程 阅读全文
posted @ 2012-07-28 22:34 llkkyy 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 对于含有多个源文件的程序的编译链接,使用make工具可以更方便。这些源文件的处理步骤通常记录在一个叫makefile的文件里。这个makefile文件和源代码放在同一个目录下。在这个目录下运行make命令时,按照GNUmakefile、makefile、Makefile的顺序找到第一个存在的文件并执行(有些Unix系统的make命令不是GNU make,不会查找GUNmakefile这个文件名),完成相应的编译步骤。 makefile由一组规则(Rule)组成,一般规则的格式如下:例如:main是这条规则的目标(target),main.o,f1.o,f2.o,f3.o是这条规则的条件,gc. 阅读全文
posted @ 2012-07-28 16:32 llkkyy 阅读(9181) 评论(0) 推荐(0) 编辑
摘要: 命令描述backtrace(或bt)查看各级函数调用及参数finish连续运行到当前函数返回为止,然后停下来等待命令Frame(f)帧编号选择帧栈Info(i) locals查看当前栈帧局部变量的值list(l)列出源代码list 行号列出从第几行开始的源代码list 函数名列出某个函数的源代码nest (n)执行下一行语句print (p)打印表达式的值quit (q)退出gdb调试环境set var修改变量的值start开始执行程序,停在main函数第一行语句前等待命令step (s)执行下一行语句,如果有函数调用则进入到函数中break (b) 行号在某一行设置断点break 函数名在某 阅读全文
posted @ 2012-07-26 13:27 llkkyy 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 我们的讨论从一道经典的题目开始:Intel和微软同时出现的面试题#pragma pack(8)struct s1{char a;longb;};struct s2{char c;s1 d;long long e;};#pragma pack()问1.sizeof(s2) = ?2.s2的c后面空了几个字节接着是d?经上机测试,sizeof(s2)=24。s2的C后面空了7个字节。这里涉及到一个我们平时可能会忽视的问题——内存对齐【Memory alignment】。1.内存对齐定义: 现在使用的计算机中内存空间都是按照字节划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但是实际 阅读全文
posted @ 2011-08-22 16:20 llkkyy 阅读(2332) 评论(0) 推荐(0) 编辑
摘要: int exchange(int *xp,int y){ int x=*xp;*xp=y;return x;}省略了栈的建立和完成部分的汇编代码如下://xp at %ebp+8,y at %ebp+121 movl 8(%ebp),%edx2 movl (%edx),%eax3 movl 12(%ebp),%ecx4 movl %ecx,(%edx)注:1.int x=*xp;表示将读存储在xp所指位置中的值,并将它存放在名字为x的局部变量中;2.*xp=y;表示将参数y的值写到xp所指向的位置;3.间接引用指针就是将该指针放在一个寄存器中(movl 8(%ebp),%edx... 阅读全文
posted @ 2011-08-19 22:58 llkkyy 阅读(498) 评论(0) 推荐(0) 编辑
摘要: C语言中规定,在执行一个运算时,如果它的一个运算数是有符号的而另外一个是无符号的,那么C语言会隐式地将有符号参数强制类型转换为无符号数。这可以说是一个“妇孺皆知”的规定,但往往由于对它的不重视,引起了一些难以发现的错误。我们来看一个简单的函数,函数功能是实现数组元素的求和,数组长度由length给出。float sum_element(float a[],unsigned length){int i;float result=0;for(i=0;i<=length-1;i++) result+=a[i];return result;}当参数length为0时,函数似乎应该返回0.0。然而 阅读全文
posted @ 2011-08-19 16:16 llkkyy 阅读(418) 评论(0) 推荐(1) 编辑
摘要: 对于跨越多字节的程序对象,我们必须建立两个规则:这个对象的地址是什么,以及在存储器中如何排列这些字节。在几乎所有的机器中,多字节对象都被存储为连续的字节序列,对象的地址是所使用字节中的最小地址。 小端法:存储器中按照从最低有效字节到最高有效字节的顺序存储对象; 大端法:存储器中按照从最高有效字节到最低有效字节的顺序存储对象; 不同的机器采用不同的规则,我们可以通过程序来了解自己所用机器所采用的规则。#include<stdio.h>typedef unsigned char *byte_pointer; //byte_pointer定义为指向unsigned char类型的对象指针 阅读全文
posted @ 2011-08-17 17:07 llkkyy 阅读(1420) 评论(0) 推荐(0) 编辑