国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

論述不同的搶占模型如何影響用戶和系統(tǒng)的行為

Linux閱碼場 ? 來源:Linuxer ? 2020-06-03 16:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

當(dāng)配置Linux內(nèi)核的時候,我們可以選擇一些參數(shù),這些參數(shù)能影響系統(tǒng)的行為。你可以用不同的優(yōu)先級、調(diào)度類和搶占模型來工作。正確地選擇這些參數(shù)是非常重要的。

本文將論述不同的搶占模型如何影響用戶和系統(tǒng)的行為。

當(dāng)你使用 make menuconfig配置內(nèi)核的時候,你能看到這樣的菜單:

為了深入理解這三個搶占模型的區(qū)別,我們將寫一個案例:

2個線程,一個高優(yōu)先級RT(50),一個低優(yōu)先級RT(30)

高優(yōu)先級的線程要睡眠3秒

低優(yōu)先級的線程用CPU來做計算

3秒后高優(yōu)先級線程喚醒。

如果低優(yōu)先級的線程陷入系統(tǒng)調(diào)用,高優(yōu)先級的線程睡眠到期,究竟會發(fā)生什么?下面我們來一種模型一種模型地看。

No Forced Preemption

這種情況下,上下文切換發(fā)生在系統(tǒng)調(diào)用返回用戶空間的點。案例如下:

2個線程,一個高優(yōu)先級RT(50),一個低優(yōu)先級RT(30)

高優(yōu)先級的線程要睡眠3秒

低優(yōu)先級的線程進(jìn)入系統(tǒng)調(diào)用計算5秒

5秒后低優(yōu)先級線程從內(nèi)核系統(tǒng)調(diào)用返回

高優(yōu)先級線程將醒來(但是比預(yù)期遲了2秒)。

內(nèi)核代碼,簡單的字符設(shè)備:

#include #include #include #include #include #include #include #include #include #include #include #include static dev_t my_dev;static struct cdev *my_cdev; // callback for read system call on the devicestatic ssize_t my_read(struct file *file, char __user *buf,size_t count,loff_t *ppos){ int len=5; if(*ppos > 0) { return 0; } mdelay(5000); // busy-wait for 5 seconds if (copy_to_user(buf , "hello" , len)) { return -EFAULT; } else { *ppos +=len; return len; }} static struct file_operations my_fops ={ .owner = THIS_MODULE, .read = my_read,}; static int hello_init (void){ my_dev = MKDEV(400,0); register_chrdev_region(my_dev,1,"demo"); my_cdev=cdev_alloc(); if(!my_cdev) { printk (KERN_INFO "cdev alloc error. "); return -1; } my_cdev->ops = &my_fops; my_cdev->owner = THIS_MODULE; if(cdev_add(my_cdev,my_dev,1)) { printk (KERN_INFO "cdev add error. "); return -1; } return 0; } static voidhello_cleanup (void){ cdev_del(my_cdev); unregister_chrdev_region(my_dev, 1);} module_init (hello_init);module_exit (hello_cleanup);MODULE_LICENSE("GPL");

讀里面delay了5秒, 注意mdelay是一個計算型的busy-loop。

用戶空間代碼如下:

#include#include#include#include #include #include void *hi_prio(void *p){ printf("thread1 start time=%ld ",time(NULL)); sleep(3); printf("thread1 stop time=%ld ",time(NULL)); return NULL;} void *low_prio(void *p){ char buf[20]; sleep(1); int fd=open("/dev/demo",O_RDWR); // #mknod /dev/demo c 400 0 puts("thread2 start"); read(fd,buf,20); puts("thread2 stop"); return NULL;} int main(){ pthread_t t1,t2,t3; pthread_attr_t attr; struct sched_param param; pthread_attr_init(&attr); pthread_attr_setschedpolicy(&attr, SCHED_RR); param.sched_priority = 50; pthread_attr_setschedparam(&attr, ¶m); pthread_create(&t1,&attr,hi_prio,NULL); param.sched_priority = 30; pthread_attr_setschedparam(&attr, ¶m); pthread_create(&t2,&attr,low_prio,NULL); sleep(10); puts("end test"); return 0;}

實驗步驟:

高優(yōu)先級線程開始睡眠3秒

低優(yōu)先級線程睡眠1秒然后做系統(tǒng)調(diào)用

高優(yōu)先級線程6秒后醒來(stop和start的時間差)

# insmod demo.ko # ./appthread1 start time=182thread2 startthread1 stop time=188thread2 stopend test

Preemptible Kernel

這種情況內(nèi)核里面也可以搶占,意味著上述程序里面的高優(yōu)先級線程3秒后可醒來。

這種情況下,系統(tǒng)會有更多的上下文切換,但是實時性更加好。對于要求軟實時的嵌入式系統(tǒng)而言,這個選項是最佳的。但是對于服務(wù)器而言,通常第一個選項更好——更少的上下文切換,更多的CPU時間用作有用功。

運行結(jié)果(stop、start時間差3秒):

# insmod ./demo.ko#./appthread1 start time=234thread2 startthread1 stop time=237thread2 stopend test

Voluntary Kernel Preemption

