摘要: #define switch_to(prev,next,last) do { \ unsigned long esi,edi; \ asm volatile("pushfl\n\t" \ "pushl %%ebp\n\t" \ ... 阅读全文
posted @ 2015-06-02 16:26 kkshaq 阅读(715) 评论(0) 推荐(0) 编辑
摘要: 中断门和陷阱门在使用上的区别不在于中断是外部产生的或是由CPU本身产生的,而是在于通过中断门进入中断服务程序时CPU会自动将中断关闭,也就是将CPU中EFLAGS寄存器的IF标志位清成0,以防嵌套中断的发生;而在通过陷阱门进入服务程序时则维持IF标志位不变。这就是中断门和陷阱门的惟一区别。系统调用用... 阅读全文
posted @ 2015-06-01 22:53 kkshaq 阅读(1799) 评论(0) 推荐(0) 编辑
摘要: linux线程私有的部分:每个线程都拥有一个独立的程序计数器,进程栈和一组进程寄存器linux进程切换时通过TSS段,TSS中的esp0和ss0都是系统初始化设置的,指向进程创建时候,分配的栈空间。当进程切换的时候,在内核态下才进行进程切换,在0.11版本中,当前进程的寄存器被压入当前进程的TSS中... 阅读全文
posted @ 2015-06-01 22:10 kkshaq 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;3、用户态,运行于用户空间;一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。用户级上下文: 正文、数据、用户堆栈以及共享存储... 阅读全文
posted @ 2015-06-01 17:22 kkshaq 阅读(6215) 评论(0) 推荐(0) 编辑
摘要: 题目:有一个数组 int array[100];本来应该存放的数为1~100,但是有两个数据a,b丢失了,值变成了0。问如何找出丢失的那两个数?附带条件不能开辟额外的空间。解题思路:常见的两种解法有:1.计算a+b和a*b的值,然后在解方程求解(但是这样会使得中间某个变量过大)。2.使用bit位来标... 阅读全文
posted @ 2015-06-01 16:42 kkshaq 阅读(1450) 评论(0) 推荐(0) 编辑
摘要: int write(intfd, const void *buf, size_tcount);如果是堵塞fd,则返回值是count,或者是0,-1;如果是非堵塞fd,则返回值是写入的字节数,或者是0,-1;非堵塞fd,在缓冲区大小小于count时候,不堵塞直接返回写入的字节数。无论是是read还是w... 阅读全文
posted @ 2015-06-01 11:20 kkshaq 阅读(201) 评论(0) 推荐(0) 编辑
摘要: const int a=10;涉及到一个叫常量折叠的概念(认为我这说得太简单或者不好理解的可以google一下它获取更多信息), 即编译器虽然会给a分配空间(如果取a的地址进行操作的时候,会强迫编译器进行内存分配), 但是在预编译阶段, 会把所有的a用10替换(这就有点像#define了), 所以虽... 阅读全文
posted @ 2015-05-31 22:34 kkshaq 阅读(628) 评论(0) 推荐(0) 编辑
摘要: SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。http://blog.csdn.net/bill_lee_sh_cn/artic... 阅读全文
posted @ 2015-05-31 21:22 kkshaq 阅读(1157) 评论(0) 推荐(0) 编辑
摘要: 1.非递归版本#include #include using namespace std;void MergePass(int *arr,int *temp,int len,int step);void merge(int *temp,int *arr,int low,int mid,int hig... 阅读全文
posted @ 2015-05-30 20:45 kkshaq 阅读(164) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/dyllove98/article/details/8917197Linux对于内存的管理涉及到非常多的方面,这篇文章首先从对进程虚拟地址空间的管理说起。(所依据的代码是2.6.32.60)无论是内核线程还是用户进程,对于内核来说,无非都是task_stru... 阅读全文
posted @ 2015-05-30 11:12 kkshaq 阅读(1070) 评论(0) 推荐(0) 编辑