IO密集型程序
  在程序执行过程中存在大量IO操作,而CPU操作较少,消耗CPU较少,运行效率较低
CPU(计算)密集型程序
  在程序执行中,CPU运算较多,IO操作相对较少(消耗CPU大,运行速度快)
IO分类: 阻塞IO   
       阻塞情况: 是IO的默认形态,是效率较低的一种IO情形
          1 因为某种条件没有达成造成的阻塞
              accept input recv
          2 处理 IO端数据传输时间较长形成的阻塞
              网络传输过程,文件读写过程
     非阻塞IO : 通过IO事件的属性,使其变成非阻塞状态,(让一些条件阻塞函数不再阻塞)
        非阻塞IO往往和循环判断一起使用
        s.setblocking(False)
          将套接字设置为非阻塞状态(默认为阻塞状态)
        超时检测: 将原本阻塞函数,设置一个最长阻塞时间,如果条件时间内达成则正常运行,如果仍然阻塞则被视为超时,继续向下运行或产生异常
        s.settimeout(sec)  设置套接字超时时间
      
     IO多路复用 :同时监控多个IO事件,当哪个IO事件准备就绪,就执行哪个IO事件,以此形成可以同时操作多个IO的并发行为,避免一个IO阻塞,造成所有IO都无法执行
        IO准备就绪:是一种IO必然发生的临界状态
        IO多路复用的编程实现:
            1 将IO设置成为关注IO
            2 将关注IO提交给内核监视
            3 处理内核给我们反馈的准备就绪的IO
        具体:select --> windows linux unix
           poll  -->linux unix
           epoll  -->linux unix
    select 模块:
        import select
          rs,ws,xs = select(rlist,wlist,xlist[,timeout])
          功能: 监控IO事件,阻塞等待IO事件发生
        参数:
          rlist :列表, 存放我们监控等待处理的IO事件
          wlist :列表,存放我们要主动操作的IO事件
          xlist :列表: 我们要关注出错处理的IO事件
          timeout: 超时时间
        返回值 :
          rs 列表 rlist中准备就绪的IO
          ws 列表 wlist中准备就绪的IO
          xs 列表 xlist中准备就绪的IO
        注意:
          1 wlist中如果有IO事件则select立即返回到ws
          2 在处理IO过程中不要处理一个客户端长期占有服务端,使服务端无法运行到select 的情况
          3 IO多路复用占用计算机资源少,IO效率高     POLL
      1 创建POLL对象
        p= select.poll()
      2 添加注册事件
        p.register(s,事件) 关注S的所有IO事件
        
事件常量 意义
POLLIN 有数据读取
POLLPRT 有数据紧急读取
POLLOUT 准备输出:输出不会阻塞
POLLERR 某些错误情况出现
POLLHUP 挂起
POLLNVAL 无效请求:描述无法打开
      3 阻塞等待IO发生
         events = poll.poll()
         功能 :阻塞等待IO发生
         返回值 :events是一个列表,列表中的每个元素都是一个元组,代表一个发生的IO事件
            例子 --> (s.fileno() , event)
                 ( 就绪文件描述符, 对应的IO事件)
            使用 :需要通过文件描述符(fileno)找到对应的IO对象,然后来操作这个IO对象
      4 处理具体的IO   epoll方法
    使用方法 : 基本与poll方法相同
      * 将生产对象 poll() 改为 epoll()
      * 将所有poll对象事件改为epoll对象事件
    区别:  
      epoll 的效率要比 poll 和select 高
      epoll 的触发方式更多
        EPOLLET : 边缘触发     优点:
    
      没有 fd 数量限制,取决于系统内存的大小,一般来说 1GB 就可以有 10W个
      内核和用户控件使用同一块内存,mmap技术,没有用户态和内核态之间的拷贝,提高效率
      无需遍历所有,仅仅只需要遍历已经就绪的 fd 即可
    
    工作原理:
       1 在调用 epoll_create 之后,内核就已经创建了一个 eventpoll 红黑树结构体,一个 list 双向链表,在内核态准备接受存储需要监控的 fd。
       2 在调用 epoll_ctr 之后,直接向内核态的 eventpoll 进行 add/mod/del 对应的 fd,对于新添加进来的 fd,
          重复的 fd 可以通过 eventpoll 红黑树识别出来,而不需要再次从用户态拷贝到内核态这个过程
       3 同时 epoll 还维护了一个双向的 list 链表, 在epoll_ctr执行的时候,除了会向eventpoll 红黑树添加修改外,
        还会在内核中断函数处理程序中注册一个回调函数,告诉内核,当这个 fd 就绪之后,将他放到 list 里面去。
       4 在 epoll_wait 调用的时候,就是观察这个双向 list 是否有数据,有就直接处理即可


 
