Cpython直譯器下實現併發程式設計(背景知識)

2022-02-22 05:33:17 字數 763 閱讀 8828

顧名思義,程序即正在執行的乙個過程。程序是對正在執行程式的乙個抽象。

程序的概念起源於作業系統,是作業系統最核心的概念,也是作業系統提供的最古老也是最重要的抽象概念之一。作業系統的其他所有內容都是圍繞程序的概念展開的。

ps:即使可以利用的cpu只有乙個(早期的計算機確實如此),也能保證支援(偽)併發的能力。將乙個單獨的cpu變成多個虛擬的cpu(多道技術:時間多路復用和空間多路復用+硬體上支援隔離),沒有程序的抽象,現代計算機將不復存在。

必備的理論基礎:

#一 作業系統的作用:

1:隱藏醜陋複雜的硬體介面,提供良好的抽象介面

2:管理、排程程序,並且將多個程序對硬體的競爭變得有序

#二 多道技術:

1.產生背景:針對單核,實現併發

ps:現在的主機一般是多核,那麼每個核都會利用多道技術

有4個cpu,執行於cpu1的某個程式遇到io阻塞,會等到io結束再重新排程,會被排程到4個

cpu中的任意乙個,具體由作業系統排程演算法決定。

2.空間上的復用:如記憶體中同時有多道程式

3.時間上的復用:復用乙個cpu的時間片

強調:遇到io切,占用cpu時間過長也切,核心在於切之前將程序的狀態儲存下來,這樣

才能保證下次切換回來時,能基於上次切走的位置繼續執行

本文將將著重介紹程序以及它的親戚->執行緒

小夥伴們準備好了麼:我要發車了!!!!!!

Cpython的全域性直譯器鎖(GIL)

cpyrhon直譯器下有個全域性直譯器鎖 gil 在同一 在同一時刻,多執行緒中只有乙個執行緒訪問cpu 有了全域性直譯器鎖 gil 後,在同一時刻只能有乙個執行緒訪問cpu。全域性直譯器鎖鎖的是執行緒,而不是資料。這種全域性直譯器鎖的特性就是同一時間只有有乙個執行緒訪問cpu,所以在多個cpu的情...

Linux下實現簡單的shell直譯器

shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接受使用者輸入的命令並把它送入核心去執行。實際上shell就是乙個命令直譯器,它解釋有使用者輸入的命令並且把它們送到核心。不僅如此,shell有自己的程式語言用於對命令的編輯,它允許使用者編寫由shell命令組成的程式。she...

直譯器模式(C 實現)

本部落格旨在個人總結回顧 直譯器模式 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。說明 優點 可擴充套件性比較好,靈活。增加了新的解釋表示式的方式。易於實現簡單文法。缺點 可利用場景比較少。對於複雜的文法比較難維護。直譯器模式會引起類膨脹。直譯器模...