摘要: 中断门和陷阱门在使用上的区别不在于中断是外部产生的或是由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) 编辑