加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

操作系统 IO 模式

发布时间:2021-03-07 14:47:37 所属栏目:评论 来源:互联网
导读:为两阶段:用户进程空间--内核空间、内核空间--设备空间(磁盘、网络等)。IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。 LINUX中进程无法直接操作I/O设备,其必须通过系统调用请求kernel来协助完成I/O动作;内核会为每个I/O设备维护一个缓冲

为两阶段:用户进程空间<-->内核空间、内核空间<-->设备空间(磁盘、网络等)。IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。

LINUX中进程无法直接操作I/O设备,其必须通过系统调用请求kernel来协助完成I/O动作;内核会为每个I/O设备维护一个缓冲区。

对于一个输入操作来说,进程IO系统调用后,内核会先看缓冲区中有没有相应的缓存数据,没有的话再到设备中读取,因为设备IO一般速度较慢,需要等待;内核缓冲区有数据则直接复制到进程空间。

所以,对于一个网络输入操作通常包括两个不同阶段:

(1)等待网络数据到达网卡→读取到内核缓冲区,数据准备好;

(2)从内核缓冲区复制数据到进程空间。

关键概念理解

  • 同步:发起一个调用,得到结果才返回。
  • 异步:调用发起后,调用直接返回;调用方主动询问被调用方获取结果,或被调用方通过回调函数。
  • 阻塞:调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
  • 非阻塞:调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

同步才有阻塞和非阻塞之分;

阻塞与非阻塞关乎如何对待事情产生的结果(阻塞:不等到想要的结果我就不走了)

明确进程状态

理解进程的状态转换

  • 就绪状态 -> 运行状态:处于就绪状态的进程被调度后,获得CPU资源(分派CPU时间片),于是进程由就绪状态转换为运行状态。
  • 运行状态 -> 就绪状态:处于运行状态的进程在时间片用完后,不得不让出CPU,从而进程由运行状态转换为就绪状态。此外,在可剥夺的操作系统中,

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读