慢速系统调用VS快速系统调用
描述
慢速或快速是从操作系统角度,来判断一个系统调用执行所需要的时间。
这个时间并无固定标准(非实时操作系统),而是取决于该调用执行的具体情况。
若该调用等待事件(TCP连接建立)或其他执行体操作(相对OS来说,比较耗时,如磁盘IO),则属于慢速系统调用。
反之,则属于快速系统调用,如getpid
,gettimeofday
。
为什么需要这样划分?
因为慢速系统调用,需依赖外部,则可以将其放入等待队列,无需调度。这样便提高了资源(CPU)利用率。
特性
- 快速系统调用,被信号中断后,会自动重启,应用层无感知,
而慢速系统调用(没有设置O_NONBLOCK
)会出错返回(-1),errno=EINTR