阻塞(Block)这个概念。当进程调用一个阻塞的系统函数时,该进程被置于睡眠(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了(比如网络上接收到数据包,或者调用sleep指定的睡眠时间到了)它才有可能继续运行。与睡眠状态相对的是运行(Running)状态,在Linux内核中,处于运行状态的进程分为两种情况:

¨          正在被调度执行。CPU处于该进程的上下文环境中,程序计数器(eip)里保存着该进程的指令地址,通用寄存器里保存着该进程运算过程的中间结果,正在执行该进程的指令,正在读写该进程的地址空间。

¨          就绪状态。该进程不需要等待什么事件发生,随时都可以执行,但CPU暂时还在执行另一个进程,所以该进程在一个就绪队列中等待被内核调度。系统中可能同时有多个就绪的进程,那么该调度谁执行呢?内核的调度算法是基于优先级和时间片的,而且会根据每个进程的运行情况动态调整它的优先级和时间片,让每个进程都能比较公平地得到机会执行,同时要兼顾用户体验,不能让和用户交互的进程响应太慢。

Linux下的阻塞(Block)相关推荐

  1. C++笔记之linux下非阻塞多线程运行多个系统shell命令(popen方法)

    参考博文:C++ linux 睡眠函数sleep和std::this_thread::sleep_for 参考博文:C++笔记之linux下运行系统shell命令(popen方法)函数封装 参考博文: ...

  2. linux下C code block环境,linux 使用 codeblocks

    场景:彻底告别Linux下没有C/C++好用 IDE 的时代---- 在 Fedora 9 下 使用 CodeBlocks 开发!解决方案 彻底告别Linux下没有C/C++好用 IDE 的时代--- ...

  3. Java图片压缩 BufferedImage Linux 下代码阻塞不工作

    为什么80%的码农都做不了架构师?>>>    Tomcat 需要在catalina.sh中添加如下JVM配置: JAVA_OPTS="-Djava.awt.headles ...

  4. linux下的阻塞和非阻塞

            读常规文件是不会阻塞的,不管读多少字节,read 一定会在有限的时间内返回.从终 端设备或网络读则不一定,如果从终端输入的数据没有换行符,调用 read 读终端设备就会 阻塞,如果网络 ...

  5. linux修改目录block信息,linux下文件操作inode,block的变化

    在"浅谈linux性能调优之三:分区格式化之前的考虑" http://my.oschina.net/sharelinux/blog/143522    一文中我说了inode与bl ...

  6. linux select read阻塞_linux下的IO模型详解

    开门见山,Linux下的如中IO模型:阻塞IO模型,非阻塞IO模型,IO复用模型,信号驱动IO模型,异步IO模型,见下图 接下来一一讲解这5种模型 阻塞型IO:最简单的一种IO模型,简单理解就是死等, ...

  7. linux下阻塞的系统调用,Linux下文件的阻塞与非阻塞对部分系统调用的影响

    1.基本概念 所谓的阻塞,即内核在对文件操作I/O系统调用时,如果条件不满足(可能需要产生I/O),则内核会将该进程挂起.非阻塞则是发现条件不满足就会立即返回.此外需要注意的是非阻塞并不是轮询,不然就 ...

  8. linux下网络编程设置非阻塞,UNIX网络编程 非阻塞connect的实现

    一.<UNIX网络编程>-非阻塞connect 在一个TCP套接口被设置为非阻塞之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行中,但是仍未 ...

  9. linux命令 recv阻塞时间,linux下close 掉socket 之后 阻塞的recv 不会立即返回

    在开发的一个基于rtmp聊天的程序时发现了一个很奇怪的现象. 在windows下当我们执行 closesocket的操作之后,阻塞的 recv会立即返回 -1 . 而在linux下当我们执行close ...

最新文章

  1. java异常类型和基本处理原则_Java异常控制机制和异常处理原则
  2. android学习之-简单对话框
  3. idea服务器怎么配置文件,Idea部署远程Docker并配置文件
  4. 【Python基础】python使用openpyxl操作excel
  5. 一个很有深度的C++内存问题---GDB调试(一)
  6. python做后端开发的优点_【后端开发】python语言的特点是什么
  7. html ajax 菊花,Ajax加载菊花loding效果
  8. CentOS6.5卸载默认安装的mysql5.1,并安装mysql5.5(亲测有效)
  9. 社区内放自助打印机,赚钱吗?
  10. C# winForm utf8 gbk 相互转码小工具
  11. 图片标注工具Labelme-简明使用教程
  12. 将正方形图片转换成圆形图片
  13. 大会没看够?2021 Google 开发者大会总结看这里!
  14. 爬虫实战(自用)requests模块、聚焦爬虫(数据解析)、selenium模块
  15. shell 自动搜索历史记录
  16. 3、HeidiSQL数据库管理工具下载与安装
  17. CTDC 2017 首席技术官领袖峰会 | 技术、探索、创新
  18. linux打开udc端口命令,Openstack API常用命令
  19. 小白IT:从0~明白带你体验python中做上帝感觉--一切皆对象,处处是多态——面向对象
  20. python进制间的转换

热门文章

  1. php amqp扩展安装,php扩展AMQP,安装报错解决
  2. datagrid底部显示水平滚动_DevExpress WPF v19.1:Data Grid/Tree List等控件功能增强
  3. 记java关键词_Java关键词及含义
  4. 和12岁小同志搞创客开发:如何选择合适的控制器?
  5. 力扣(LeetCode)刷题,简单+中等题(第34期)
  6. 基于yolov5的行人检测跟踪与社交距离预测 (pedestrian detection and social distance prediction)
  7. 【yolov4目标检测】(4) opencv+yolov4-tiny 实现选择性目标检测,附python完整代码
  8. 强化学习(一)- 强化学习介绍、Markov决策过程和贝尔曼期望方程
  9. 新建eclipse的java项目报错处理
  10. C++ std::function<void(int)> 和 std::function<void()> 作为函数参数的注意事项