程序與執行緒(一)

2022-08-31 06:57:15 字數 2054 閱讀 2364

作業系統:

程序

假如有兩個程式a和b,程式a在執行到一半的過程中,需要讀取大量的資料輸入(i/o操作),

而此時cpu只能靜靜地等待任務a讀取完資料才能繼續執行,這樣就白白浪費了cpu資源。

是不是在程式a讀取資料的過程中,讓程式b去執行,當程式a讀取完資料之後,讓

程式b暫停,然後讓程式a繼續執行?

既然是切換,那麼這就涉及到了狀態的儲存,狀態的恢復,加上程式a與程式b所需要的系統資

源(記憶體,硬碟,鍵盤等等)是不一樣的。自然而然的就需要有乙個東西去記錄程式a和程式b

分別需要什麼資源,怎樣去識別程式a和程式b等等,所以就有了乙個叫程序的抽象

程序定義:

程序就是乙個程式在乙個資料集上的一次動態執行過程。

程序一般由程式、資料集、程序控制塊三部分組成。

我們編寫的程式用來描述程序要完成哪些功能以及如何完成;

資料集則是程式在執行過程中所需要使用的資源;

程序控制塊用來記錄程序的外部特徵,描述程序的執行變化過程,系統可以利用它來控制和管理程序,它是系

統感知程序存在的唯一標誌。

舉一例說明程序:

想象一位有一手好廚藝的計算機科學家正在為他的女兒烘製生日蛋糕。他有做生日蛋糕的食譜,廚房裡有所需

的原料:麵粉、雞蛋、糖、香草汁等。在這個比喻中,做蛋糕的食譜就是程式(即用適當形式描述的演算法)計算機科學家就是處理器(cpu),

而做蛋糕的各種原料就是輸入資料。程序就是廚師閱讀食譜、取來各種原料以及烘製蛋糕等一系列動作的總和。

現在假設計算機科學家的兒子哭著跑了進來,說他的頭被乙隻蜜蜂蟄了。計算機科學家就記錄下他

照著食譜做到哪兒了(儲存程序的當前狀態),然後拿出一本急救手冊,按照其中的指示處理蟄傷。這

裡,我們看到處理機從乙個程序(做蛋糕)切換到另乙個高優先順序的程序(實施醫療救治),每個程序

擁有各自的程式(食譜和急救手冊)。當蜜蜂蟄傷處理完之後,這位計算機科學家又回來做蛋糕,從他

離開時的那一步繼續做下去。

執行緒

執行緒的出現是為了降低上下文切換的消耗,提高系統的併發性,並突破乙個程序只能幹一樣事的缺陷,

使到程序內併發成為可能。

假設,乙個文字程式,需要接受鍵盤輸入,將內容顯示在螢幕上,還需要儲存資訊到硬碟中。若只有

乙個程序,勢必造成同一時間只能幹一樣事的尷尬(當儲存時,就不能通過鍵盤輸入內容)。若有多

個程序,每個程序負責乙個任務,程序a負責接收鍵盤輸入的任務,程序b負責將內容顯示在螢幕上的

任務,程序c負責儲存內容到硬碟中的任務。這裡程序a,b,c間的協作涉及到了程序通訊問題,而且

有共同都需要擁有的東西-------文字內容,不停的切換造成效能上的損失。若有一種機制,可以使

任務a,b,c共享資源,這樣上下文切換所需要儲存和恢復的內容就少了,同時又可以減少通訊所帶

來的效能損耗,那就好了。是的,這種機制就是執行緒。

執行緒也叫輕量級程序,它是乙個基本的cpu執行單元,也是程式執行過程中的最小單元,由執行緒id、程式

計數器、暫存器集合和堆疊共同組成。執行緒的引入減小了程式併發執行時的開銷,提高了作業系統的併發

效能。執行緒沒有自己的系統資源。

程序與執行緒區別

乙個程式至少有乙個程序,乙個程序至少有乙個執行緒.(程序可以理解成執行緒的容器)

程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。

執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有乙個程式執行的入口、順序執行序列和

程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。

程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和調

度的乙個獨立單位.

執行緒是程序的乙個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒

自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧)但是

它可與同屬乙個程序的其他的執行緒共享程序所擁有的全部資源.

乙個執行緒可以建立和撤銷另乙個執行緒;同乙個程序中的多個執行緒之間可以併發執行.

程序與執行緒 一

一 建立程序 在linux系統中,只有fork 系統呼叫能夠建立程序。呼叫fork 函式之後,父程序將暫存器和堆疊內的內容全部賦值給子程序的暫存器和堆疊。fork test.c version 1 created on 2015 5 18 author wangth include include ...

程序與執行緒

程序 process 管理單元,管理分配應用程式的資料,的記憶體空間.執行緒 thread 執行單元,執行緒負責執行乙個預先編排好的 段,執行 棧是基於執行緒的.乙個應用程式啟動的時候,程序自動建立,並且會預設建立主線程,主線程負責執行main 方法.thread t new thread new ...

程序與執行緒

程序 是擁有資源的實體,包括 1。乙個程序有乙個虛擬位址空間,不同程序位於不同的 虛擬位址空間中。程序之間若要通訊,必須通過作業系統 的功能呼叫 ipc 2。程序擁有其他資源,例如開啟的檔案和i o裝置。程序結束時,作業系統會自動釋放該程序擁有的所有資源。例如,如果 open乙個檔案而不close它...