看书时了解到,write
系统调用可以认为是原子性的。于是我有些好奇:
- 如果一个进程在它的时间片即将结束时调用了
write
,到了原本应该切换进程时这个write
调用还没完成。那么会发生什么?内核会自动将它的时间片延长直到这个调用完成,还是会依然按照既定的时间片的规划切换到其他进程,让原进程就停留在write
中? - 如果两个不同的进程同时调用
write
写同一个文件(系统是多核的,所以真的是“同时”)。比如分别写"1111"和"2222",有没有可能在某种情况下出现“11221122”?(经过个人尝试是不会错乱的,但我想知道有没有某种特殊情况能出现这种错乱呢)
你了解原子性是什么意思吗?如果会错乱还能叫原子性?