Skip to content

Commit

Permalink
协程
Browse files Browse the repository at this point in the history
  • Loading branch information
wolverinn committed Mar 18, 2020
1 parent 8e95bd7 commit bd8b055
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions Operating Systems.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
* [进程调度策略有哪些?](#进程调度策略有哪些)
* [什么是僵尸进程?](#什么是僵尸进程)
* [线程同步有哪些方式?](#线程同步有哪些方式)
* [什么是协程?](#什么是协程)
* [什么是IO多路复用?怎么实现?](#什么是IO多路复用怎么实现)
* [什么是用户态和内核态?](#什么是用户态和内核态)
* 死锁
Expand Down Expand Up @@ -289,6 +290,21 @@ wait操作:执行wait操作的进程进入条件变量链末尾,唤醒紧急
互斥量是可以命名的,可以用于不同进程之间的同步;而临界区只能用于同一进程中线程的同步。创建互斥量需要的资源更多,因此临界区的优势是速度快,节省资源。
</details>
### 什么是协程?
协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
##### 协程多与线程进行比较?
<details>
<summary>展开</summary>
1. 一个线程可以多个协程,一个进程也可以单独拥有多个协程,这样python中则能使用多核CPU。
2. 线程进程都是同步机制,而协程则是异步
3. 协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态
</details>
### 什么是IO多路复用?怎么实现?
IO多路复用(IO Multiplexing)是指单个进程/线程就可以同时处理多个IO请求。
Expand Down

0 comments on commit bd8b055

Please sign in to comment.