网络编程的基本概念
# 操作系统的发展历程 # 主要的人机矛盾是什么 : CPU的使用率 # 输入\输出数据和CPU计算没有关系 # 操作系统是怎么进化的 # 传统的纸带输入 # 磁带的存储降低了输入输出数据占用的时间,提高了CPU的利用率 # 多道操作系统的出现 : 提高了CPU的利用率,单纯的切换会浪费时间 # 一台计算机上同时可以出现多个任务 # 能够将多个任务所使用的资源隔离开 # 当一个任务遇到输入输出工作的时候能够让另一个任务使用CPU去计算 # 分时操作系统 : 降低了cpu的利用率,提高了用户的体验 # 时间片轮转 # 实时操作系统 # 操作精密仪器或者设备 # 实时交易类 # 操作系统的作用 # 在具体的应用与所有的硬件之间起到了一个协调管理的作用 # 负责分配计算机中所有的资源 # 输入输出 Input/Output # 向内存输入 : read,recv,recvfrom,import,input # 从内存输出 : write,send,sendto,print # CPU的工作效率和输入输出的工作效率差 # 并发和并行 # 多个程序交替在同一个cpu上被计算 并发 # 多个程序同时在多个cpu上被计算 并行 # 阻塞/非阻塞 # 阻塞 CPU不工作 # 非阻塞 CPU一直在工作 # 异步和同步 # 异步 :发布一个任务,不等待这个任务的结果就继续执行我的任务 # 同步 :发布一个任务,等待获取这个任务的结果之后才继续执行我的任务 # 同步阻塞/同步非阻塞/异步阻塞/异步非阻塞 # 进程和程序 # 进程就是运行中的程序 # 每一个进程在计算机中都有一个唯一的进程id,pid process id # 进程 是计算机中资源分配的最小单位 # 三状态 : 就绪 运行 阻塞 # 线程 是计算机中能够被CPU调度的最小单位 # 是进程中的一个单位,它不能独立存在
# 基于原生socket的udp协议实现将client端发送过来的消息放到字典中 # 字典的key是所有客户端的地址,value是一个列表 # io :输入输出, # 输入到内存,向内存输入 # 从内存中向外(硬盘,网络)输出 # 操作系统的发展史 # 多道操作系统 # 分时操作系统 # 并发和并行 # 并发 : 多个程序在一个cpu上交替运行 # 并行 : 在多个cpu上同时有多个程序在执行 # 阻塞和非阻塞 # 指CPU是否在工作 # 在工作 :非阻塞 # 不在工作 :阻塞 # 同步和异步 # 调一个任务,需要等待这个任务执行完并返回结果,现在的代码才能继续 # 调一个任务,不关心这个任务是否执行是否完毕,只负责调用,余下的内容和我当前的代码时各自执行的 # 进程和程序 # 运行中的程序 # 是计算机中最小的资源分配单位 # 多个进程之间的数据互相隔离 # pid能够在操作系统中唯一标识一个进程 # 进程的三状态图 : 就绪 运行 阻塞 # 进程的创建和结束 # 进程的调度 # 先来先服务 # 短作业优先 # 分时/多道 # 多级反馈队列