💻 Computer Basics
1、计算机网络
1.1 传输层:TCP和UDP
1.1.1 三次握手
1.1.2 四次挥手
1.1.3 流量控制
1.1.4 拥塞控制
1.1.5 TCP和UDP的区别
1.1.6 TCP如何保证传输的可靠性
1.1.7 TCP长连接和短连接
1.1.8 应用层提高UDP协议可靠性的方法
1.1.9 UDP和IP的首部结构
1.2 应用层:HTTP和HTTPS
1.2.1 HTTP和HTTPS的区别
1.2.2 GET和POST的区别
1.2.3 Session与Cookie的区别
1.2.4 从输入网址到获得页面的过程(越详细越好)
1.2.5 HTTP请求有哪些常见的状态码
1.2.6 什么是RIP,算法是什么
1.2.7 HTTP1.1和HTTP2.0的主要区别
1.2.8 DNS
1.2.9 HTTPS加密和认证过程
1.2.10 常见网络攻击
1.2.11 REST
1.3 计算机网络体系结构
1.4 网络层协议
1.4.1 IP地址的分类
1.4.2 划分子网
1.4.3 什么是ARP协议
1.4.4 NAT协议
2、操作系统
2.1 进程和线程
2.1.1 进程和线程的区别
2.1.2 进程间通信方式
2.1.3 同步原语
2.1.4 进程状态
2.1.5 进程调度策略
2.1.6 僵尸进程和孤儿进程
2.1.7 协程
2.1.8 异常控制流
2.1.9 IO多路复用
2.1.10 用户态和内核态
2.2 死锁
2.3 内存管理
2.3.1 分段与分页
2.3.2 虚拟内存
2.3.3 页面置换算法
2.3.4 局部性原理
2.3.5 缓冲区溢出
2.4 磁盘调度
-
+
游客
注册
登录
协程
## 1 含义 1. 协程是一种**轻量级线程**,**位于用户态**,完全**由用户自己控制**。 ![image](/media/202105/2021-05-18_164139.png) ## 2 特点 1. **线程的切换由操作系统负责调度**,**协程由用户进行调度**,因此**减少了上下文切换**,**提高了效率**。 2. 线程的默认栈大小是`1M`,而协程更轻量,接近`1K`,因此**可以在相同的内存中开启更多的协程**。 3. 由于在同一个线程上,**可以避免竞争关系而使用锁**。 4. **适用于 `I/O`密集型的场景**,**不适用于计算密集型的场景**。 ## 3 注意事项 ### 3.1 协程中不能调用导致线程阻塞的操作 1. 假设协程运行在线程之上,并且协程调用了一个阻塞IO操作。 2. 由于操作系统并不知道协程的存在,只知道线程,因此**在协程调用阻塞IO的时候,操作系统会让线程进入阻塞状态,当前的协程和其它绑定在该线程之上的协程都会陷入阻塞而得不到调度**。 3. 因此,**在协程中不能调用导致线程阻塞的操作**,也就是说,**协程只有和异步IO结合起来,才能发挥最大的作用**。 ### 3.2 在协程中调用阻塞IO操作的处理方式 1. **在调用阻塞IO操作的时候,重新启动一个线程去执行这个操作,同时将当前协程休眠(让出执行权),等执行完成之后,再唤醒协程,让协程去读取结果**,这其实和多线程没有太大区别。 2. **对系统的IO进行封装,改成异步调用的方式**,这需要大量的工作,最好寄希望于编程语言原生支持。 ## 4 线程与协程的比较 1. **线程占用的资源初始时是1MB**,**固定不可变**,**协程占用的资源初始时一般为2KB**,可**随需求而增大**。 2. **线程的调度**是由操作系统的**内核完成**,**协程的调度**是由**用户来完成**。 3. **线程资源占用太高,频繁创建销毁会带来严重的性能问题,协程资源占用小,不会带来严重的性能问题**。 4. **线程需要用锁来保证数据的一致性和可见性**,**协程**不需要多线程的锁机制,**因为只有一个线程,所以不存在同时写变量冲突**,所以**执行效率比多线程高很多**。 ## 5 参考文献 1. [什么是协程?](https://github.com/wolverinn/Waking-Up/blob/master/Operating%20Systems.md#%E4%BB%80%E4%B9%88%E6%98%AF%E5%8D%8F%E7%A8%8B) 2. [一文读懂什么是进程、线程、协程](https://www.cnblogs.com/Survivalist/p/11527949.html)。 3. [什么是协程?](https://zhuanlan.zhihu.com/p/172471249)
ricear
2021年5月18日 17:29
©
BY-NC-ND(4.0)
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码