• 沒有找到結果。

首先,將監測的程式與使用者的程式碼作有效的區隔是一個重要的 議題

N/A
N/A
Protected

Academic year: 2021

Share "首先,將監測的程式與使用者的程式碼作有效的區隔是一個重要的 議題"

Copied!
4
0
0

加載中.... (立即查看全文)

全文

(1)

9

第三章 SoftMon 的概念與實作

如何使用多核心來監測程式?本研究一開始的想法是:如果使用者的程式運

作在某一群 CPU 上,然後我們利用使用者所閒置不用的 CPU 來幫我們進行監測

的動作,對使用者的程式進行監測,從概念上來看,使用閒置的 CPU 進行監測可

以將使用者程式置於獨立的環境中,與監測的 CPU 分離,這樣一來不就意味著,

監測的行為所使用的 CPU 時間與使用者程式所使用的 CPU 時間是無關的,換言

之,使用者的程式將不會因為監測的程式碼而損失掉任何的 CPU 資源,也因此,

可以得到一個如同沒有監測程式存在的執行環境。

第一節 硬體環境設定

為了以現有的程式語言和硬體架構來達到上述的目標,我們建立了以下的實

驗環境,首先我們需要一個多核心的執行平台,本研究所使用的機器為 Intel Duo

Core 3.4G 雙核心處理器,以及 Linux Fedora 5 作業系統(SMP 支援)。接下來是控

制執行緒所運行的 CPU,這一點可以透過 Linux 的系統呼叫來達到,最後預設使

用 C 語言,利用 GNU C 函式庫中的 pthread 來建立多執行緒程式。

第二節 初步設計與實驗

在初步的實驗裡,我們一開始先建立一個多執行緒的程式,其中包含了一個

具監測程式碼的執行緒以及多個假想的使用者執行緒,並且在每一個執行緒的前

(2)

10

端置入 CPU 指派的系統呼叫,以確保所有的使用者執行緒會在第一個核心運作,

而具監測程式碼的執行緒則獨立使用第二個核心,並假設不考慮其它系統中的程

序,在這樣的狀況下,所有的使用者執行緒共同使用第一個核心進行運算,這種

情況就如同將該程式放在一個單核心的 CPU 上運行一樣,而具監測程式碼的執行

緒在第二個核心上運行。這個以 Helper Thread 的概念來設計的執行緒,我們將之

稱為監控執行緒 ( Monitor thread )。對於使用者的程式而言,監控執行緒是透明

的,它不會干擾到原本的程式運行,也不會搶佔使用者程式所需的資源。根據這

個構想可以得到一個推論,如果使用者的程式原本的執行環境具有 N 個 CPU,則

使用這個方法,我們可以利用 N+1 個 CPU,來建立出原本的執行環境,在不干

擾使用者程式執行的情況下,利用監控執行緒來進行監測的動作。這樣的監測概

念,我們使用(圖一)來表達。

圖 1 監控概念圖

CPU 2 CPU 1

User Program Helper Thread

(3)

11

第三節 SoftMon 的基本架構

有了上述的想法,我們進行了進一步的實作,將這些概念實体化,變成可以

使用的工具。首先,將監測的程式與使用者的程式碼作有效的區隔是一個重要的

議題。如果沒有區隔,則當程式碼進行修改時,監控的程式可能會連帶的要進行

變動。這種結果會帶來使用上的風險與困擾。

解決這個問題的一個方法就是監測用的程式碼預設與程式本身是分開來

的 。 因 此 本 研 究 設 計 了 一 個 簡 單 的 語 言 MCML ( Multi-core Monitoring

Language ),用來讓工具的使用者定義想要監測的行為,接下來我們的工具再分

析該語言,將使用者定義的監測行為轉換為程式碼,對使用者的程式碼進行修改

增加一條監測程式的 helper thread 於主程式中,使其具有監測特定條件的能力,

最後再將修改過的程式碼重新編譯執行即可。這個修改是透明的,也就是說,使

用者並沒有感覺到他的程式有任何的變動。使用者只覺得主程式經過工具的分析

與處理之後,直接變成一個執行檔。在後續的程式維護中,使用者還是永遠專注

於原本乾淨的主程式。

(4)

12

整個 SoftMon 專案實體化的概念圖如(圖二)。

圖 2 SoftMon 執行架構圖

數據

圖 2 SoftMon 執行架構圖

參考文獻

相關文件

數位計算機可用作回授控制系統中的補償器或控制

使用 MapleTA 做作業,是本課程的主要學習活動之一。今年 4—6 月課程進 行期間,NCUx 學習平臺可以和 Windows 伺服機上面的 MapleTA,以 LTI 介面 進行串接。可是,我們在 9

命令解釋程式 作業系統 (MS-DOS,UNIX, WINDOWS 98/NT, 2000, XP, LINUX).

也就是設定好間隔時間(time slice)。所有的 程序放在新進先出的佇列裡面,首先CPU

Windows/ Linux/ Mac 各種平台的開發套件,使我們能夠透過各種平台來開發 Android 軟體,所有的 Android 應用程式都是使用 Java

智慧型手機是一種運算能力及功能比傳統手機更強的手機。 通常使用的作 業系統有: Symbian 、 Windows Mobile 、 iOS 、 Linux (含 Android 、 Maemo 和 WebOS) 、.. Palm

接下來的 FDTD 疊代運算將是整個計算的核心,也是運算量最大 的部分,在這中間,如何利用光波導的性質以及傳播常數等特徵參量

在軟體的使用方面,使用 Simulink 來進行。Simulink 是一種分析與模擬動態