這種情況和第一種情況"no forced preemption"類似,但是內(nèi)核開發(fā)者可以在進(jìn)行復(fù)雜操作的時候,時不時檢查一下是否可以reschedule。他們可以調(diào)用might_resched()函數(shù)。

在下面的代碼中,我們添加了一些檢查點(check point)

// callback for read system call on the devicestatic ssize_t my_read(struct file *file, char __user *buf,size_t count,loff_t *ppos){ int len=5; if(*ppos > 0) { return 0; } mdelay(4000); // busy-wait for 4 seconds might_resched(); delay(3000); // busy wait for 3 seconds if (copy_to_user(buf , "hello" , len)) { return -EFAULT; } else { *ppos +=len; return len; }}

如果我們把might_resched()注釋掉,它會delay 7秒。

添加cond_resched()調(diào)用將導(dǎo)致系統(tǒng)檢查是否有高優(yōu)先級的任務(wù)被喚醒,這樣高優(yōu)先級任務(wù)5秒可以醒來(其中1秒在systemcall之前,另外4秒在kernel)。

運行結(jié)果:

#insmod./demo.ko#./appthread1 start time=320thread2 startthread1 stop time=325thread2 stopend test

Full Real Time Preemption

如果我們使能RT補(bǔ)丁,我們會得到一個硬實時的kernel。這意味著任何代碼可以搶占任何人。比如一個更加緊急的任務(wù)可以搶占中斷服務(wù)程序ISR。這個patch進(jìn)行了如下改動:

把中斷服務(wù)程序轉(zhuǎn)化為優(yōu)先級是50的RT線程

把softIRQ轉(zhuǎn)化為優(yōu)先級是49的RT線程

把所有的spinlock變成mutex

高精度定時器

其他的細(xì)小改動

打補(bǔ)丁后會看到2個新增的菜單:

其中“Preemptible Kernel (Basic RT)” 是為了調(diào)試目的的,為了全面使用RT補(bǔ)丁的功能,我們應(yīng)該選擇最后一項 – Fully Preemptible Kernel。這樣我們會有更多的上下文切換,但是可以滿足RT的實時要求。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    4

    文章

    1468

    瀏覽量

    42880
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11760

    瀏覽量

    219042

