您好,登錄后才能下訂單哦!
如何解析INFORMIX-ONLINE動態服務器多線索結構,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1.什么是線索?
一個線索可以被認為是程序中正在執行的一組指令的序列。當線索在同一實體中運行時則稱為多線索。
2.單線索和多線索
一個通常沒有實現線索的UNIX進程可被認為是一個單線索進程。在這樣的進程中,只有一處指令序列執行,操作系統的責任是調度并執行該進程。
多線索是一種方法,使用這種方法,可以為不同的用戶執行同一進程而不必在操作系統級形成多個進程。
多線索是一個系統級別的概念,在這里,程序實際執行機器指令操縱進程,使該進程可以為許多用戶而不僅僅是單用戶執行,程序完全在用戶級別上這些指令,而不是在Unix核心級別。就Unix而言,這個多線索進程就像其他進程一樣,是一單個進程。
3.虛處理器
組成數據庫服務器的進程稱之為虛擬處理器(virtual processor),每個虛擬處理器(VP)都屬于一個虛擬處理器(VP類)。一個VP類是一組以線索形式完成指定工作的進程的集合,諸如寫磁盤邏輯日志,或從磁盤讀數據。這意味著屬于某一特定的VP只能運行同類的線索。每個虛擬處理器(VP)類可以包含一個或多個VP,在大多數情況下,其個數可由online管理員配置。所有VP執行程序均為oninit。
4.運行一個線索
一個線索要么在一個指定的處理器上運行,要么在一系列中的某一隊列中。就緒隊列中保存了準備運行線索的上下文。
同類的虛擬處理器共享就緒隊列,由此,一個線索在其生命期內可由不同的虛擬處理器調度運行。這種機制能平衡各處理器之間的負載,并能保證只要有可用處理器,就能運行線索。
5.online多線索結構的優點
做同樣的工作只需少量的數據庫服務進程。
多個數據庫服務進程可為同一用戶服務。
在數據庫服務進程內部進行線索的上下文切換要比操作系統執行的快。
數據庫服務器可以進行自行的線索調度策略。
很容易利用硬件廠商提供的某些調度特點。
6.虛處理器類
CPU 所有用戶線索和一些系統線索可運行在這一類上,這些線索中不能有阻塞的系統調用。
PIO 運行寫物理日志的內部線索。
LIO 運行寫邏輯日志的內部線索。
AIO 運行除寫日志外的所有磁盤I/O操作的內部線索。
ADT 運行安全審計線索。
6.客戶/服務器連接
客戶應用與數據庫服務的連接可通過共享內存、sockets或ITL運行。
探詢線索(poll)負責偵聽客戶應用新的連接請求。
偵聽線索為用戶設置一個稱之為 會話數據塊的數據結構。
一旦會話控制設置完成,sqlexec線索負責將online處理結果返回給應用程序,poll線索負責接受來自應用的消息。
7.VPs如何處理操作?
以一條select語句由數據庫服務進程處理的過程為例
CPU類的虛擬處理器中的sqlexec線索(客戶的主線索)將分析并優化select語句,它將讀取緩沖區中符合條件的頁。
如果sqlexec線索在緩沖區中找不到合適的頁,它將把從磁盤讀頁的請求放進AIO vp隊列。然后,sqlexec線索將控制轉到就緒隊列中的另一個線索,并將自己放到睡眠隊列,,等待IO虛擬處理器磁盤請求。
AIO虛擬處理器從磁盤讀數據也并放進緩沖區,當操作完成后,它喚醒sqlexec線索并使之重新回到就緒隊列,由此可以繼續select語句的執行。
online系統的每個chunk都有一個AIO請求隊列。
看完上述內容,你們掌握如何解析INFORMIX-ONLINE動態服務器多線索結構的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。