在线亚洲黄色-在线亚洲观看-在线亚洲电影-在线亚洲成人-岛国大片在线观看免费版-岛国大片在线播放高清

linux編譯內(nèi)核及添加系統(tǒng)調(diào)用1

導(dǎo)讀我們都知道系統(tǒng)功能調(diào)用是Unix/Linux操作系統(tǒng)向用戶程序提供支持的接口,通過這些接口應(yīng)用程序向操作系統(tǒng)請(qǐng)求服務(wù),控制轉(zhuǎn)向操作系統(tǒng),而操作系統(tǒng)在完成服務(wù)后,將控制和結(jié)果返回給用戶程序。系統(tǒng)調(diào)用的主要目的是使得用戶可以使用操作系統(tǒng)提供的有關(guān)設(shè)備管理、輸入/輸出系統(tǒng)、文件系統(tǒng)和進(jìn)程控制、通信以及存儲(chǔ)管理等方面的功能,而不必了解系統(tǒng)程序的內(nèi)部結(jié)構(gòu)和有關(guān)硬件細(xì)節(jié),從而起到減輕用戶負(fù)擔(dān)和保護(hù)系統(tǒng)以及提高資源利用率的作用。在進(jìn)行系統(tǒng)功能調(diào)用時(shí)會(huì)由用戶態(tài)(也稱目態(tài))轉(zhuǎn)到核態(tài)(也稱管態(tài))。昨天我的一信安的朋友還問過我管態(tài)和目態(tài)的區(qū)別,我想來想去也就是這里有大的區(qū)別了,在管態(tài)下能使用系統(tǒng)的所有資源,調(diào)用系統(tǒng)的特權(quán)函數(shù),而目態(tài)是不行的。在執(zhí)行系統(tǒng)功能調(diào)用時(shí)就必須是在管態(tài)下執(zhí)行。

