系统调用能否引起线程切换?malloc是不是系统调用?
参考答案
结论:系统调用可能引线程切换,malloc是库函数非直接系统调用。要点:1.系统调用进入内核,若阻塞(如IO等待)当前线程让出CPU引发切换,非阻塞调用可能不切换;2.malloc属C标准库,在用户态管理堆空闲链表,仅当内存不足时底层调brk/mmap向内核申请;3.对比:系统调用是软中断陷入内核,malloc大部分时间在用户态;4.注意:频繁malloc小对象易碎片,底层系统调用开销在首次或扩容时。示例:malloc(1)常不触发系统调用。
题目整理自公开面经,答案由校招宝自研生成,仅供参考