深入理解计算机系统 第十二章 并发编程
?
如果邏輯控制流在時間上重疊,那么它們就是并發的(concurrent)
這種常見的現象稱為并發(concurrency),出現在計算機系統的許多不同層面上。
?
并發不僅僅局限于內核,它也可以在應用程序中扮演重要角色。
?
應用級并發在以下情況中都是很有用的:
1、訪問慢速 I/O 設備
當一個應用正在等待來自慢速 I/O 設備(例如磁盤)的數據到達時,內核會運行其它進程,使 CPU 保持繁忙。每個應用都可以按照類似的方式,通過交替執行 I/O 請求和其他有用的工作來利用并發。
2、與人交互
和計算機交互的人要求計算機有同時執行多個任務的能力
3、通過推遲工作來降低延遲
4、服務多個網絡客戶端
一個并發服務器,可以為每個客戶端創建一個單獨的邏輯控制流。這就允許服務器同時為多個客戶端服務,并且也避免了慢速客戶端獨占服務器
5、在多核機器上進行并行計算
被劃分成并發流的應用程序通常在多核機器上比在單處理器機器上運行得快,因為這些流會并行執行,而不是交錯執行
?
使用應用級并發的應用程序稱為并發程序,現代操作系統提供了三種基本的構造并發程序的方法:
1、進程。
用這種方法,每個邏輯控制流都是一個進程,由內核來調度和維護。因為進程有獨立的虛擬地址空間,想要和其他流通信,控制流必須使用某種顯示的進程間通信(interprocess communication,IPC)機制
2、I/O 多路復用
在這種形式的并發編程中,應用程序在一個進程的上下文中顯示地調用它們自己的邏輯流。邏輯流被模型化為狀態機,數據到達文件描述符后,主程序顯示地從一個狀態轉換到另一個狀態。因為程序是一個單獨的進程,所以所有的流都共享同一個地址空間
3、線程
線程是運行在一個單一進程上下文中的邏輯流,由內核進行調度。可以把線程看成是其他兩種方式的混合體,像進程流一樣由內核進行調度,而像 I/O 多路復用一樣共享一樣共享同一個虛擬地址空間
?
轉載于:https://www.cnblogs.com/stone94/p/10393162.html
總結
以上是生活随笔為你收集整理的深入理解计算机系统 第十二章 并发编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 发那科程序全部输出_如何拷贝FANUC系
- 下一篇: 柔性电子综述2014:Wearable