From bd8b05593312724a1587013dc28ede661bd230a3 Mon Sep 17 00:00:00 2001 From: wolverinn Date: Wed, 18 Mar 2020 19:42:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=8F=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Operating Systems.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Operating Systems.md b/Operating Systems.md index a91f2fe..94581c7 100644 --- a/Operating Systems.md +++ b/Operating Systems.md @@ -8,6 +8,7 @@ * [进程调度策略有哪些?](#进程调度策略有哪些) * [什么是僵尸进程?](#什么是僵尸进程) * [线程同步有哪些方式?](#线程同步有哪些方式) + * [什么是协程?](#什么是协程) * [什么是IO多路复用?怎么实现?](#什么是IO多路复用怎么实现) * [什么是用户态和内核态?](#什么是用户态和内核态) * 死锁 @@ -289,6 +290,21 @@ wait操作:执行wait操作的进程进入条件变量链末尾,唤醒紧急 互斥量是可以命名的,可以用于不同进程之间的同步;而临界区只能用于同一进程中线程的同步。创建互斥量需要的资源更多,因此临界区的优势是速度快,节省资源。 +### 什么是协程? + +协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。 + +##### 协程多与线程进行比较? +
+展开 + +1. 一个线程可以多个协程,一个进程也可以单独拥有多个协程,这样python中则能使用多核CPU。 + +2. 线程进程都是同步机制,而协程则是异步 + +3. 协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态 +
+ ### 什么是IO多路复用?怎么实现? IO多路复用(IO Multiplexing)是指单个进程/线程就可以同时处理多个IO请求。