系統(tǒng)大全為您提供我們都知道系統(tǒng)功能調(diào)用是Unix/Linux操作系統(tǒng)向用戶程序提供支持的接口,通過這些接口應(yīng)用程序向操作系統(tǒng)請(qǐng)求服務(wù),控制轉(zhuǎn)向操作系統(tǒng),而操作系統(tǒng)在完成服務(wù)后,將控制和結(jié)果返回給用戶程序。系統(tǒng)調(diào)用的主要目的是使得用戶可以使用操作系統(tǒng)提供的有關(guān)設(shè)備管理、輸入/輸出系統(tǒng)、文件系統(tǒng)和進(jìn)程控制、通信以及存儲(chǔ)管理等方面的功能,而不必了解系統(tǒng)程序的內(nèi)部結(jié)構(gòu)和有關(guān)硬件細(xì)節(jié),從而起到減輕用戶負(fù)擔(dān)和保護(hù)系統(tǒng)以及提高資源利用率的作用。在進(jìn)行系統(tǒng)功能調(diào)用時(shí)會(huì)由用戶態(tài)(也稱目態(tài))轉(zhuǎn)到核態(tài)(也稱管態(tài))。昨天我的一信安的朋友還問過我管態(tài)和目態(tài)的區(qū)別,我想來想去也就是這里有大的區(qū)別了,在管態(tài)下能使用系統(tǒng)的所有資源,調(diào)用系統(tǒng)的特權(quán)函數(shù),而目態(tài)是不行的。在執(zhí)行系統(tǒng)功能調(diào)用時(shí)就必須是在管態(tài)下執(zhí)行。而如果我需要給我的linux系統(tǒng)增加一個(gè)系統(tǒng)功能調(diào)用的話,就必須弄清楚系統(tǒng)是如何調(diào)用那些功能函數(shù)的,又是如何由目態(tài)變?yōu)楣軕B(tài)的。在linux下可以通過中斷來進(jìn)入管態(tài),這類中斷稱為訪管中斷。內(nèi)核中系統(tǒng)調(diào)用的過程在Linux系統(tǒng)中,系統(tǒng)調(diào)用是作為一種異常類型實(shí)現(xiàn)的,它將執(zhí)行相應(yīng)的機(jī)器代碼指令來產(chǎn)生異常信號(hào)。產(chǎn)生中斷或異常的重要效果是系統(tǒng)自動(dòng)將用戶態(tài)切換為核心態(tài)來對(duì)它進(jìn)行處理。用戶態(tài)的程序只有通過門(gate)陷入(trap)到系統(tǒng)內(nèi)核中去(執(zhí)行int指令),才能執(zhí)行一些具有特權(quán)的內(nèi)核函數(shù)。系統(tǒng)調(diào)用完成后,系統(tǒng)執(zhí)行另一組特征指令(iret指令)將系統(tǒng)返回到用戶態(tài),控制權(quán)返回給進(jìn)程。Linux用來實(shí)現(xiàn)系統(tǒng)調(diào)用異常的實(shí)際指令是:int$0x80這一指令使用中斷/異常向量號(hào)128(即16進(jìn)制的80)將控制權(quán)轉(zhuǎn)移給內(nèi)核(進(jìn)行模式切換)。為達(dá)到在使用系統(tǒng)調(diào)用時(shí)不必用機(jī)器指令編程,在標(biāo)準(zhǔn)的C語言庫中為每一系統(tǒng)調(diào)用提供了一段短的子程序,完成機(jī)器代碼的編程工作。事實(shí)上,機(jī)器代碼段非常簡(jiǎn)短。它所要做的工作只是將送給系統(tǒng)調(diào)用的參數(shù)加載到cpu寄存器中,接著執(zhí)行int$0x80指令。然后運(yùn)行系統(tǒng)調(diào)用。系統(tǒng)調(diào)用的返回值將送入cpu的一個(gè)寄存器中,標(biāo)準(zhǔn)的庫子程序取得這一返回值,并將它送回用戶程序。下面以getuid()系統(tǒng)調(diào)用為例來看調(diào)用過程:我們可以看到其中有一些宏定義,我們可以看看這些宏的定義(arch/i386/kernel/entry.S).………#defineSAVE_ALLcld;pushl%es;pushl%ds;pushl%eax;pushl%ebp;pushl%edi;pushl%esi;pushl%edx;pushl%ecx;pushl%ebx;movl$(__USER_DS),%edx;movl%edx,%ds;movl%edx,%es;我們可以看到SAVE_ALL主要是保存寄存器信息,即現(xiàn)場(chǎng)保留。其中,movl$(__USER_DS),%edx;從這一句開始是重新填充DS,ES段。?#defineRESTORE_INT_REGSpopl%ebx;popl%ecx;popl%edx;popl%esi;popl%edi;popl%ebp;popl%eax#defineRESTORE_REGSRESTORE_INT_REGS;1:popl%ds;2:popl%es;.section.fixup,"ax";3:movl$0,(%esp);jmp1b;4:movl$0,(%esp);jmp2b;.prevIoUs;.section__ex_table,"a";.align4;.long1b,3b;.long2b,4b;.prevIoUs?ENTRY(ret_from_fork)pushl%eaxcallschedule_tailGET_THREAD_INFO(%ebp)popl%eaxjmpsyscall_exit這里主要完成現(xiàn)場(chǎng)恢復(fù)并返回。ENTRY(system_call)pushl%eax#saveorig_eaxSAVE_ALLGET_THREAD_INFO(%ebp)#systemcalltracinginoperation/*Note,_TIF_SECCOMPisbitnumber8,andsoitneedstestwandnottestb*/testw$(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SECCOMP),TI_flags(%ebp)jnzsyscall_trace_entrycmpl$(nr_syscalls),%eaxjaesyscall_badsyssyscall_call:call*sys_call_table(,%eax,4)movl%eax,EAX(%esp)#storethereturnvaluesyscall_exit:cli#makesurewedon'tmissaninterrupt#settingneed_reschedorsigpending#betweensamplingandtheiretmovlTI_flags(%ebp),%ecxtestw$_TIF_ALLWORK_MASK,%cx#current->workjnesyscall_exit_workrestore_all:movlEFLAGS(%esp),%eax#mixEFLAGS,SSandCS#Warning:OLDSS(%esp)containsthewrong/randomvaluesifwe#arereturningtothekernel.#Seecommentsinprocess.c:copy_thread()fordetails.movbOLDSS(%esp),%ahmovbCS(%esp),%alandl$(VM_MASK|(4<<8)|3),%eaxcmpl$((4<<8)|3),%eaxjeldt_ss#returningtouser-spacewithLDTSSrestore_nocheck:RESTORE_REGSaddl$4,%esp1:iret這一段中,主要是完成調(diào)用。eax放置的是系統(tǒng)調(diào)用號(hào),因?yàn)閑ax有可能被使用,所以先保存其值。call*sys_call_table(,%eax,4)這一句是計(jì)算調(diào)用的入口。其中,sys_call_table是LINUX的系統(tǒng)調(diào)用表,它存在目錄arch/i386/kernel/sys_call_table.S下。.dataENTRY(sys_call_table).longsys_restart_syscall/*0-old"setup()"systemcall,usedforrestarting*/.longsys_exit.longsys_fork.longsys_read.longsys_write.longsys_open/*5*/………….longsys_mq_timedreceive/*280*/.longsys_mq_notify.longsys_mq_getsetattr.longsys_ni_syscall/*reservedforkexec*/.longsys_waitid.longsys_ni_syscall/*285*//*available*/???以上就是系統(tǒng)大全給大家介紹的如何使的方法都有一定的了解了吧,好了,如果大家還想了解更多的資訊,那就趕緊點(diǎn)擊系統(tǒng)大全官網(wǎng)吧。??本文來自系統(tǒng)大全http:///如需轉(zhuǎn)載請(qǐng)注明!推薦:win7純凈版

