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模型:用户态进程告诉内核态需要什么数据,然后进程就可以继续干别的事情。内核等待数据准备好,然后将数据复制到用户空间,此时再告诉进程数据已经准备好。
  • 相关阅读:
    Java Json 数据下划线与驼峰格式进行相互转换
    php 将数组转换网址URL参数
    Swagger2常用注解及其说明 (转)
    Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念(转)
    bootstrap.css.map 404
    Git发生SSL certificate problem: certificate ha错误的解决方法
    防火墙禁ping:虚拟机ping不通主机,但主机可以ping虚拟机
    PhpStorm本地断点调试
    Java语言中姐种遍历List的方法总结
    Ubuntu18.04安装mysql5.7
  • 原文地址:https://www.cnblogs.com/KirinSB/p/12822006.html
Copyright © 2011-2022 走看看