本地套接字
  linux 文件
    b (块设备文件)  c(字符设备文件)  d(目录)
    - (普通文件)  l(链接)      s(套接字)
    p(管道)
  作用 :用于本地不同的程序间进行通信
  创建流程 :
    1 创建本地套接字
      sockfd = socket(socket.AF_UNIX,socket.SOCK_STREAM)
    2 绑定本地套接字文件
      * 选定文件位置和名称
      * sockfd.bind(path)
    3 监听 listen()
    4 消息收发 recv() send()
    os.path.exists(path)
      功能 : 检测一个文件是否存在
      参数 :文件路径
      返回 : 存在返回 True 否则返回False
    删除文件:
      os.remove(path) os.unlink(path)
        功能 :删除一个文件
        参数 :目标文件

IO 理论 SOCK理论的更多相关文章

  1. 【转】分布式理论-CAP理论

    一 CAP理论简述 CAP (Consistency, Availability, Partition  Tolerance,) 理论是NoSQL数据库管理系统构建的基础.     强一致性:等同于所 ...

  2. 分布式_理论_02_Base 理论

    一.前言 五.参考资料 1.分布式理论(二)——Base 理论 2.分布式理论(二) - BASE理论

  3. (理论篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝

    为了快速构建项目,使用高性能框架是我的职责,但若不去深究底层的细节会让我失去对技术的热爱. 探究的过程是痛苦并激动的,痛苦在于完全理解甚至要十天半月甚至没有机会去应用,激动在于技术的相同性,新的框架不 ...

  4. NoSql的三大基石:CAP理论&BASE&最终一致性

    关系型数据库的局限 NoSql出现在关系型数据库之后,主要是为了解决关系型数据库的短板,我们先来看看随着软件行业的发展,关系型数据库面临了哪些挑战: 1.高并发 一个最典型的就是电商网站,例如双11, ...

  5. 10分钟了解分布式CAP、BASE理论

    CAP理论 2000年7月,Eric Brewer教授提出CAP猜想:2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP:之后,CAP理论正式成为分布式计算领域的公认定理. ...

  6. 分布式系统原理之cap理论

    1.1 CAP理论的含义 Cap理论表示在分布式系统中一致性(C).可用性(A)和分区容错性(P)最多只能同时满足两个.  一致性:客户端更新数据成功后,在任意时刻,在系统任意对外提供服务的节点,读取 ...

  7. [转]10分钟了解分布式CAP、BASE理论

    原文: https://www.cnblogs.com/chengtian/p/11278072.html ---------------------------------------------- ...

  8. 分布式系统之CAP理论杂记[转]

    分布式系统之CAP理论杂记 http://www.cnblogs.com/highriver/archive/2011/09/15/2176833.html 分布式系统的CAP理论: 理论首先把分布式 ...

  9. CAP原理、一致性模型、BASE理论和ACID特性

    CAP原理 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Con ...

随机推荐

  1. [转]js禁止微信浏览器下拉显示黑底查看网址,不影响内部Scroll

    原贴:https://www.cnblogs.com/jasonwang2y60/p/6848464.html 原贴:https://www.cnblogs.com/jasonwang2y60/p/6 ...

  2. JAVA 基础编程练习题23 【程序 23 求岁数】

    23 [程序 23 求岁数] 题目:有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁.问第 4 个人岁数,他说比第 3 个 人大 2 岁.问第三个人,又说比第 2 人大两岁.问第 ...

  3. C-Lodop提示Access violation at address ...in module 'CLodopPrint32.exe' write of address

    C-Lodop提示 Access violation at address ……in module 'CLodopPrint32.exe' write of address ……最近遇到了个问题,上午 ...

  4. 【leetcode】506. Relative Ranks

    problem 506. Relative Ranks solution1:使用优先队列: 掌握priority_queue 和 pair的使用: class Solution { public: v ...

  5. java面试考点-HashTable/HashMap/ConcurrentHashMap

    HashTable 内部数据结构是数组+链表,键值对不允许为null,线程安全,但是锁是整表锁,性能较差/效率低 HashMap 结构同HashTable,键值对允许为null,线程不安全, 默认初始 ...

  6. X-Forwarded-For注入漏洞实战

    准备工具 Burp suite Sqlmap 实训目标 1.掌握SQL注入的基本原理:2.了解服务器获取客户端IP的方式:3.了解SQL注入的工具使用: 解题方向 对登录表单的各参数进行测试,找到SQ ...

  7. vscode自动生成文件头部注释和函数注释

    参考链接:https://blog.csdn.net/sueRimn/article/details/88048276

  8. 监听input框变化,即时搜索 compositionstart, compositionend

    前话: 如果直接通过input监听, 它是键盘输入按键按下了就触发时间,这样可能导致一些问题,比如在谷歌浏览器想输入中文输入不了: 解决方案: 用 compositionstart 和 composi ...

  9. 46.前端html5标签学习

    HTML:TR  TD  TH  OL  UL  LI 这几个标签要区别 一.什么是HTML: 超文本标记语言(HyperText Markup Language),标准通用标记语言下的一个应用: 是 ...

  10. bootstrap-table的一些配置参数例子

    $('#reportTable').bootstrapTable({ method: 'post', url: '/qStock/AjaxPage', dataType: "json&quo ...