6.一般情况下在Linux/Windows平台下栈空间的大小?
答:在Linux下是由系统环境变量来控制栈的大小的,默认8M。Windows下可以由编译器决定栈大小,VC++ 6.0 默认的栈空间是1M。
7.异常和中断的区别
答:异常:是CPU内部出现的中断,即在CPU执行特定指令时出现的非法情况。又称同步中断,只有在一条指令执行后才会发出中断,不可能在指令执行期间发生异常。产生的原因:程序的错误或内核必须处理的异常条件。产生的目的:个进程发送一个信号以通报反常情况,管理硬件资源。异常又分为故障和陷阱。
中断:由其他硬件设备依照CPU时钟信号随机产生,即在指令之间发生,又称异步中断。产生的原因主要是响应外部硬件设备。中断可分为外部可屏蔽中断(INTR)和外部非屏蔽中断(NMI)。
8.Linux五种IO模型
答:(1)同步,异步,阻塞&非阻塞的概念:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行)。函数只有在得到结果之后才会返回。非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
(2)
同步IO和异步IO的区别就在于:数据拷贝的时候进程是否阻塞
阻塞IO和非阻塞IO的区别就在于:应用程序的调用是否立即返回
(3)五种IO模型:阻塞I/O,非阻塞I/O,I/O复用,信号驱动I/O,异步I/O