zoukankan      html  css  js  c++  java
  • 操作系统 part5

    1.线程安全

    线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。

    线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。

    2.Linux5种IO模型

    概念:
    同步:发出一个功能的调用,在没有得到结果前,该调用不返回。
    异步:一个异步过程调用发出后,调用不能立刻得到结果,在完成后通过通知、回调来通知调用者。
    阻塞:调用结果未返回前,线程会被挂起。
    非阻塞:不能立刻得到结果前,该函数不会阻塞当前线程,而会立刻返回。
    同步和异步是相对于消息的通知机制而言的,阻塞和非阻塞是相对于等待消息时的状态来说的。

    1. (同步)阻塞式IO模型:程序调用一个IO函数,如果数据没有准备好,就一直等待。
    2. (同步)非阻塞式IO模型:程序调用IO后,进程不会被阻塞,内核马上返回给进程,如果数据没准备好,返回一个error,不断轮询检查数据是否准备好,准备好就拷贝数据到进程。
    3. (同步)IO复用模型:单个进程就可以同时处理多个网络连接的IO。它的基本原理就是不再由应用程序自己监视连接,取而代之由内核替应用程序监视文件描述符。
    4. (同步)信号驱动IO模型:允许socket进行信号驱动IO,并注册一个信号处理函数,进程继续运行并不阻塞,当数据准备好时,进程会收到一个SIGIO信号,可以在信号处理函数中调用IO操作,将数据从内核空间复制到用户空间。
    5. 异步IO模型:用户态进程告诉内核态需要什么数据,然后进程就可以继续干别的事情。内核等待数据准备好,然后将数据复制到用户空间,此时再告诉进程数据已经准备好。
  • 相关阅读:
    单调队列——POJ
    寒假ACM集训复习总结Day4-helman
    寒假ACM集训复习总结Day3-helman
    寒假ACM集训复习总结Day2-helman
    寒假ACM集训复习总结Day1-helman
    kettle 常用组件
    kettle实现sqlserver与mysql的连接并写入mysql
    kettle实现简单的增量同步
    Kettle入门
    spark快速大数据分析
  • 原文地址:https://www.cnblogs.com/KirinSB/p/12822006.html
Copyright © 2011-2022 走看看