在读内核代码陷阱那部分的时候想不通两点: 1。每个陷阱有一个默认的信号对应比如DIVIDE ERROR 对应SIGFPE,但是当系统在用户态运行当中遇到除0的操作的时候,系统如何陷入到内核当中(INTEL的CPU会自动地切换栈,然后将一些状态信息压入系统栈么?)那这个信号在什么时候发送给用户,而用户又什么时候对这个信号进行处理的呢?(怎么保证立即处理) 2。运行trap.c里面的程序的时候是不是栈一定是系统栈 不可能是用户栈? 希望高手...
在aix中,一个进程创建了2个线程,而且这两个线程是 JOIN_ENABLE 和 PTHREAD_SCOPE_SYSTEM的,所以将有两个内核线程与之对应,这些都很正确,但当这2个线程pthread_exit()后, 主进程pthread_join()后,主进程不退出,sleep()一段时间,但在sleep()之间,按理来说,这2个对应的内核线程应该也已经回收了(因为这2个线程已经退出了),但还是奇怪的是这两个内核线程没有退出,这个怎么解释?谢谢
最近开始在内核态下写程序忽然发现不能用线程 。 项目是这样的 ,需要采用nerfilter机制注册一个钩子在prerouting的时候调用 ,这样每进来一个包我就要记录这个包的纪录(存到哈西数组中 )。 同时还需要定时的对这个哈西数组进行数据遍历分析。 开始打算做到一起 ,后来发现这样根本就不行 。因为钩子是包触发的 。但定时器不管有没有包来都要运行 。这样就只好考虑将遍历的程序放到一个后台进程中一直运行 ,同时钩子函数在每...