併發程式設計基礎知識

2022-08-27 03:18:10 字數 1606 閱讀 7956

一、程序的定義

狹義定義

程序是正在執行的程式的例項(an instance of a computer program that is being executed)。

廣義定義

程序是乙個具有一定獨立功能的程式關於某個資料集合的一次執行活動。它是作業系統動態執行的基本單元。在傳統的作業系統中,程序即是基本的分配單元,也是基本的執行單元。

二、程序的概念

程序是乙個實體。每乙個程序都有他自己的位址空間,一般情況下,包括文字區域(text region)、資料區域(data region)和堆疊(stack region)。文字區域儲存處理器執行的**;資料區域儲存變數和程序執行期間使用的動態分配的記憶體;堆疊區域儲存活動過程呼叫的指令和本地變數。

程序是乙個『執行中的程式』。程式是乙個沒有生命的實體,只有處理器賦予程式生命時,它才能成為乙個活動的實體,也就是程序。

三、程序的特徵

四、程序的排程

先來先服務排程演算法

適合於cpu繁忙性程序,而不利於i/o繁忙型程序。

短作業優先排程演算法

不利於長程序,不能保證緊迫性程序被及時處理,程序的長短是估算出來的。

時間片輪轉法

將cpu的處理時間分成固定大小的時間片,如果乙個程序在被排程選中之後用完了系統規定的時間片,但又未完成要求的任務,則它自行釋放自己所占有的cpu而排到就緒佇列的末尾,等待下一次排程。同時,程序排程程式又去排程當前就緒佇列中的第乙個程序。

多級反饋佇列

五、程序的並行和併發

並行兩者同時執行,要求多個處理器

併發資源有限的情況下,兩者交替輪流使用資源。

六、程序的三狀態

就緒狀態

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

執行狀態

當程序已獲得處理機,其程式正在處理機上執行,此時的程序狀態稱為執行狀態

阻塞狀態

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

七、同步和非同步

同步乙個任務的完成需要依賴另外乙個任務時,只有等待被依賴的任務完成後,依賴的任務才能算完成。這是一種可靠地任務序列,要麼都成功或者要麼都失敗,兩個任務狀態保持一致。

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

八、程序的建立和結束

程序的建立

新程序的建立都是由乙個已經存在的程序執行了乙個用於建立程序的系統呼叫而建立的

四種建立新程序的形式

windows建立程序

系統呼叫createprocess,createprocess既處理程序的建立,也負責把正確的程式裝入新的程序。

程序的結束

正常退出

使用者點選叉號,程式執行完畢讓系統呼叫正常退出,在windows中用exitprocess

出錯退出

嚴重錯誤

執行非法指令,引用不存在的記憶體等,可以捕獲異常

被其他程序殺死

task kill

java併發程式設計實戰 基礎知識總結

第一部分小結 1,可變狀態至關重要。所有的併發問題都可以歸結為如何協調對併發狀態的訪問,可變狀態越少就越容易確保執行緒安全性。無狀態物件永遠是執行緒安全的。2,盡量將域申明為final型別,除非需要他們是可變的。3,不可變物件一定是執行緒安全的。不可變物件能極大地降低併發程式設計的複雜性,他們更為簡...

程式設計基礎知識

這幾天比較忙,學習比較緊張,發帖耽誤了。這次來寫一下程式設計基礎知識 首先什麼是程式?程式是為了實現乙個特定的目標而預先設計的一組可操作的工作步驟。程式就是系統可以識別的一組有序的指令。那程式有什麼用呢?指揮計算機執行我們想要它完成的動作。程式儲存在 儲存器 處理器 cpu 處理器 cpu,cent...

程式設計基礎知識

基本字元 基本詞彙 英文本母,區分大小寫,共52個。阿拉伯數字0 9,共10個。空格 製表符 tab鍵 換行鍵 enter鍵 統稱為空白符。例語句的結束標誌 逗號表示式中的 以及下劃線 其包括識別符號 關鍵字 分隔符 注釋符 常量和運算子。在這裡常量和運算子不做介紹。命名規則 只能由數字 字母 下劃...