為你推薦
資訊專欄
熱門視頻
相關(guān)推薦
linux查看文件時(shí)間精確到秒 Win81無法退出家庭組選擇退出時(shí)提示無法正常退 Windows8110升級(jí)補(bǔ)丁導(dǎo)致Windows資源管理器停止響應(yīng) linux網(wǎng)卡配置詳解 win8系統(tǒng)輸入法出現(xiàn)卡死無法輸入中文怎么辦 小記IptabLes和IptabLex病毒清理過程3 Win8平板電腦設(shè)置WIFI上網(wǎng)方法 Windows8怎么樣加速關(guān)機(jī) 辛星整理Linux部分常用命令 Linux下設(shè)置環(huán)境變量各配置文件的區(qū)別 win8qq如何下載 linux掛載硬盤報(bào)錯(cuò)youmustspecifythefilesystemtyp Linux命令之后臺(tái)運(yùn)行nohup linux關(guān)于進(jìn)程process LinuxShell中的判斷結(jié)構(gòu) linux文件時(shí)間的查看和修改touch 如何快速推廣qq群qq群推廣方法 支付寶信用騎行在哪里怎么用方法支付寶怎么用 linux系統(tǒng)中如何查看日志常用命令 格式工廠如何轉(zhuǎn)換音頻格式格式工廠轉(zhuǎn)換音樂 Win81系統(tǒng)下使用administrator管理員賬戶登陸的方法 如何解決Windows7無法識(shí)別光驅(qū)的問題 如何在win8電腦中關(guān)閉IE瀏覽器的兼容性視圖設(shè)置 Linux下常用的gcc參數(shù) Linux環(huán)境進(jìn)程間通信管道及有名管道1 實(shí)用教程ArchLinux安裝詳解 Linux下自動(dòng)備份文件到遠(yuǎn)程FTP服務(wù)器并刪除指定日 騰訊視頻如何設(shè)置定時(shí)關(guān)機(jī)騰訊視頻啟用定時(shí) 5分鐘學(xué)會(huì)Linux windows10新功能 linux下vi編輯器命令入門 linux下安裝使用jprofiler8tomcat Win8系統(tǒng)安裝Foxmail后無法發(fā)送郵件怎么辦如何 如何在windows7中進(jìn)行鼠標(biāo)相關(guān)設(shè)置 Linux系統(tǒng)之間拷貝文件的技巧總結(jié) 正在經(jīng)歷變革的Linux系統(tǒng)管理員技能 linux中exit和exit區(qū)別 linux學(xué)習(xí)之進(jìn)程線程和程序 WPS文字怎么對(duì)字體大小修改WPS文字對(duì)字體大小修 Nginx設(shè)置目錄保護(hù)防盜鏈限速多域名的方法
Top 主站蜘蛛池模板: 亚洲视频一区二区三区 | 欧洲一区二区三区在线观看 | 国产第八页 | 国产视频1区 | 亚洲精品123区 | 欧美最猛性xxxxx动态图 | 91热成人精品国产免费 | 欧美午夜在线观看 | 国产成人精品免费视频大全可播放的 | 亚洲国产一区二区三区在线观看 | 亚洲欧美一区二区三区久久 | 欧美性俄罗斯18精品 | 精品欧美一区二区三区精品久久 | 91在线 一区 二区三区 | 在线国产高清 | 日本伊人久久 | 91精品一区二区三区在线观看 | 一级全黄60分钟免费网站 | 欧美精品v日韩精品v国产精品 | 久久96国产精品久久久 | 手机在线国产视频 | 精品日韩视频 | 一边摸一边爽一边叫床视频 | 国产综合社区 | 波多野结衣乳巨码无在线观看 | 成人欧美一区二区三区在线 | 日韩欧美伊人久久大香线蕉 | 久久99精品国产99久久 | 国产高清一区二区三区视频 | 国产不卡视频在线播放 | 亚洲欧美视频一区二区三区 | 国产一级内谢a级高清毛片 国产最新精品视频 | 国产中文字幕视频 | 国产在线精品一区二区三区不卡 | 国产精品va一区二区三区 | 国产产一区二区三区久久毛片国语 | 国产一区二区三区高清 | 欧美日韩精品一区二区三区视频在线 | 麻豆精品一区 | 欧美日韩一区二区三区在线观看 | 日韩综合 |