亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2312 | 回復(fù): 0
打印 上一主題 下一主題

NetBSD系列介紹--調(diào)度器 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-08-20 00:33 |只看該作者 |倒序瀏覽

                NetBSD系列介紹--調(diào)度器
    調(diào)度器的介紹不是很好寫,如果簡單介紹,那就只有兩個文件:src/sys/kern/sched_4bsd.c 和 src/sys/kern/sched_m2.c,默認調(diào)度算法還是從4.4BSD就一直沿用的調(diào)度算法,即前一個文件中實現(xiàn)的,代碼中有關(guān)于調(diào)度算法的詳細注釋,直接看代碼就可以了。你實現(xiàn)了這兩個文件中共有的函數(shù),就算實現(xiàn)了一個調(diào)度器了,內(nèi)核的其他部分會在適當(dāng)?shù)奈恢谜{(diào)用這些函數(shù)。問題是NetBSD 5.0 對調(diào)度器的接口進行了重新設(shè)計,現(xiàn)在有了實時調(diào)度擴展,并且線程是可搶占的了,i386和amd64平臺已經(jīng)支持搶占。要把這些說清楚就有點麻煩了,因為我自己也還沒整明白,呵呵。
    先說個大概吧。
    關(guān)于調(diào)度器的接口,可以看src/sys/sys/sched.h中聲明的函數(shù),這些函數(shù)中有幾個是src/sys/kern/kern_synch.c和src/sys/kern/sys_sched.c中實現(xiàn)的,這幾個函數(shù)不是調(diào)度器接口,調(diào)度器接口是在前面這個頭文件中聲明,并在sched_4bsd.c和sched_m2.c中實現(xiàn)了的函數(shù)。調(diào)度器的主要任務(wù)是計算出下一個希望運行的是哪個線程,并告訴系統(tǒng)需不需要進行線程切換,如果需要,下一個是哪一個。調(diào)度器的功能還是很簡單的,關(guān)鍵是調(diào)度的過程很復(fù)雜,我沒怎么弄明白,主要是對x86的smp的工作原理不是很熟悉。
    我的理解是這樣,時鐘中斷進來,調(diào)用hardclock(),在hardclock()中有兩個變量我還沒弄明白是干什么的,分別是stathz和schedhz。這是hardclock()中相關(guān)的代碼:
        /*
         * If no separate statistics clock is available, run it from here.
         */
        if (stathz == 0)
                statclock(frame);
        /*
         * If no separate schedclock is provided, call it here
         * at about 16 Hz.
         */
        if (schedhz == 0) {
                if ((int)(--ci->ci_schedstate.spc_schedticks) ci_schedstate.spc_schedticks = hardscheddiv;
                }
        }
        if ((--ci->ci_schedstate.spc_ticks) <= 0)
                sched_tick(ci);
schedclock()和sched_tick()最終會走到調(diào)度器中去,然后計算下一個線程是誰,如果是同一cpu,則觸發(fā)一個軟中斷,如果不是,就觸發(fā)一個cpu間中斷,在處理這個中斷的時候切換線程上下文,中斷返回的時候判斷是否要切換進程上下文。
    to be continued
               
               
               
               
               

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/16553/showart_2032328.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP