udodoo 发表于 2015-01-04 22:46

super皮波 发表于 2015-01-05 09:47

你的理解有问题,写文件的时候,没有阻塞,当然一直都是running状态了,running状态不一定代表当前进程正在运行,只要是任务处于运行队列中就是running状态
R    Running or runnable (on run queue)

udodoo 发表于 2015-01-05 13:00

super皮波 发表于 2015-01-05 13:42

回复 3# udodoo

stdio库上是有缓冲的,内核中为每个文件都有对应的缓冲,调用printf只是将带写入的数据写入到stdio库的缓冲区,这个函数返回之后并不能代表数据已经写入到硬盘上了
标准库的缓冲模式有三种,行缓冲,全缓冲,无缓冲模式
write系统调用可以绕过标准库的缓冲,直接将数据写入到内核的缓冲中。

至于阻塞,可以理解为等待某些资源,在某些资源准备好之前,任务无法运行了,比如打印机,我这个进程想用打印机,不巧这个打印机其他进程正在用,那我只能等待,这时候的进程就
是阻塞的状态。

udodoo 发表于 2015-01-05 21:27

super皮波 发表于 2015-01-06 00:25

回复 5# udodoo

都算是资源
   
页: [1]
查看完整版本: 我的程序在写磁盘,查看/proc并没有处于D状态而是一直是R状态?