• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

【达人提问】Linux内核中的阻塞机制和非阻塞机制怎么理解?

东方青 2017-12-11 浏览量:1087
【达人提问】Linux内核中的阻塞机制和非阻塞机制怎么理解??
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 阻塞和非阻塞其实是进程调度上的模式,对于阻塞,就是进程执行中独占相应资源,特别是需要外部同步时需要进程返回后再进行下一步,而非阻塞则进程需要资源时,采用非同步方式,直接返回(设置一定的监控中断),执行后续步骤,在条件达到时通过一定机制执行相应处理。


    这样整个资源的利用率会增高,但调度会更复杂。

    • 发布于 2017-12-11
    • 举报
    • 评论 2
    • 0
    • 0
Sourcelink 回复了 xdsnet:一句话能说完的 为啥要一段话? 回复
电子老工程师 回复了 :https://www.neumueller.com/datenblatt/macroblock/MBI6655%20Datenblatt%20-%20Datasheet.pdf 回复

其他答案 数量:7
  • 自己写驱动的话发现是阻塞方式打开的设备,则在没有得到想要的就是while循环呗,直到你想要的。

    非阻塞不就是立即返回吗。

    • 发布于2017-12-11
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :从丝印看不出具体尾缀,附件是规格书,可以让客户看一下哪个尾缀的参数能满足他们的需求 回复

  • 1)阻塞调用是没有获得资源则挂起进程,被挂起的进程进入休眠状态,调用的函数只有在得到结果之后才返回,进程继续;

    2)非阻塞是不能进行设备操作时不挂起,或返回,或反复查询,直到可以进行操作为止,被调用的函数不会阻塞当前进程,而会立刻返回;

    3)对象是否处于阻塞模式和函数是不是阻塞调用有很强的相关性,但并不是一一对应的。

    • 发布于2017-12-12
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :https://media.digikey.com/pdf/Data%20Sheets/Microchip%20PDFs/DM182030_Web.pdf 回复

电子老工程师 回复了  :有前缀SZ的是汽车级,封装尺寸有差异,SZ的比有SZ的尺寸大 回复

  • 阻塞就是当前进程在执行调用的时候,如果没有得到返回值,就是一直等待,非阻塞就是,没有返回值也继续执行

    • 发布于2017-12-12
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :找采购找一下 这颗料,可以替代有货的料,引脚定义都和原型号不一样 回复

  •        阻塞就是程序会一直卡在那的函数语句,最常见的阻塞就是scanf()函数,如果这个函数没有得到输入值,会一直轮询,直到得到输入值为止才会退出让主程序往下执行。
           非阻塞就是程序不会卡住的函数语句,最常见的非阻塞就是检测引脚输出电平状态的函数,一定会返回1或0其中一个,即使引脚浮空也一定会返回一个确定的值。

    • 发布于2017-12-12
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :1718761-3 MCON 1.2 LL TAB SWS AG LP 回复

  • 1、阻塞

    阻塞操作是指在执行设备操作时,托不能获得资源,则挂起进程直到满足操作所需的条件后再进行操作。被挂起的进程进入休眠状态(不占用cpu资源),从调度器的运行队列转移到等待队列,直到条件满足。

    2、非阻塞

    非阻塞操作是指在进行设备操作是,若操作条件不满足并不会挂起,而是直接返回或重新查询(一直占用CPU资源)直到操作条件满足为止。

    当用户空间的应用程序调用read(),write()等方法时,若设备的资源不能被获取,而用户又希望以阻塞的方式来访问设备,驱动程序应当在设备驱动层的对应 read(),write()操作中,将该进程阻塞直到资源可以获取为止;若用户是以非阻塞方式获取资源,当资源不能获取时设备驱动的read()、write()应当立即返回,用户空间的read()、write()也相应的立即返回。

       阻塞从字面上听起来似乎意味着效率低,其实不是这样。如果以非阻塞方式,用户想获取某一资源只能不停地查询,这样会占用CPU大量资源。而阻塞访问,若不能获取资源就会进入休眠从而节省CPU资源给其他进程使用。

    很显然阻塞的进程会进入到休眠状态,因此必须保证有一个地方能够唤醒休眠的进程。唤醒进程的地方一般都在中断里面,意味硬件资源的获得同时往往伴随着一个中断。

    • 发布于2017-12-14
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :B1135AS-1R0N=P3 详细说明 1µH屏蔽绕线电感8.5A 9.6mOhm Max非标准,没有和客户提供的参数完全一样,这个电流和封装都比提供的参数大一点 回复

  • 1.阻塞就是你想要获取你需要的资源时,一直在等待获取
    2.非阻塞是你想要获取你需要的资源时,间歇性的查询,然后执行其他程序。
    • 发布于2017-12-29
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :影响信号传输,破坏绝缘层,会有意外风险,不能使用。 回复

相关问题

问题达人换一批

【达人提问】Linux内核中的阻塞机制和非阻塞机制怎么理解?