嵌入式软件开发IO部分常考面试题
一、进程和线程的区别:
1、 资源和调度方面:线程是资源调度的最小单位,进程是资源分配的最小单位
2、 地址空间方面:在同一个进程中创建的线程共享该进程的地址空间,进程的地址空间相对独立
3、 安全性方面:进程相较于线程更安全一些,在同一个进程中的所有线程,一旦进程退出,线程全部退出
4、 通信方面:线程是通过全局变量进行通信的,进程是通过共享的3~4G内核空间进行通信的
二、静态库与动态库的区别
1、静态库是在程序编译的时候加载到二进制可执行文件中的,动态库是在程序运行的时候加载到代码中的
2、程序运行时将不再需要静态库,运行时无需加载库,因此运行速度更快。静态库是将代码复制到程序中,因此比较体积大。静态库升级后,程序需要重新编译链接。
3、动态库运行时还需要动态库的存在。程序在执行时加载动态库,代码体积小。程序升级更简单。
三、标准IO和文件IO的区别
1、标准IO是围绕流进行操作的,用FILE* 进行描述,FILE是结构体。文件IO是围绕文件描述符进行操作的。
2、文件IO默认打开三个文件描述符(0、1、2)、标椎IO默认打开三个流(stdin、stdout、stderr)
3、标准IO有缓冲机制,通过缓冲机制较少系统调用的次数,提高效率。