程序與執行緒概念剖析

2022-07-01 02:48:08 字數 1895 閱讀 2973

多道程式設計:是一種讓處理器在多個任務間來回切換執行的方法,這樣給了使用者一種所有任務並行執行的錯覺,這稱為「偽並行」。任務輪轉工作是由任務排程器來執行的。

任務排程器是os的乙個模組,它根據一套演算法來決定從執行緒表中排程執行緒的順序和時間。

執行緒是一套機制,此機制可以為一般的**塊創造它所依賴的上下文環境(自己的棧,一套自己的暫存器映像和記憶體資源)。從而讓**塊具有獨立性,因此在原理上線程能使一段函式成為呼叫單元(或稱為執行流),使函式能夠被排程器認可,從而能夠被專門排程到處理器上執行。這樣,函式就可以被加入到執行緒表中作為排程器的排程單元,從而有機會單獨獲得處理器資源。也就是說,處理器不是把執行緒中呼叫的函式和其他指令混在一起執行的,或者說不是在執行整個程序時順便執行了該函式,而是單獨,專門執行了此函式。

任何**塊(就是函式),只要給它加上上下文環境,就具備獨立性,可以成為執行流,單獨被排程器排程。

簡單的來說,執行緒就是一段具有獨立性的**塊,可以被單獨排程上處理器執行。這樣的**塊稱為執行流。

使用執行緒的目的主要是讓程式中的多個函式以並行的方式執行(單核就是偽並行),從而為程式提速。當然執行緒它沒有自己獨立的位址空間,必須依賴於程序的資源,所以使用執行緒的目的也可以說是為了程序提速。

為程序提速的原理有2個,一是讓自己的程序擁有多個執行流,在任務排程器的執行緒表中多擁有幾個排程單元,增加自己程序中指令被排程上cpu執行的可能性,相當於去搶其他程序的執行時間。

二是防止因為一些區域性原因而阻塞了整個程序。

程序就可以看作是執行緒加資源。因為程序如果不顯示的建立執行緒,就是單執行緒程序,它裡面也至少有乙個執行流。資源呢就是程序有自己獨立的頁表,執行緒沒有。

狀態是用來描述執行流的,是用來描述執行緒的。排程器的排程單位是執行流,狀態可以理解為排程器排程的依據。一些執行緒因為等待外界條件而無法繼續執行,排程器就把它換下去,這稱為阻塞態。把外界條件成立,隨時可以被排程器排程上處理器執行的執行緒狀態稱為就緒態,把已經被排程器排程,正在處理器上執行的執行緒狀態稱為就緒態。程序同理,因為程序可以看作執行緒加資源,狀態是用來描述程序中有關動作的執行流部分,不包括靜態的資源部分。

可以看成程序的身份證,是os用來管理程序用的。os為每乙個程序都提乙個pcb,用來記錄與程序相關的資訊,比如程序狀態,程序id(pid),優先順序等。os把所有pcb放到乙個**中來維護,就是程序表,通過這個表。排程器就可以來選擇在處理器上執行的程序了。

pcb一般都很大,以頁(4kb)為單位,我的玩具os比較簡單,pcb只佔一頁。

pcb格式:pcb格式不固定,取決於os的複雜程度,一些基本的內容有:暫存器映像(用了儲存程序被排程下處理器的時候的狀態的,下次被排程的時候用來恢復現場),棧(程序所使用的0特權級別下的核心棧),棧指標(記錄0級棧棧頂的位置),程序id(pid),程序狀態,優先順序,時間片,頁表,開啟的檔案描述符,父程序。

主要是看執行緒機制在**實行的,就是看執行緒表在**,由使用者**,還是核心**來呼叫執行緒上cpu。在0特權級**實現的就是核心級執行緒,在3特權級使用者級**實現的就是使用者執行緒。

在使用者空間實現執行緒

優勢:缺點:

優勢:缺點:

分為兩部分:1儲存任務進入中斷前的全部暫存器,目的是能夠讓任務恢復到中斷前。

2 儲存esi,edi,ebx,ebp這4個暫存器,讓任務執行在任務切換發生時剩下未執行的核心**。保證順利走到退出中斷的出口,利用第一部分保護的暫存器環境徹底恢復任務。

x86暫存器(32位)分類:

8個通用暫存器:eax、ebx、ecx、edx、esi、edi、esp、ebp

1個標誌暫存器:eflags(第9位if位,sti指令開中斷,置1,cli關中斷,置0)

6個段暫存器:cs、ds、es、fs、gs、ss

5個控制暫存器:cr0(第31位pg位)、cr1、cr2、cr3(頁表暫存器)、cr4

8個除錯暫存器:dr0、dr1、dr2、dr3、dr4、dr5、dr6、dr7

其他暫存器:eip、tsc等。

概念題 程序與執行緒

程序與執行緒區別與聯絡 1 劃分尺度 執行緒更小,所以多執行緒程式併發性更高 2 資源分配 程序是資源分配的基本單位,同一程序內多個執行緒共享其資源 4 處理器排程 執行緒是處理器排程的基本單位 5 執行 每個執行緒都有乙個程式執行的入口,順序執行序列和程式的出口,但執行緒不能單獨執行,必須組成程序...

程序與執行緒的概念

程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就...

程序與執行緒的概念與通訊方式

文章目錄 三 執行緒的定義 四 執行緒的通訊方式 總結 示例 pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。如下 示例 import numpy as np import pandas as pd import matplotlib.pyplot as plt i...