下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式實(shí)時(shí)操作系統(tǒng)復(fù)習(xí)提綱一、基本概念linux內(nèi)核主要是由進(jìn)程調(diào)度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)接口和進(jìn)程間通信等組成。3linux用戶進(jìn)程: linux系統(tǒng)定義了五種狀態(tài)進(jìn)程狀態(tài)從linux的調(diào)度來(lái)看,支持非實(shí)時(shí)(普通)和實(shí)時(shí)兩種進(jìn)程。5考慮到中斷處理的效率,linux的中斷處理程序分為兩個(gè)部分:上半部(top half)和下半部(bottom half)。由外部設(shè)備引發(fā)的中斷叫外部中斷,處理器響應(yīng)中斷請(qǐng)求而執(zhí)行的程序模塊叫中斷服務(wù)例程6交換機(jī)制:將不用或暫不用的頁(yè)框中的頁(yè)移出,裝上新的頁(yè)面;linux三級(jí)分頁(yè)結(jié)構(gòu)7進(jìn)程的通信與同步機(jī)制有管道、信號(hào)、消息隊(duì)列、共享內(nèi)存和信號(hào)量集等el 中。
2、linux的管道有:匿名管道和命名管道;從信號(hào)的可靠性方面,信號(hào)可以分為:可靠信號(hào)和不可靠信號(hào)。8.linux設(shè)備驅(qū)動(dòng)注冊(cè)的基本參數(shù)有設(shè)備名稱,設(shè)備驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)、設(shè)備號(hào) 和 次設(shè)備號(hào)。lsmod 把現(xiàn)在 kernel 中已經(jīng)安裝的modules 列出來(lái);insmod 把某個(gè) module 安裝到 kernel.二、基本原理和方法基于虛擬內(nèi)存技術(shù)的程序執(zhí)行兩次映射:buddy算法-伙伴算法slab分配器思想linux內(nèi)存管理的基本內(nèi)容和步驟linux 內(nèi)核的主要組成部分linux的中斷處理程序linux系統(tǒng)進(jìn)程調(diào)度的總體思想。實(shí)時(shí)進(jìn)程優(yōu)先于普通進(jìn)程,實(shí)時(shí)進(jìn)程以進(jìn)程的緊急程度為優(yōu)先順序,普通進(jìn)程
3、以進(jìn)程平等占用cpu時(shí)間為基本調(diào)度原則。linux提供了兩種實(shí)時(shí)調(diào)度策略sched_fifo和sched_rrlinux使用的進(jìn)程間通信方式:(1)管道(pipe)和有名管道(fifo)(2)信號(hào)(signal)(3)消息隊(duì)列:msgget可以創(chuàng)建一個(gè)新隊(duì)列或打開一個(gè)存在的隊(duì)列. msgctl類似于驅(qū)動(dòng)程序中的ioctl函數(shù), 可對(duì)消息隊(duì)列執(zhí)行多種操作. 調(diào)用msgsnd將數(shù)據(jù)放到消息隊(duì)列中. 調(diào)用msgrcv將從消息隊(duì)列中取消息.(4)共享內(nèi)存:linux進(jìn)程調(diào)用shmget(shared memory get,獲取共享內(nèi)存)來(lái)分配一個(gè)共享內(nèi)存塊。shmat(shared memory at
4、tach,綁定到共享內(nèi)存)。shmctl(shared memory control,控制共享內(nèi)存)函數(shù)會(huì)返回一個(gè)共享內(nèi)存塊的相關(guān)信息。同時(shí) shmctl 允許程序修改這些信息。(5)信號(hào)量(6)套接字(socket)三、linux調(diào)度程序理解1. linux使用內(nèi)核函數(shù)goodness()對(duì)進(jìn)程進(jìn)行加權(quán)處理:static inline goodness (struct task_struct * pint this_cpu, struct mm_struct *this_mm)int weight; weight=-1;if (p-policy & sched_yield)/ /*判斷如果任
5、務(wù)的調(diào)度策略被置為sched_yield的話,則置權(quán)值為1,返回。goto out;if (p-policy=sched_other) /*先對(duì)普通進(jìn)程進(jìn)行處理(由于多數(shù)是普通進(jìn)程,這樣做有利于提高系統(tǒng)效率)*/weight=p-counter; /*返回權(quán)值為進(jìn)程的counter值*/if (! weight)goto out;#ifdef config_smpif (p-processor=this_cpu)weight+=proc_change_penalty;#endifif (p-mm=this_mm|! p-mm)weight+=1; /*對(duì)進(jìn)程權(quán)值進(jìn)行微調(diào),如果進(jìn)程的內(nèi)存空間使用
6、當(dāng)前正在運(yùn)行的進(jìn)程的內(nèi)存空間,則權(quán)值額外加1*/weight+=20-p-nice; /*將權(quán)值加上20與進(jìn)程優(yōu)先級(jí)nice的差。普通進(jìn)程的權(quán)值主要由counter值和nice值組成*/goto out;weight=1000+p-rt_priority; /對(duì)實(shí)時(shí)進(jìn)程進(jìn)行處理,返回權(quán)值為rt_priority+1000,確保優(yōu)先級(jí)高于普通進(jìn)程*/out:return weight;2. linux 進(jìn)程及管道應(yīng)用實(shí)例#include#includeint main()int n,fd2; / 這里的fd是文件描述符的數(shù)組,用于創(chuàng)建管道做準(zhǔn)備的pid_t pid;char line100;if
7、(pipe(fd)0) / 創(chuàng)建管道 printf(pipe create error/n);if(pid=fork()0) /這里是父進(jìn)程,先關(guān)閉管道的讀出端,然后在管道的寫端寫入“hello world close(fd0); write(fd1,hello word/n,11);else close(fd1); /這里是子進(jìn)程,先關(guān)閉管道的寫入端,然后在管道的讀出端讀出數(shù)據(jù) n= read(fd0,line,100); write(stdout_fileno,line,n);exit(0);linux中的工作隊(duì)列工作隊(duì)列(work queue)是linux kernel中將工作推后執(zhí)行的
8、一種機(jī)制。這種機(jī)制和bh或tasklets不同之處在于工作隊(duì)列是把推后的工作交由一個(gè)內(nèi)核線程去執(zhí)行,因此工作隊(duì)列的優(yōu)勢(shì)就在于它允許重新調(diào)度甚至睡眠。工作隊(duì)列是2.6內(nèi)核開始引入的機(jī)制,在2.6.20之后,工作隊(duì)列的數(shù)據(jù)結(jié)構(gòu)發(fā)生了一些變化,數(shù)據(jù)結(jié)構(gòu): structwork_struct unsigned longpending; pending是用來(lái)記錄工作是否已經(jīng)掛在隊(duì)列上;structlist_head entry; entry是循環(huán)鏈表結(jié)構(gòu);void(*func)(void*); func作為函數(shù)指針,由用戶實(shí)現(xiàn);void*data; data用來(lái)存儲(chǔ)用戶的私人數(shù)據(jù),此數(shù)據(jù)即是func的參
9、數(shù);void*wq_data; wq_data一般用來(lái)指向工作者線程(工作者線程參考下文);structtimer_list timer; timer是推后執(zhí)行的定時(shí)器。;工作隊(duì)列(work queue)api:1、init_work(_work, _func, _data);初始化指定工作,目的是把用戶指定的函數(shù)_func及_func需要的參數(shù)_data賦給work_struct的func及data變量。2、schedule_work(structwork_struct *work)對(duì)工作進(jìn)行調(diào)度,即把給定工作的處理函數(shù)提交給缺省的工作隊(duì)列和工作者線程。工作者線程本質(zhì)上是一個(gè)普通的內(nèi)核線程,
10、在默認(rèn)情況下,每個(gè)cpu均有一個(gè)類型為“events”的工作者線程,當(dāng)調(diào)用schedule_work時(shí),這個(gè)工作者線程會(huì)被喚醒去執(zhí)行工作鏈表上的所有工作。3、schedule_delayed_work(structwork_struct *work, unsigned longdelay);延遲執(zhí)行工作,與schedule_work類似。4、flush_scheduled_work(void);刷新缺省工作隊(duì)列。此函數(shù)會(huì)一直等待,直到隊(duì)列中的所有工作都被執(zhí)行。5、cancel_delayed_work(structwork_struct *work);并不取消任何延遲執(zhí)行的工作,因此,如果要取
11、消延遲工作,應(yīng)該調(diào)用cancel_delayed_work。針對(duì)linux內(nèi)核,如下機(jī)制嚴(yán)重地影響了實(shí)時(shí)性linux實(shí)時(shí)改造后的系統(tǒng)實(shí)時(shí)性較好,典型代表有:kurt-linux,red-linux,rt-linux、rtai和xenomai等。rt-linux中的實(shí)時(shí)任務(wù)在運(yùn)行過(guò)程當(dāng)中總是處于以下三種狀態(tài)之一:安裝rt-linux的方法和步驟在基于adeos的系統(tǒng)中,存在著a、b、c、d四種類型的交互。linux內(nèi)核和xenomai分別作為adeos中的一個(gè)域存在。linux內(nèi)核負(fù)責(zé)非實(shí)時(shí)任務(wù)的調(diào)度,而xenomai采用不同于linux的精度更高的定時(shí)中斷來(lái)調(diào)度實(shí)時(shí)任務(wù),實(shí)現(xiàn)更小的調(diào)度延時(shí)。另外,xenomai域的優(yōu)先級(jí)高于linux域。xenomai除了在內(nèi)核層利用adeos實(shí)現(xiàn)了硬實(shí)時(shí)外,它在用戶空間也有很好的實(shí)時(shí)性。xenomai的補(bǔ)丁及配置移植步驟rt-linux的實(shí)時(shí)內(nèi)核的主要api1)硬中斷api2)軟中斷api3)內(nèi)核實(shí)時(shí)線程編程api,主要有以下幾個(gè)(在rtl_sched.h中聲明):4)要使用共享內(nèi)存通信,需要
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年兒童玩具特許經(jīng)營(yíng)協(xié)議
- 2025年人文出版合同
- 二零二五版學(xué)生軍訓(xùn)教官學(xué)生軍訓(xùn)期間心理輔導(dǎo)合同3篇
- 2025年分期醫(yī)療美容項(xiàng)目合同
- 2025年供應(yīng)鏈服務(wù)合同解除協(xié)議
- 2025年企業(yè)辦公軟件許可協(xié)議
- 二零二五年酒店酒水線上線下聯(lián)合促銷合作協(xié)議3篇
- 2025年專利設(shè)計(jì)授權(quán)協(xié)議
- 2025年度金融機(jī)構(gòu)外匯借款合同變更協(xié)議3篇
- 二零二五版智能辦公系統(tǒng)定制開發(fā)與維護(hù)合同2篇
- 蘇北四市(徐州、宿遷、淮安、連云港)2025屆高三第一次調(diào)研考試(一模)語(yǔ)文試卷(含答案)
- 第7課《中華民族一家親》(第一課時(shí))(說(shuō)課稿)2024-2025學(xué)年統(tǒng)編版道德與法治五年級(jí)上冊(cè)
- 2024年醫(yī)銷售藥銷售工作總結(jié)
- 急診科十大護(hù)理課件
- 山東省濟(jì)寧市2023-2024學(xué)年高一上學(xué)期1月期末物理試題(解析版)
- GB/T 44888-2024政務(wù)服務(wù)大廳智能化建設(shè)指南
- 2025年上半年河南鄭州滎陽(yáng)市招聘第二批政務(wù)輔助人員211人筆試重點(diǎn)基礎(chǔ)提升(共500題)附帶答案詳解
- 山東省濟(jì)南市歷城區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)模擬試題(無(wú)答案)
- 國(guó)家重點(diǎn)風(fēng)景名勝區(qū)登山健身步道建設(shè)項(xiàng)目可行性研究報(bào)告
- 投資計(jì)劃書模板計(jì)劃方案
- 《接觸網(wǎng)施工》課件 3.4.2 隧道內(nèi)腕臂安裝
評(píng)論
0/150
提交評(píng)論