新聞中心
linux 操作系統(tǒng)中的運行時中斷是一種異步的執(zhí)行狀態(tài),它用于處理系統(tǒng)中的異步事件,如時鐘中斷和 I/O中斷等。CPU 會立即停止當前的處理,并將控制權(quán)轉(zhuǎn)移到內(nèi)核或硬件,以便處理來自設備的中斷。本文將討論Linux下運行時中斷的概念,原理及其實現(xiàn)方式。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、連江網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、html5、商城網(wǎng)站建設、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站建設公司、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為連江等各大城市提供網(wǎng)站開發(fā)制作服務。
由于 Linux 操作系統(tǒng)是面向用戶的多任務操作系統(tǒng),因此它必須能夠同時處理來自硬件設備和用戶程序的中斷。每個中斷都有一個中斷號,內(nèi)核搜索中斷處理程序來處理它。中斷處理程序只有一個少量的代碼,它以中斷號來驅(qū)動的。
Linux 運行時中斷和其他硬件中斷最大的不同之處在于,它們由軟件來調(diào)用并處理,而不像硬件中斷一樣由硬件調(diào)用處理。因此,內(nèi)核中的每個運行時中斷都有一個具體的中斷處理函數(shù)(handler routine)。當內(nèi)核需要調(diào)用此類中斷時,它會調(diào)用其中斷處理程序,而不是外部中斷程序。
Linux 中斷處理程序函數(shù)也稱為“中斷函數(shù)”(interrupt service routines,ISRs),它們能夠接收特定硬件中斷,并且能夠接受 CPU 上的非搶占式處理。從 Linux 2.6 內(nèi)核開始,Linux 系統(tǒng)中的 ISR 函數(shù)被稱為“tasklets”,是一種新的低開銷的運行時中斷,可以被添加或移除,它們可以被用于輕量級的中斷處理,而不立即調(diào)用 ISR,而是在控制流程回到進程上下文時被處理。
使用`tasklet_init()、tasklet_schedule()`等函數(shù)即可對特定的運行時中斷進行不同程度的初始化、調(diào)度、暫停和恢復。`tasklets`是一種內(nèi)核代碼,具體實現(xiàn)如下:
struct tasklet_struct {
struct tasklet_struct *next;
unsigned long state;
atomic_t count; //引用計數(shù)
void (*func)(unsigned long); //回調(diào)函數(shù)
unsigned long data; //參數(shù)
};
static void tasklet_action(struct softirq_action* a)
{
struct tasklet *list;
unsigned long flags;
local_irq_save(flags);
list = __get_cpu_var(tasklet_vec).head;
__get_cpu_var(tasklet_vec).head = NULL;
__get_cpu_var(tasklet_vec).tail = &__get_cpu_var(tasklet_vec).head;
local_irq_restore(flags);
while (list) {
struct tasklet *t = list;
list = list->next;
if (tasklet_trylock(t)) {
if (!atomic_read(&t->count)) {
if (!test_and_clear_bit(TASKLET_STATE_SCHED, &t->state))
BUG();
t->func(t->data);
tasklet_unlock(t);
continue;
}
tasklet_unlock(t);
}
local_irq_save(flags);
t->next = NULL;
*__get_cpu_var(tasklet_vec).tail = t;
__get_cpu_var(tasklet_vec).tail = &(t->next);
__raise_softirq_irqoff(TASKLET_SOFTIRQ);
local_irq_restore(flags);
}
}
總之,Linux 運行時中斷是 Linux 操作系統(tǒng)中重要的一部分,它提供了一種方法來解決硬件設備的中斷,并幫助提高系統(tǒng)性能。它可以實現(xiàn)低開銷的中斷處理,并能靈活高效地處理由硬件和用戶應用程序引發(fā)的多種中斷。
成都服務器托管選創(chuàng)新互聯(lián),先上架開通再付費。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設,軟件開發(fā)老牌服務商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營銷推廣服務眾多企業(yè)。電話:028-86922220
當前標題:Linux 運行時中斷:概念與實現(xiàn)(linux中斷是什么)
當前鏈接:http://fisionsoft.com.cn/article/cceijoc.html


咨詢
建站咨詢
