程序 併發 執行緒 032

2021-09-19 11:00:40 字數 2386 閱讀 3412

一 計算機操作原理簡介:

硬碟 永久儲存資料的

記憶體 暫存資料 

cpu  運算 三者之間關係如下圖

二 併發 : 提高程式的工作效率(偽並行)  遇到io就進行切換 

1程序切換   2儲存現場 儲存程式執行的資訊

並行 :  3個cpu同時執行 3個程式

三 程序的建立

開啟裝置上安裝的程式使其進入執行狀態即建立了乙個程序

與程式的區別 :

1 .程式是指令和資料的有序集合,其本身沒有任何執行的含義 , 是乙個靜態的概念. 而程序是程式在處理機上的一次執行過程,它是乙個動態的概念 

2 .程式可以作為一種軟體資料長期存在 , 而程序有一定盛名週期

3 .程式是永久的,程序是暫時的 

例如qq 不執行 就是程式 執行起來 就成為乙個程序了. 

四  程序排程 

想要多個程序交替執行 作業系統必須對這些程序進行排程 而這個排程也不是隨機進行的 是需要遵循一定的法則 因此就有了程序的排程演算法 

先來先服務  排程演算法最簡單的排程演算法 既可用於作業排程 也可用於程序排程 該演算法有利於長作業(程序) 不利於短作業(程序) 適合於cpu繁忙性作業 不適合i/o繁忙性作業(程序)

短作業優先排程 對短作業(程序)優先排程,對長作業不利 不能保證緊迫性作業(程序)被及時處理 長短只是被估出來的

時間片輪轉  :  

多級反饋佇列

五 併發與並行 

併發 : 偽並行 , 即看起來是同時執行 單個cpu + 多道技術就可以實現併發(並行也屬於併發)

並行 : 同時執行 只有具備多個cpu才能實現並行 將cpu比作高速上的多個同向車道 程序好比是行駛的車輛 大家在自己的車道上行駛 互不影響 同時開車 這就是並行 

單核下 可以利用多道技術 多個核 每個核也都可以利用多道技術(針對單核而言的)

例如 有四個核 六個任務 ,這樣同一時間有4個任務被執行 一旦某個核遇到i/o就被迫中斷執行 此時任務5就會拿該核的cpu時間片去執行 這就是單核的多道技術 而一旦被迫中斷的任務的i/o結束了 作業系統就會重新呼叫它 可能被分配到四個cpu的任意乙個去執行 保證cpu一直在工作.

六 同步\非同步\阻塞\非阻塞(重點)

1 .程序狀態介紹

在程式進行執行過程中 由於被作業系統的排程演算法控制 程式會進入幾個狀態 :就緒 執行和阻塞.

就緒狀態  當程序已分配到除cpu以外所有必要的資源 只要獲得處理機便可立即執行 這時的程序狀態稱為就緒狀態.

執行/執行狀態 程序獲得處理機 正在處理機上進行 此時的狀態稱為執行狀態

阻塞狀態 狀態正在執行的程序 由於等待某個事件發生而無法執行時 便放棄處理機而處於阻塞狀態 引起阻塞的事件可以有多種 例如 等待i/o完成 申請緩衝區不能滿足.等待信件(訊號)等

事件請求 : input  sleep  檔案輸入輸出 recv accept 等

事件發生 :sleep input 等完成了

時間片到了之後又回到就緒狀態 這三個狀態不斷地在轉換

2 .同步非同步

同步就是 乙個任務的完成需要依賴另乙個任務時 , 只有等待被依賴的任務完成以後 依賴的任務才能算完成 這是一種可靠的任務序列 要成功都成功 失敗都失敗 其實就是乙個程式結束才執行另外乙個程式 序列的,不一定兩個程式就有依賴關係.

非同步就是不需要等待被依賴的任務完成 只是通知被依賴的任務要完成什麼工作 依賴的任務也立即執行 ,只要自己完成了整個任務就算完成了 至於被依賴的任務是否真正完成 依賴它的任務無法確定 所以它是不可靠的任務序列.

3 .阻塞和非阻塞

與程式(執行緒)等待訊息通知時的狀態有關 即是由程式(執行緒)等待訊息通知時的狀態角度來說的

4 .同步/非同步 與阻塞/非阻塞

1 .同步阻塞

2 .非同步阻塞

3 .同步非阻塞

4 .非同步非阻塞

七 multiprocess 模組

仔細說來 multiprocess 不是乙個模組而是python中的乙個包 ,管理程序的包. 

1 .process 模組介紹  該模組是乙個建立程序的模組 借助它可以完成程序的建立

posted @

2018-10-22 17:52

你沒有想象的那麼重要 閱讀(

...)

編輯收藏

程序 併發 執行緒 032

一 計算機操作原理簡介 硬碟 永久儲存資料的 記憶體 暫存資料 cpu 運算 三者之間關係如下圖 二 併發 提高程式的工作效率 偽並行 遇到io就進行切換 1程序切換 2儲存現場 儲存程式執行的資訊 並行 3個cpu同時執行 3個程式 三 程序的建立 開啟裝置上安裝的程式使其進入執行狀態即建立了乙個...

併發,執行緒,程序

乙個是實力的體現,乙個是商用的必須需求。以往 windows creatthread beginthred beginthredexe linux pthread create 建立執行緒 臨界區,互斥量。以往多執行緒 不能跨平台。從c 11開始,c 語言本身增加可移植性。整個程序是否執行完畢的標誌...

執行緒,程序和併發

程序是什麼?程序是正在執行的程式 程序是正在計算機上執行的程式例項 程序是能分配給處理器並由處理器執行的實體。程序一般會包括指令集和系統資源集,這裡的指令集是指程式 這裡的系統資源集是指i o cpu 記憶體等。綜合起來,我們也可以理解程序是具有一定獨立功能的程式在關於某個資料集合上的一次執行活動,...