原文標(biāo)題:理解Linux內(nèi)核搶占模型(最透徹一篇)

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    RDMA設(shè)計37:RoCE v2 子系統(tǒng)模型設(shè)計

    本博文主要交流設(shè)計思路,在本博客已給出相關(guān)博文160多篇,希望對初學(xué)者有用。注意這里只是拋磚引玉,切莫認(rèn)為參考這就可以完成商用IP設(shè)計。 RoCE v2 子系統(tǒng)模型是用來模擬 RoCE v2 功能
    發(fā)表于 02-06 16:19

    淘寶數(shù)據(jù)分析API:用戶行為洞察,精準(zhǔn)營銷決策!

    ? 在競爭激烈的電商領(lǐng)域,數(shù)據(jù)已成為驅(qū)動增長的核心引擎。淘寶作為國內(nèi)領(lǐng)先的電商平臺,其開放的數(shù)據(jù)分析API為商家提供了強(qiáng)大的工具,能夠深入挖掘用戶行為,并基于這些洞察做出更精準(zhǔn)、更有效的營銷決策
    的頭像 發(fā)表于 12-25 14:12 ?271次閱讀
    淘寶數(shù)據(jù)分析API:<b class='flag-5'>用戶</b><b class='flag-5'>行為</b>洞察,精準(zhǔn)營銷決策!

    借助京東API,輕松分析用戶行為,優(yōu)化店鋪頁面布局!

    ? ?在競爭激烈的電商環(huán)境中,精準(zhǔn)把握用戶行為是提升店鋪轉(zhuǎn)化率的關(guān)鍵。京東開放平臺提供了強(qiáng)大的API接口,讓商家能夠便捷地獲取寶貴的用戶行為數(shù)據(jù)。本文將介紹如何利用這些API進(jìn)行
    的頭像 發(fā)表于 12-10 14:40 ?387次閱讀
    借助京東API,輕松分析<b class='flag-5'>用戶</b><b class='flag-5'>行為</b>,優(yōu)化店鋪頁面布局!

    搶占優(yōu)先級和子優(yōu)先級

    關(guān)于搶占優(yōu)先級和子優(yōu)先級: 1)具有高搶占式優(yōu)先級的中斷可以在具有低搶占式優(yōu)先級的中斷服務(wù)程序執(zhí)行過程中被響應(yīng),即中斷嵌套,或者說高搶占式優(yōu)先級的中斷可以
    發(fā)表于 12-03 07:11

    京東:調(diào)用用戶行為API分析購買路徑,優(yōu)化頁面跳轉(zhuǎn)邏輯

    ? ?在電商平臺的激烈競爭中, 用戶購買路徑的流暢性 直接影響轉(zhuǎn)化率。京東通過深度整合用戶行為API,構(gòu)建了完整的購買路徑分析體系,顯著優(yōu)化了頁面跳轉(zhuǎn)邏輯。以下是關(guān)鍵技術(shù)實現(xiàn)路徑: 一、用戶
    的頭像 發(fā)表于 09-18 14:38 ?665次閱讀
    京東:調(diào)用<b class='flag-5'>用戶</b><b class='flag-5'>行為</b>API分析購買路徑,優(yōu)化頁面跳轉(zhuǎn)邏輯

    天貓API智能分析用戶行為,精準(zhǔn)推薦轉(zhuǎn)化率飆升!

    ? 現(xiàn)如今競爭激烈的電商環(huán)境中,天貓作為阿里巴巴旗下的核心平臺,正通過其強(qiáng)大的API(應(yīng)用程序接口)技術(shù),革新用戶行為分析和商品推薦方式。天貓API不僅提供便捷的數(shù)據(jù)訪問通道,還融合了人工智能
    的頭像 發(fā)表于 07-29 14:40 ?668次閱讀
    天貓API智能分析<b class='flag-5'>用戶</b><b class='flag-5'>行為</b>,精準(zhǔn)推薦轉(zhuǎn)化率飆升!

    利用API提升電商用戶體驗:個性化推薦系統(tǒng)

    的推薦算法,實時為用戶提供精準(zhǔn)的購物建議。本文將逐步解析如何利用API構(gòu)建個性化推薦系統(tǒng),提升用戶體驗。 1. 個性化推薦系統(tǒng)概述 個性化推薦系統(tǒng)
    的頭像 發(fā)表于 07-14 14:45 ?593次閱讀
    利用API提升電商<b class='flag-5'>用戶</b>體驗:個性化推薦<b class='flag-5'>系統(tǒng)</b>

    無人機(jī)AI視覺行為識別系統(tǒng)

    無人機(jī)AI視覺行為識別系統(tǒng) 隨著無人機(jī)技術(shù)的快速發(fā)展和計算機(jī)視覺領(lǐng)域的突破性進(jìn)展,無人機(jī)AI視覺行為識別系統(tǒng)應(yīng)運而生。傳統(tǒng)監(jiān)控系統(tǒng)受限于固定
    的頭像 發(fā)表于 07-04 16:53 ?1069次閱讀

    從FA模型切換到Stage模型時:module的切換說明

    。 entryTheme此標(biāo)簽標(biāo)識系統(tǒng)內(nèi)部主題的關(guān)鍵字。/Stage模型不支持。 表2 FA模型metaData和Stage中metadata對比 FA標(biāo)簽標(biāo)簽說明對應(yīng)的Stage模型
    發(fā)表于 06-05 08:16

    工地AI行為識別系統(tǒng)作用

    工地AI行為識別系統(tǒng)作用 工地AI行為識別系統(tǒng)是什么? 工地AI行為識別系統(tǒng)是一種基于人工智能技
    的頭像 發(fā)表于 05-08 12:00 ?941次閱讀

    景區(qū)AI行為識別系統(tǒng)作用

    景區(qū)AI行為識別系統(tǒng)作用 景區(qū)AI行為識別系統(tǒng)是什么? 景區(qū)AI行為識別系統(tǒng)是利用人工智能技術(shù)(
    的頭像 發(fā)表于 05-07 15:32 ?1005次閱讀
    景區(qū)AI<b class='flag-5'>行為</b>識別<b class='flag-5'>系統(tǒng)</b>作用

    工廠園區(qū)AI行為識別系統(tǒng)作用

    工廠園區(qū)AI行為識別系統(tǒng)作用 工廠園區(qū)AI行為識別系統(tǒng)是什么? 工廠園區(qū)AI行為識別系統(tǒng)是基于人
    的頭像 發(fā)表于 05-06 17:49 ?800次閱讀

    KaihongOS操作系統(tǒng)FA模型與Stage模型介紹

    FA模型與Stage模型介紹 KaihongOS操作系統(tǒng)中,F(xiàn)A模型(Feature Ability)和Stage模型是兩種不同的應(yīng)用
    發(fā)表于 04-24 07:27

    自媒體推廣實時監(jiān)控從服務(wù)器帶寬到用戶行為解決方法

    自媒體推廣的實時監(jiān)控需要從底層基礎(chǔ)設(shè)施到前端用戶行為進(jìn)行全鏈路覆蓋,確保推廣活動的穩(wěn)定性和效果可追蹤。以下是系統(tǒng)性解決方案,主機(jī)推薦小編為您整理發(fā)布自媒體推廣實時監(jiān)控從服務(wù)器帶寬到用戶
    的頭像 發(fā)表于 04-09 10:47 ?622次閱讀

    模型原生操作系統(tǒng):機(jī)遇、挑戰(zhàn)與展望 CCCF精選

    本文立足人工智能時代用戶、應(yīng)用和系統(tǒng)的需求,分析“外掛式模型”演進(jìn)路徑下的操作系統(tǒng)發(fā)展困局,提出通過“模型-
    的頭像 發(fā)表于 03-14 17:46 ?1163次閱讀
    <b class='flag-5'>模型</b>原生操作<b class='flag-5'>系統(tǒng)</b>:機(jī)遇、挑戰(zhàn)與展望  CCCF精選