Linux內核分析--對信號機制的分析 Linux內核分析--對信號機制的分析

Linux內核分析--對信號機制的分析

  • 期刊名字:溫州職業(yè)技術(shù)學(xué)院學(xué)報
  • 文件大?。?48kb
  • 論文作者:崔麗榮
  • 作者單位:溫州職業(yè)技術(shù)學(xué)院
  • 更新時(shí)間:2020-09-25
  • 下載次數:次
論文簡(jiǎn)介

第S卷第3期溫州職業(yè)技術(shù)學(xué)院學(xué)報Vol.5 No.32005年9月Journal of Wenzhou Vocational and Technical CollegeSep. 2005Linux內核分析-----對信號機制的分析崔麗榮(溫州職業(yè)技術(shù)學(xué)院計算機系,浙江溫州325035)摘要] Linux是源代碼自由開(kāi)放的操作系統。Linux內核的許多面向通信的底層代碼,對開(kāi)發(fā)我國的信息安全產(chǎn)品極有參考價(jià)值,因此,對源代碼的組織結構、實(shí)現原理及實(shí)現機制進(jìn)行較詳細的闡述,無(wú)疑對深入了解源代碼及Linux的普及和發(fā)展將有重要的作用.[關(guān)鍵詞] Linux; 信號機制;源代碼[中圖分類(lèi)號] TP316.89[文獻標識碼] A [文章編號] 1671-4326( 2005)03-0045-02An Analysis on Linux Kernelon Signal.cCUI Li-rong(Computer Science Department, Wenzhou Vocational and Technical College, Wenzhou, 325035, China)Abstract: Linux is a free and open operating system of code source. A lot of communication-orientedmachine codes of Linux kernel are very valuable to the exploration of the information security products of ourcountry. Thus, the presentation of the organization structure, the performance principle and the performancemechanism of the code source will undoubtedly enhance the understanding of code source and the popularityof Linux.Key words: Linux; Signal.c; Code sourceLinux作為最熱門(mén)的源代碼自由開(kāi)放的操作系Linux的內核源代碼的版本是多版本的。對不同統,引起了國內外Linux開(kāi)發(fā)者和愛(ài)好者以及獨立軟的內核版本,系統調用一般是相同的。新版本可以增件開(kāi)發(fā)商和各類(lèi)企業(yè)主管的關(guān)注,其發(fā)展勢頭越來(lái)越加- -些新的調用,但舊的系統調用將依然不變,以便猛,同時(shí)也逐步得到多數硬軟件公司的強勁支持。于保持向后的兼容,所以,一個(gè)新的內核版本不能打數據顯示,Linux已經(jīng)占到操作系統市場(chǎng)的20%,破常規的過(guò)程。多數情況下,設備文件雖仍然相同,Windows占60%。在我國,Linux也得到 了很快的發(fā)但版本之間的內部接口則有所變化。Linux 內核源代展。2004年 以來(lái)Linux巳逐漸滲透到電信、金融這些碼有一個(gè)簡(jiǎn)單的數字系統,任何偶數內核是-一個(gè)穩定IT需求高端的行業(yè),并且Linux正逐步應用于高可靠的版本,而奇數內核是正在發(fā)展中的內核。發(fā)展中的性服務(wù)器和集群服務(wù)器這些相對高端的領(lǐng)域。與內核有最新的特點(diǎn),支持最新的設備,是發(fā)展最新而Windows相比,Linux源代碼完全公開(kāi)、便于分析和修又穩定的內核的基礎。對內核源代碼的修改是以補丁改,而令世人刮目相看。Linux內核的許多面向通信文件的形式發(fā)布的。的底層代碼對開(kāi)發(fā)我國的信息安全產(chǎn)品極有參考價(jià)Linux內核源代碼的結構為:每個(gè)目錄或子目錄值。因此,對源代碼的組織結構、實(shí)現原理及實(shí)現機可以看作一個(gè)模塊,其目錄之間的連線(xiàn)表示“子目 錄制進(jìn)行較詳細的闡述,無(wú)疑對深入了解源代碼及或子模塊”的關(guān)系。Linux的普及和發(fā)展將有重要的作用。中國煤化工1 Linux 內核源代碼的特點(diǎn)2.1YHCNMH G系[收稿日期] 2005-03-25[作者簡(jiǎn)們崔麗榮(1975- ),女,內蒙古四子王旗人,溫州職業(yè)技術(shù)學(xué)院計算機系助教.46溫州職業(yè)技術(shù)學(xué)院學(xué)報2005年9月Linux是一個(gè)龐大、高效而復雜的操作系統,從信機制,利用這些機制,進(jìn)程之間可以進(jìn)行通訊并共結構上可以把Linux的內核劃分為五個(gè)主要的子系同完成某項任務(wù),這種機制就是IPC。Linux支 持許統,它們以進(jìn)程調度子系統為核心,其它四個(gè)子系統多不同形式的IPC。在特定的情況下它們各有自己的分別為內存管理、進(jìn)程間通信、虛擬文件系統和網(wǎng)絡(luò )優(yōu)缺點(diǎn)和使用范圍。其中最有用的IPC有管道.接口。每個(gè)子系統之間通過(guò)過(guò)程調用,互相通信。通System V的IPC機制及信號。信機制在Linux操作系統的子系統中發(fā)揮了重要的作所謂管道,是指用于連接-一個(gè) 讀進(jìn)程和一個(gè)寫(xiě)進(jìn)用。程,以實(shí)現它們之間通信的共享文件,又稱(chēng)pipe文(1)進(jìn)程調度子系統。因為L(cháng)inux中的 每個(gè)進(jìn)程都件。向管道提供輸入的發(fā)送進(jìn)程(即寫(xiě)進(jìn)程),以字有自己的虛擬地址空間,為了避免多個(gè)進(jìn)程之間的互符流形式將大量的數據送入管道;而 接受管道輸出相影響,特別是用戶(hù)利用兩個(gè)或多個(gè)進(jìn)程的功能完成的接收進(jìn)程(即讀進(jìn)程),可從管道中接收數據。由同-任務(wù)時(shí),進(jìn)程通信機制發(fā)揮著(zhù)不可替代的作用。于發(fā)送進(jìn)程和接收進(jìn)程是利用管道進(jìn)行通信的,故又如A進(jìn)程和B進(jìn)程共同完成.一項任務(wù),此過(guò)程必須A和稱(chēng)管道通信。這種方式首創(chuàng )于UNIX系統,因它能傳B進(jìn)程之間進(jìn)行通信,以便彼此了解工作狀況。而進(jìn)送大量的數據,且很有效,故很 多操作系統都引用程調度子系統就是以它們間的通信來(lái)掛起或喚醒進(jìn)程這種通信方式,Linux也不例外。的。Linux也支持System V的IPC:消息、信號量和共(2)管理子系統。Linux是個(gè)多任務(wù)操作系統,享內存。Linux對 這些機制的實(shí)施大同小異。我們把可以有多個(gè)程序同時(shí)裝入內存并運行。操 作系統的信號量、消息和共享內存統稱(chēng)System V IPC的對象,每個(gè)程序建立一個(gè)運行即進(jìn)程,每個(gè)進(jìn)程都擁有自己每個(gè)對象都具有同樣類(lèi)型的接口,即系統調用。這些的虛擬地址空間,它們之間互不干擾,即使要相互作對象和文件一樣,都有唯一-的識別號,進(jìn)程可以通過(guò)用,如多個(gè)進(jìn)程合作完成某項工作,也要通過(guò)內核提系統調用傳遞的識別號來(lái)存取這些對象。與文件的存供的進(jìn)程間通信機制(IPC)。Linux內存管理的設計充取一樣,對這些對象的存取也要驗證存取權限,分利用計算機操作系統所提供的虛擬存儲技術(shù),真正SystemV1PC對象的創(chuàng )建者可以通過(guò)系統調用設置這實(shí)現了虛擬存儲的管理。進(jìn)程的虛擬地址可以映射到些對象的存取權限。任意一個(gè)物理地址處,因此,當兩個(gè)進(jìn)程的虛擬地基于Linux支持的通信機制是如何具體實(shí)施的,址映射到同一物理地址時(shí),為了避免兩個(gè)進(jìn)程的沖是怎樣完成進(jìn)程間通信的?我們可以通過(guò)分析其源代突,進(jìn)程之間必須進(jìn)行通訊。碼得到問(wèn)題的解答。(3)子系統的依賴(lài)關(guān)系。圖1顯示了IPC子系統與2.3 Linux內 核模塊Signa1.c內核其它系統之間的資源依賴(lài)關(guān)系。IPC子系統因在操作系統中,信號是一種機制,進(jìn)程通過(guò)信號sockets而依賴(lài)文件子系統,因為sockets使用文件描知道系統中正在發(fā)生的事件。信號是隨機產(chǎn)生的,在述符,一且sockets被打開(kāi),就給它分配一個(gè)inode。進(jìn)程執行期間隨時(shí)都可能收到信號,甚至可能在進(jìn)程內存管理依賴(lài)IPC,因為頁(yè)交換例程在執行共享內存正在執行系統調用時(shí)收到信號。所以,進(jìn)程必須隨的交換時(shí)使用IPC機制。IPC依賴(lài)內存管理主要是因為時(shí)做好響應信號的準備,發(fā)出信號的進(jìn)程將信號送給分配緩沖區和共享內存的實(shí)現。接收者進(jìn)程的PCB中,收到者進(jìn)程被調用時(shí),才能轉IPC入處理信號引起的事件。為區別于硬件中斷,有時(shí)把信號的處理叫“軟中斷”。每一種信號都有一個(gè)符號名和一個(gè)值,放在文件中,也可用kil1命進(jìn)程調度內存管理文件系統令給出這些信號。信號的-一個(gè)主要特點(diǎn)是它的異步圍1 IPC子系統的資源依賴(lài)關(guān)系性,這表示進(jìn)程在執行期間的任何時(shí)候都可能接收到2.2Linux支持的通信機制信號,甚至可能當進(jìn)程正在執行系統調用時(shí)接到信Linux是一個(gè)多任務(wù)操作系統,必須保證CPU時(shí)刻號,所以,進(jìn)程必須隨時(shí)為響應信號做好準備。通常保持在使用狀態(tài),以提高利用率。Linux中的每個(gè)進(jìn)情況下,若系統調用被信號中斷,則它將返回值,并程都有自己的虛擬地址空間,操作系統的一個(gè)最重要將e" 中國煤化工: 斷的調用是收到信號的基本管理目的,就是避免進(jìn)程之間的互相影響。但有時(shí)用戶(hù)也希望利用兩個(gè)或多個(gè)進(jìn)程的功能完成同一YHC N M H G父進(jìn)程發(fā)出信號時(shí),任務(wù),為了協(xié)調進(jìn)程之間的活動(dòng),進(jìn)程間以及進(jìn)程內核將代表該進(jìn)程執行這個(gè)操作。與核心之間要進(jìn)行通信。為此,Linux提供了 許多通在POSIX下,每個(gè)進(jìn)程有一個(gè)掩碼,(下轉第72頁(yè))72溫州職業(yè)技術(shù)學(xué)院學(xué)報2005年9月來(lái)衡量高職教育成功與否的關(guān)鍵。學(xué)生職業(yè)指導成為進(jìn)行。引導學(xué)生在了解自己、了解職業(yè)、了解社會(huì )的學(xué)校的重要工作,學(xué)校開(kāi)設專(zhuān)門(mén)的職業(yè)指導課程,對基礎上調整就業(yè)意愿,樹(shù)立對未來(lái)職業(yè)生涯發(fā)展的信學(xué)生進(jìn)行“成功教育”,幫助學(xué)生學(xué)習職業(yè)知識,掌心,看到自己的不足和即將從事的職業(yè)對從業(yè)者素質(zhì)握職業(yè)生涯設計的方法,使學(xué)生樹(shù)立正確的職業(yè)觀(guān)、要求的差距,形成自覺(jué)提高自己的動(dòng)力機制,完善自就業(yè)觀(guān)和擇業(yè)觀(guān)。職業(yè)指導從新生一進(jìn)校的入學(xué)教育身的道德品質(zhì),養成敬業(yè)樂(lè )業(yè)的職業(yè)道德。開(kāi)始,貫穿于大學(xué)教育的全過(guò)程,分階段、有步驟地[參考文獻]川周濟.高職高專(zhuān)教育改革與建設[網(wǎng)].北京: 高等教育出版社,2004.28-38.[2] 霍爾.戴維斯.道德教育的理論與實(shí)踐[M].杭州:浙江教有出版社,2003.[3] 劉創(chuàng ).德育目標:內涵、功能與實(shí)現(1].求索,2004, (3) .[4}孫文學(xué).以就業(yè)為導向的高職學(xué)生職業(yè)能力培養--兼 論高職人才培養欖式的變革[J].職業(yè)技術(shù)教育,2005, (4) .[5]劉春生,馬振華,張宇,以就業(yè)為導向發(fā)展職業(yè)教育的理論思考(J].職業(yè)技術(shù)教育,2005, (10) .6| 章明.高職教育的正確目標定位[J].成才(武漢), 199, (3).[7]單黹麟.以就業(yè)為導向培養高素質(zhì)技能型人才(J].中國培訓,2004, (12).[8]鮑潔.用新的質(zhì)量觀(guān)建立高等職業(yè)教育的質(zhì)量保障體系[J/0L]. ht://www. bjpopss .g0v .cn/bjpscjj/cjj20040430.htm.zh.[責任編輯:李小玉](上接第46頁(yè)) Linux中進(jìn)程task. struct結構的中,一個(gè)進(jìn)程可以選擇是處理這些信號還是封鎖這些blocked域描述信號掩碼的位圖(見(jiàn)圖2)。每一位對信號;若不封鎖這些信號可選擇親自處理,或交內核應32個(gè)信號中的一個(gè)信號,其中第8位和第18位始終處理;內核處理時(shí),按對該信號的默認去處理。除為0,表示SIGKILL和SIGSTOP是不可阻塞的;掩碼位SIGKILL和SIGST0P外所有信號都可以被封鎖。當一個(gè)圖的某位置1,表示它被自動(dòng)加到接收進(jìn)程的信號掩信號已被封鎖時(shí),要直到封鎖被解除才能處理。碼中。例如,當SIGINT被 發(fā)送時(shí),接收進(jìn)程掩碼的第Linux保存有如何處理每種可能發(fā)生的信號,信息存2位被置位,如果再發(fā)送SIGINT給該進(jìn)程,說(shuō)明這個(gè)放在sigaction數組中,由每種進(jìn)程task_ struct標SIGINT信號成為當前被阻塞傳遞的信號,信號明。在其他事件中包含有處理信號的程序地址,這SIGINT將被加到該進(jìn)程中掛起的信號集合中,當阻塞些信號告訴Linux進(jìn)程,希望它忽略信號或讓內核去被移開(kāi)時(shí),SIGING才 傳遞給該進(jìn)程。處理。當然,并不是系統中的每個(gè)進(jìn)程都可以向其他10... ..進(jìn)程發(fā)送信號,只有內核和超級用戶(hù)可以,普通進(jìn)程只能發(fā)信號給具有相同uid和gid的進(jìn)程。當信號產(chǎn)生32 31圖2信號掩碼的位圈時(shí),并不是立即提交給進(jìn)程,而必頒等到進(jìn)程再次運信號之間沒(méi)有優(yōu)先關(guān)系。當兩個(gè)信號同時(shí)發(fā)生在行時(shí),才能接收信號。每次進(jìn)程從系統調用中退出,個(gè)進(jìn)程時(shí), 可以以任何方式處理;同種類(lèi)型的信其signa1和blocked域都要接受檢查,當信號無(wú)封鎖號也沒(méi)有原則性,信號的處理由接收信號的進(jìn)程來(lái)決時(shí),可以立即被傳遞,因為幾乎每個(gè)進(jìn)程都在一直使定。Linux中, 有關(guān)信號的信息也存放在task_ struc t用系統調用。[]陳建輝。Linux操作系統內核實(shí)習[M].北京:機械工業(yè)出版社,2002 .[2]李善平。Linux內核2. 4版源代碼分析大全[M].北京:機械工業(yè)出版社,2002 .. [3] 駱耀祖. Linux操作系統分析教程[N].北京:清華大學(xué)出版社,2004.|4]徐士良。常用算法程序集(C語(yǔ)言描述)[w]. 北京:清華大學(xué)出版社,2004.[s| 鄭莉. C++語(yǔ)言程序設計[M].北京:清華大學(xué)出版社,2003.中國煤化工[6] 王立柱. C/C++與數據結構[周]. 北京:清華大學(xué)出版社,2003.MYHCNMHG[7]曹聰.計算機操作系統[回].蘭州:蘭州大學(xué)出版社,1998.[8}倪光南.倪光南呼吁使用Linux系統[EB/0L]. http://ww. linuxeden. com/doc/article. php/21743.[9]韓國華。Linux高速增 長(cháng)引發(fā)廠(chǎng)商大合并[EB/0L]. http://ww. linuxeden. com/doc/article. php/21726.[責任編輯:李永平]

論文截圖
版權:如無(wú)特殊注明,文章轉載自網(wǎng)絡(luò ),侵權請聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習使用,務(wù)必24小時(shí)內刪除。
欧美AAAAAA级午夜福利_国产福利写真片视频在线_91香蕉国产观看免费人人_莉莉精品国产免费手机影院