




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、本科學生畢業論文(設計)題目(中 文):Linux進程間通信的研究與實現(英 文):The research and implementation of communication between Linux processes姓 名學 號院 (系)專業、年級指導教師湖南科技學院本科畢業論文(設計)誠信聲明本人鄭重聲明:所呈交的本科畢業論文(設計),是本人在指導老師的指導下,獨立進行研究工作所取得的成果,成果不存在知識產權爭議,除文中已經注明引用的內容外,本論文不含任何其他個人或集體已經發表或撰寫過的作品成果。對本文的研究做出重要貢獻的個人和集體均已在文中以明確方式標明。本人完全意識到本聲明的
2、法律結果由本人承擔。 本科畢業論文(設計)作者簽名: 年 月 日 畢業論文(設計)任務書課題名稱:Linux 進程間通信的研究與實現學生姓名:系別:專業:指導教師:1、 關鍵詞:linux環境,進程,通信,研究2、畢業論文(設計)內容要求:用實例對linux進程間的五種通信機制(無名有名管道、消息隊列、信號量和共享內存)進行親緣進程或是非親緣進程讀寫規則的程序驗證,通過不同機制協調進程來實現另外機制間數據的讀寫。1)利用管道快速傳輸和節約空間的性質,實現大數據量的信息在親緣和非親緣進程間傳輸和接收。2)通過有名管道(FIFO)提供一個路徑名與之進行關聯,以先進先出的形式存在于文件系統中,使不相
3、干的進程也可以通過FIFO相互通信。3)將不同通信機制信號量與消息隊列結合使用,利用信號量來協調進程對消息隊列中數據的讀寫,并應用于實例。4)通過共享內存映射一段內存空間,讀進程通過掛載到該共享內存中來讀取內存數據。5)對IPC通信機制的安全性分析,對安全級別比較低的消息隊列機制進行研究改進,實現消息隊列的讀寫權限由系統來管理。3、文獻查閱指引:1 吳震, 陳耀武. 一種基于消息的進程間通信機制J. 電子器件, 2012.8.26,8-10.2 W.Richard Stevens. UNIX Network Programming, Volume 2: Interprocess Communi
4、cations (2nd Edition) J. 2012, 45-61.3 李娟. 利用進程間通信實現程序自我保護J. 考試周刊, 2011.8.2, 16-20.4 賀建立. Linux中System V進程通信機制安全性形式化驗證J. 計算機工程與科學, 2012.10.30, 17-22.5 武軍彪. 嵌入式操作系統核間任務同步與通信的設計與實現D. 西安電子科技大學, 2012, 18-22.6 姜玉蓉. LINUX內核進程間通信的模型檢測研究J. 計算機科學, 2013, 12-18.7 馮蘊, 楊斌. 雙內核實時系統下各進程間通信方法的性能分析和測試J. 成都信息工程學院學報,
5、2013.8.15, 12-16.4、畢業論文(設計)進度安排:1)2013年2月:尋找合適設計課題,選定課題,給老師審核,通過審核,確定課題。2)2013年3月:查看關于Linux進程間通信的書,搜索各相關資料。3)2013年4月:寫程序,實現進程間通信的五個基本方式。 4)2013年5月:查閱書刊,網上搜索資料,寫論文,交初稿,并在導師的指導下修改論文; 5)2013年5月下旬:定稿,做PPT,完成論文答辯。系部意見: 負責人簽名: 注:本任務書一式三份,由指導教師填寫,經系畢業論文領導小組審批后一份下達給學生,一份交指導教師,一份留系里存檔。湖南科技學院本科畢業論文(設計)開題報告書論文
6、(設計)題目Linux進程間通信的研究與實現作者姓名楊禮彪所屬系、專業、年級電子工程系電子信息工程專業2009年級指導教師姓名、職稱李春樹教授預計字數13000開題日期2012-12-25選題的根據:1)說明本選題的理論、實際意義 2)綜述國內外有關本選題的研究動態和自己的見解隨著計算機及網絡技術的高速發展、全球信息化時代的到來,給人們工作、生活的方方面面帶來方便和快捷的同時,也帶來了信息安全方面威脅。非法入侵、竊取、篡改計算機系統中的重要數據,給社會造成難以估量的損失。目前,國內外現有的Linux操作系統的安全級別低于C2級(按美國國防部指定的TCSEC(Trusted Computer S
7、ystem Evaluation Criteria),還遠不能滿足我們對于安全的需求1-3。為了增強其安全性能,提高抗風險能力,需要不斷地對操作系統進行修補和完善。因此,通過對通信機制的安全性能的研究入手,借鑒文件系統強制訪問控制,實現進程通信的強制訪問控制,以達到避免信息泄露的目的,為我們更好地提升操作系統的安全性能,具有十分重要的指導意義。主要內容:1)Linux系統的介紹;2)Linux進程的概述及創建;3)Linux進程間通信各種方式的研究與程序實現; 4)Linux進程通信機制的安全性研究;5)設計的總結。研究方法:1)查閱相關書籍,進行理論分析;2)針對性的對各進程間通信方法的研究
8、,通過不斷調試程序去實現通信;3)上網查資料,跟同學探討并和導師交流。完成期限和采取的主要措施:采取的主要措施:嚴格遵照湖南科技學院畢業論文(設計)工作管理辦法的指示精神,結合個人的實際情況,我完成這項設計所采取的主要措施有兩條:一是他人幫助。聯系指導導師,確定設計課題方向與設計內容,讓老師指點設計思路,遇到問題請教同學,為更好完成設計提供了很大幫助;二是查閱資料。到圖書館借來了相關書籍和網絡上查閱資料,充分利用各種資源。主要參考資料:1 陳城高. 進程間通信技術在銀行短信系統中的應用J, 計算機工程與應用, 2011.4.11, 17-24.2賀建立. Linux中System V進程通信機
9、制安全性形式化驗證J. 計算機工程與科學, 2012.10.30, 17-22. 3 李娟. 利用進程間通信實現程序自我保護J. 考試周刊, 2011.8.2, 16-20.4 W.Richard Stevens. UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition) J. 2012, 45-61.5 姜玉蓉. LINUX內核進程間通信的模型檢測研究J. 計算機科學, 2013, 12-18.6 馮蘊, 楊斌. 雙內核實時系統下各進程間通信方法的性能分析和測試J. 成都信息工程學院學報, 20
10、13.8.15, 12-16.7 吳震, 陳耀武. 一種基于消息的進程間通信機制J. 電子器件, 2012.8.26,8-10.指導教師意見:指導教師簽名:教研室意見:簽 名: 年 月 日開 題 報 告 會 紀 要時 間2012.12.23地 點三教608與會人員姓 名職務(職稱)姓 名職務(職稱)姓 名職務(職稱)李春樹教 授李小武副教授李艷芳副教授楊 熙碩 士譚永宏副教授廖朝陽碩 士會議記錄摘要:楊熙老師問:你怎樣去查找資料的? 答:主要是通過導師介紹的湘科院學校網站上的圖書館、期刊網以及同學推薦的IT論壇等查找相關的文獻資料,當然百度、谷歌肯定也是用到了的。李春樹老師問:你的研究意義是什
11、么?答:雖然目前國內對Linux操作系統的安全性有所研究,但是其安全級別還是比較低,還不能滿足我們對于安全的需求,所以我們需要實現更高級別的安全功能。我通過對這個Linux操作系統安全性的研究,實現了Linux的IPC機制的強制訪問控制,對提升系統安全性有所幫助。 會議主持人: 記 錄 人:年 月 日指導小組意見負責人簽名:年 月 日系部 意 見負責人簽名:年月日注:此表由學生本人填寫,一式三份,一份留系里存檔,指導老師和本人各保存一份。湖南科技學院畢業論文(設計)中期檢查表畢業論文(設計)題 目Linux進程間通信的研究與實現學生姓名楊禮彪學 號200906002441系 別電子工程系專 業
12、電子信息工程指導教師李春樹檢查日期指導教師檢查情況記載及修改意見: 檢查情況記載:1、 對要設計的東西了解還可以,對設計很有幫助;2、 缺少國內外設計成果分析;3、 參考文獻不規范;4、 論文正文基本完成,但是論文格式上還沒弄好。修改意見:1、 要介紹下當前國內外的研究成果,還有哪些不足與改進;2、 參考文獻要按照規范來寫,時間出處等都要有;3、 注意論文格式,參照模版來設計;4、 盡量突出說明你自己所做的工作,突出自己的獨特之處;5、 緒論沒做好,要突出設計的意義;6、 要按順序引用。7、 截圖要有圖標及說明。簽名:注:此表用于指導教師在學生畢業論文(設計)初稿完成后對學生執行任務書情況進行
13、中期檢查時用,由指導教師填寫湖南科技學院畢業設計(論文)指導過程記錄表畢業論文(設計)題目Linux進程間通信的研究與實現學生姓名楊禮彪學號200906002441專業班級電信0904班指導教師李春樹職稱教 授系(教研室)電子工程系指導過程記錄指導內容記錄(一)1、明確選題背景,選題意義;2、確定選題,填寫畢業設計任務書;學 生 簽 名: 201 年 月 日指導教師簽名: 201 年 月 日指導內容記錄(二)1、到圖書館查找和借閱與選題有關的文獻和資料;2、從中國知網上檢索和下載與選題有關的文獻;學 生 簽 名: 201 年 月 日 指導教師簽名: 201 年 月 日指導內容記錄(三)1、注意
14、論文格式,參照模板;2、參考文獻的創建時間要在三年之內;3、論文要突出自己設計的不同點; 學 生 簽 名: 201 年 月 日 指導教師簽名: 201 年 月 日指導內容記錄(四)1、圖形要有圖標,要夠清楚。2、文獻最好為最近出的期刊。學 生 簽 名: 201 年 月 日 指導教師簽名: 201 年 月 日指導過程記錄指導內容記錄(五)1、注意文獻的引用要加引用標注;2、制作一個能反映論文主要內容的PPT,作答辯陳述用,陳述時間控制在 58分鐘;學 生 簽 名: 201 年 月 日 指導教師簽名: 201 年 月 日指導內容記錄(六)1、英語名詞第一次介紹要有英文全稱。2、論文大體上可以,但還
15、需修改,排版還不夠完善,設計內容突出的同時還得讓人有視覺美感;學 生 簽 名: 201 年 月 日 指導教師簽名: 201 年 月 日指導內容記錄(七)學 生 簽 名: 201 年 月 日 指導教師簽名: 201 年 月 日指導內容記錄(八)學 生 簽 名: 201 年 月 日 指導教師簽名: 201 年 月 日答辯小組組長意見(對情況是否屬實做出意見)組長(簽名): 201 年 月 日注:本表與畢業論文一起裝訂存檔。湖南科技學院本科畢業論文(設計)評審表論文題目Linux進程間通信的研究與實現作者姓名楊禮彪所屬系、專業、年級電子工程系 電子信息工程專業 2009年級指導教師姓名、職稱李春樹
16、教授 字 數13000定稿日期中文摘要本論文闡述了在Linux環境下,對管道(pipe)、有名管道(named pipe)、信號量(semophore)、消息隊列(message queue)、信號(sinal)、共享內存(shared memory)等幾種主要進程間通信手段的內部實現機制進行了分析和比較,并針對每個通信手段的關鍵技術環節給出詳細的實現事例,為研究大型的應用系統進程間通信,提供一種有益的參考與借鑒。關鍵詞(3-5個)linux環境,進程,通信,設計英文摘要This paper describes the Linux environment, the pipeline (pipe
17、), named pipes (named pipe), semaphore (semophore), message queues (message queue), signal (sinal), shared memory (shared memory), such as several major means of inter-process communication mechanism of the internal implementation were analyzed and compared, and means of communication for each of th
18、e key technical aspects of the implementation details are given examples of the application of the system for the study of large-scale inter-process communication, provide a useful reference and experience.關鍵詞Linux environment, process, communicate, research指導教師評定成績評審基元評審要素評審內涵滿分指導教師實評分選題質量25%目的明確符合
19、要求選題符合專業培養目標,體現學科、專業特點和教學計劃的基本要求,達到畢業論文(設計)綜合訓練的目的。10理論意義或實際價值符合本學科的理論發展,有一定的學術意義;對經濟建設和社會發展的應用性研究中的某個理論或方法問題進行研究,具有一定的實際價值。10選題恰當題目規模適當,難易度適中;有一定的科學性。5能力水平40%查閱文獻資料能力能獨立查閱相關文獻資料,歸納總結本論文所涉及的有關研究狀況及成果。10綜合運用知識能力能運用所學專業知識闡述問題;能對查閱的資料進行整理和運用;能對其科學論點進行論證。10研究方案的設計能力整體思路清晰;研究方案合理可行。5研究方法和手段的運用能力能運用本學科常規研
20、究方法及相關研究手段(如計算機、實驗儀器設備等)進行實驗、實踐并加工處理、總結信息。10外文應用能力能閱讀、翻譯一定量的本專業外文資料、外文摘要和外文參考書目(特殊專業除外)體現一定的外語水平。5論文質量35%文題相符較好地完成論文選題的目的要求。5寫作水平論點鮮明;論據充分;條理清晰;語言流暢。15寫作規范符合學術論文的基本要求。用語、格式、圖表、數據、量和單位、各種資料引用規范化、符合標準。10論文篇幅10000字左右。5實評總分 成績等級指導教師評審意見: 指導教師簽名:說明:評定成績分為優秀、良好、中等、及格、不及格五個等級,實評總分90100分記為優秀,8089分記為良好,7079分
21、記為中等,6069分記為及格,60分以下記為不及格。評閱教師評定成績評審基元評審要素評審內涵滿分評閱教師實評分選題質量25%目的明確符合要求選題符合專業培養目標,體現學科、專業特點和教學計劃的基本要求,達到畢業論文(設計)綜合訓練的目的。10理論意義或實際價值符合本學科的理論發展,有一定的學術意義;對經濟建設和社會發展的應用性研究中的某個理論或方法問題進行研究,具有一定的實際價值。10選題恰當題目規模適當,難易度適中;有一定的科學性。5能力水平40%查閱文獻資料能力能獨立查閱相關文獻資料,歸納總結本論文所涉及的有關研究狀況及成果。10綜合運用知識能力能運用所學專業知識闡述問題;能對查閱的資料進
22、行整理和運用;能對其科學論點進行論證。10研究方案的設計能力整體思路清晰;研究方案合理可行。5研究方法和手段的運用能力能運用本學科常規研究方法及相關研究手段(如計算機、實驗儀器設備等)進行實驗、實踐并加工處理、總結信息。10外文應用能力能閱讀、翻譯一定量的本專業外文資料、外文摘要和外文參考書目(特殊專業除外)體現一定的外語水平。5論文質量35%文題相符較好地完成論文選題的目的要求。5寫作水平論點鮮明;論據充分;條理清晰;語言流暢。15寫作規范符合學術論文的基本要求。用語、格式、圖表、數據、量和單位、各種資料引用規范化、符合標準。10論文篇幅10000字左右。5實評總分 成績等級評閱教師評審意見
23、: 評閱教師簽名:說明:評定成績分為優秀、良好、中等、及格、不及格五個等級,實評總分90100分記為優秀,8089分記為良好,7079分記為中等,6069分記為及格,60分以下記為不及格。湖南科技學院本科畢業論文(設計)答辯記錄表論文題目Linux進程間通信的研究與實現作者姓名楊禮彪所屬系、專業、年級電子工程系電子信息工程專業 2009年級指導教師姓名、職稱李春樹 教授答 辯 會 紀 要時間地點三教608答辯小組成員姓 名職務(職稱)姓 名職務(職稱)姓 名職務(職稱)李春樹教 授李小武副教授李艷芳副教授楊 熙碩 士譚永宏副教授廖朝陽碩 士答辯中提出的主要問題及回答的簡要情況記錄:1.楊熙老師
24、問:什么是親緣進程,什么是非親緣進程? 答:顧名思義,親緣進程就是有一定親緣關系的進程,這里指的就是父子進程。非親緣進程就是跨越了親緣,是兩個程序進程,并非僅限于一個程序內的父子進程。2.李小武老師問:除了單機的進程間通信,需要通過怎樣能實現跨機通信?可以通過套接字(socket)來實現跨越機子的通信。兩臺主機A和B,在A主機通過進程C發送數據到套接字中,在B主機進程D可以通過讀取套接字來獲得進程C發送的消息。3.譚永宏老師問:在此次設計中你怎樣實現非親緣進程間的通信?答:通過內核中的消息隊列來實現,通過寫進程往消息隊列中寫東西,通過讀進程從消息隊列中讀取內容。寫時可以設置消息類型值,讀取時只
25、有存在匹配的消息類型值(相當于一個密碼)才能讀出東西。 會議主持人:記 錄 人: 年 月 日答辯小組意見評語:評定等級: 負責人(簽名): 年 月 日系學位委員會意見評語:論文(設計)最終評定等級:負責人(簽名): 系部(公章) 年月 日校學位委員會意見評語:評定等級: 負責人(簽名): 年月 日目 錄緒論11 Linux系統32 Linux進程52.1 進程的概念52.2 進程的構成要素52.3 Linux進程概述52.4 Linux進程間關系52.5 進程的創建62.6 Linux進程間通信的介紹73 Linux進程間通信機制103.1信號103.1.1 信號的概念103.1.2 信號的本
26、質103.1.3 信號來源103.1.4 有關信號的系統調用signal103.2管道113.2.1 管道的概念及介紹113.2.2無名管道123.2.3無名管道實現通信133.2.4命名管道143.2.5讀寫管道的特點153.2.6 命名管道實現通信153.3 System V IPC183.3.1 消息隊列183.3.2信號量233.3.3共享內存313.4 linux通信機制的安全性研究363.5 總結分析38參考文獻39致 謝40Linux 進程間通信的研究與實現摘要本論文闡述了在Linux環境下,對管道(pipe)、有名管道(named pipe)、信號量(semophore)、消息
27、隊列(message queue)、信號(sinal)、共享內存(shared memory)等幾種主要進程間通信手段的內部實現機制進行了分析和比較,并針對每個通信手段的關鍵技術環節給出詳細的實現事例,為研究大型的應用系統進程間通信,提供一種有益的參考與借鑒。【關鍵詞】linux環境,進程,通信,研究The research and implementation of communication between Linux processesABSTRACTThis paper describes the Linux environment, the pipeline (pipe), name
28、d pipes (named pipe), semaphore (semophore), message queues (message queue), signal (sinal), shared memory (shared memory), such as several major means of inter-process communication mechanism of the internal implementation were analyzed and compared, and means of communication for each of the key t
29、echnical aspects of the implementation details are given examples of the application of the system for the study of large-scale inter-process communication, provide a useful reference and experience.【key word】Linux environment, process, communicate, research緒論 隨著計算機技術的不斷發展,計算機系統中運行的應用程序功能日益強大,孤立存在的,
30、獨立運行的應用程序越來越多,越來越多的程序相互間需要共享數據和不斷的交換信息。即使在同意應用程序中,也常常包含多個進程,它們之間同樣需要相互通信、共享和交換數據,共同完成程序功能。Linux中一個進程的地址空間內的數據是私有的,別的進程不可見1。不同類型的進程通信手段也常常是不同的,在程序設計中采用的進程通信技術不同,對應用程序的功能實現和運行效率都有著重要影響。 Linux下的進程通信機制基本上是從UNIX平臺上繼承而來,linux 進程間通信的幾種主要手段主要包括:管道(pipe)、命名管道(FIFO)、消息隊列、信號量和共享內存2。其中管道和有名管道是最早的進程間通信機制之一,管道可用于
31、具有親緣關系進程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關系進程間的通信。認清管道和有名管道的讀寫規則是在程序中應用它們的關鍵,本文在詳細討論了管道和有名管道的通信機制的基礎上,用實例對其讀寫規則進行了程序驗證,這樣做有利于增強讀者對讀寫規則的感性認識,同時也提供了應用范例 。共享內存是直接用虛擬地址訪問內存中的數據,不需要數據從內核到客戶進程的相互拷貝,它的通信效率是幾種進程通信機制中最高的3。但是不用進程讀/寫一塊內存空間的操作時微觀的、直接的、不能由內核保證互斥性,進程間也不會自動到達同步,因此共享內存需要與其他通信機制結合,來實現進程的
32、同步與互斥。本文將信號量與消息隊列結合使用,利用信號量來協調進程對消息隊列中數據的讀寫(見3.3.3章節),并應用于實例。隨著計算機及網絡技術的高速發展、全球信息化時代的到來,給人們工作、生活的方方面面帶來方便和快捷的同時,也帶來了信息安全方面威脅。非法入侵、竊取、篡改計算機系統中的重要數據,給社會造成難以估量的損失。受我國計算機和電子工業水平的限制,國內計算機系統的核心硬件幾乎完全依靠進口,核心計算機系統軟件,例如操作系統、數據庫管理系統等,也基本上依賴國外技術,因此我國信息化建設面臨著極大的威脅和挑戰4。在現在國內外研究基礎上,計算機硬件和軟件系統要能發揮作用,必須通過操作系統的管理協調才
33、能完成,因此如果能有效的解決操作系統層的安全問題,就很大程度上解決了信息系統硬件和軟件的安全問題。Linux的出現,在降低了開發操作系統的門檻,為我國開發自主安全的操作系統帶來機遇。而進程間通信機制又為我們提供了數據傳輸方式,我們可以通過進程間通信實現具有安全性的通信,為我們更好提升操作系統打下基礎。目前國內外對Linux操作系統的安全性有所研究,但是其安全級別還是低于C2級(按美國國防部指定的TCSEC(Trusted Computer System Evaluation Criteria)5。這級別還不能滿足我們對于安全的需求,為了增強其安全功能,提供抗擊能力,需要實現更高級別的安全功能。
34、目前國內外對Linux操作系統安全性研究還存在的問題有:1) 超級用戶的權限太大,它擁有所有的特權,一旦獲得超級用戶的權限,就獲得了對整個計算機系統的安全控制5。2) 文件訪問控制簡單:Linux對文件目錄的訪問控制只能控制到用戶組,不能對單個用戶實現訪問控制,權限粒度過粗。3) 缺少強制訪問控制:Linux主要采用自主訪問控制機制,缺乏強制訪問控制機制5-6。4) 安全審計功能不足:Linux只有簡單的審計,而且主要是通過日志來進行審計,缺乏對日志數據的安全整性保護,日志也可有能被入侵者修改,消除攻擊痕跡。就TCSEC評估來說,達到B級標準的操作系統即稱為安全操作系統,當前我們的目標是B1級
35、,要達到TCBSEC B1級,主要需要實現強制訪問控制功能。我們這里就針對“缺少強制訪問控制”這個不足進行改進,實現強制訪問控制功能。 與文件訪問類似,通過操作系統進程間通信機制對消息隊列、共享內存、信號量,管道和FIFOS的訪問,也可以造成敏感信息的泄漏,對這些通信機制同樣要進行強制訪問控制檢查。因為管道和FIFOS實際上就是通過建立一個文件來實現,所以對這兩種IPC機制的強制訪問控制的實現可以參考文件系統的安全機制。在章節3.4集中討論System V IPC機制的安全,因為IPC機制中消息隊列的安全級別不高,只達到自主訪問級,所以側重對消息隊列進行安全性的改進。 經過對消息隊列安全性的修
36、改,Linux的IPC機制基本上實現了強制訪問控制,向實現linux安全操作系統邁進了一步,為信息系統安全體系的建設打下堅實的基礎。1 Linux系統Linux操作系統是UNIX操作系統的一種克隆系統,最早是由芬蘭黑客林納斯.托瓦茲(Linus B. Torvalds)為嘗試在英特爾x86架構上提供自由免費的類Unix操作系統而開發的。該計劃開始于1991年,林納斯·托瓦茲當時在Usenet新聞組comp.os.minix登載帖子,這份著名的帖子標示著Linux計劃的正式開始。以后借助于Internet網絡,并通過全世界各地計算機愛好者的共同努力,已成為今天世界上使用最多的一種UNI
37、X 類操作系統,并且使用人數還在迅猛增長。 Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。它主要用于基于Intel x86系列CPU的計算機上。這個系統是由全世界各地的成千上萬的程序員設計和實現的。其目的是建立不受任何商品化軟件的版權制約的、全世界都能自由使用的Unix兼容產品。技術上說Linux是一個內核?!皟群恕敝傅氖且粋€提供硬件抽象層、磁盤
38、及文件系統控制、多任務等功能的系統軟件。一個內核不是一套完整的操作系統。一套基于Linux內核的完整操作系統叫作Linux操作系統。Linux的基本思想有兩點:第一,一切都是文件;第二,每個軟件都有確定的用途。其中第一條詳細來講就是系統中的所有都歸結為一個文件,包括命令、硬件和軟件設備、操作系統、進程等等對于操作系統內核而言,都被視為擁有各自特性或類型的文件。至于說Linux是基于Unix的,很大程度上也是因為這兩者的基本思想十分相近。絕大多數基于Linux內核的的操作系統使用了大量的GNU軟件,包括了shell程序、工具、程序庫、編譯器及工具,還有許多其他程序,例如Emacs。正因為如此,G
39、NU計劃的開創者理查德·馬修·斯托曼博士提議將Linux操作系統改名為GNU/Linux,但有些人只把操作系統叫做“Linux”。由于這些系統工具和庫主要由GNU計劃提供,自由軟件基金會提議將該組合系統命名為GNU/Linux。Linux是一個領先的操作系統,可以運行在服務器和其他大型平臺之上,如大型機和超級計算機。世界上500個最快的超級計算機90%以上運行Linux發行版或變種,最快的前10名超級計算機運行的都是Linux操作系統。 Linux也廣泛應用在嵌入式設備上,如手機、平板電腦、路由器、電視和電子游戲機等。在移動設備上廣泛使用的Android操作系統就是創建在L
40、inux內核之上的。Linux以它的高效性和靈活性著稱,Linux模塊化的設計結構,使得它既能在價格昂貴的工作站上運行,也能夠在廉價的PC機上實現全部的Unix特性,具有多任務、多用戶的能力。Linux是在GNU公共許可權限下免費獲得的,是一個符合POSIX標準的操作系統。Linux操作系統軟件包不僅包括完整的Linux操作系統,而且還包括了文本編輯器、高級語言編譯器等應用軟件。它還包括帶有多個窗口管理器的X-Windows圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標和菜單對系統進行操作。Linux由于其系統軟件的免費獲取,硬件費用低廉的特點,近年來發展迅猛。Li
41、nux的應用軟件已達上千兆。從DOS環境摸擬到圖像,音響信號的處理,從游戲到中文軟件,無所不包。各大軟件公司已紛紛開始推出Linux版本的商業軟件。最近,對Linux所做的基準測試表明,Pentium/100的速度可以跟SUN/20蓖美。94年底在華盛頓萬國會議中心召開了Linux世界年會,各大軟件公司都派出了陣容強大的代表團,展出了豐富的Linux產品。Linux開始進入商業應用時代。中國的Internet跟中國的經濟一樣正經歷大建設,大發展時代,要在幾年內把百座城市的上千所大學,研究所聯成網,急需大量的工作站和系統管理員,Linux不失為一個低費用的選擇。利用現有的PC安裝上Linux系統
42、,就可以在各系,部門得到一臺專業的UNIX工作站,它可以作為Internet上的一個點。 目前,在操作系統市場上除了一些專業的領域外,微軟公司正在以其Windows95/NT的強勁攻勢橫掃全球市場。能與其相抗衡的公司越來越少,連微軟公司最大的對手擁有一大批忠心耿耿用戶的蘋果公司也不得不敗下陣來,接受微軟公司的合作意向。但是在迅猛發展的國際互聯網上,有這樣一群人,他們是一支由編程高手、業余計算機玩家、黑客們組成的奇怪隊伍,完全獨立地開發出在功能上毫不遜色于微軟公司的商業操作系統的一個全新的免費UNIX操作系統Linux(發音為Li-nucks),成為網絡上一支不可小覷的力量,并以不到四年的微薄資
43、格就成為微軟的一個強勁對手。據很不精確的統計,全世界使用Linux操作系統的人已經有數百萬之多,而且絕大多數是在網絡上使用的。而在中國,隨著Internet大潮的卷入,一批主要以高等院校的學生和ISP(Internet Service Provider)的技術人員組成的Linux愛好者隊伍也已經蓬蓬勃勃地成長起來。可以說在中國,隨著網絡的不斷普及,免費而性能優異的Linux操作系統必將發揮出越來越大的作用。 2 Linux進程2.1 進程的概念進程是一個具有獨立功能的程序關于某個數據集合的一次運行活動。它可以申請和擁有系統資源,是一個動態的概念,是一個活動的實體。它不只是程序的代碼,還包括當前
44、的活動,通過程序計數器的值和處理寄存器的內容來表示。2.2 進程的構成要素 從進程的構成要素來看,進程由三部分組成,也就是進程控制塊(Process Control Block,簡稱PCB),有關的程序段,以及操作的數據集。其中進程控制塊主要包括進程的一些描述信息、資源信息以及控制信息等。系統為每個進程設置一個PCB,它是標識和描述進程存在及相關特性的數據塊,是進城存在的唯一標識,是金城動態特征的集中反映。當創建一個進程時,系統首先完成其功能之后,系統則釋放PCB,進程也隨之消亡。2.3 Linux進程概述 .open系統調用返回的文件描述符是非負整型。 .每一個進程都有自己的文件描述符集合。
45、 .當創建進程時,通常有3個打開文件描述符(0,1,2),0代表標準輸入,1代表標準輸出,2代表標準錯誤,它們統稱為標準IO。 .當多個描述符指向同一個文件,每個文件描述符仍保持他獨特的性能。 .由于文件描述符在一個進程中是特有的,因此不能在多個進程中間實現共享,而唯一的例外是在父/子進程之間,當一個進程調用fork時,調用fork時打開的所有文件在子進程和父進程中仍然是打開的,而且子進程寫入文件描述符會影響到父進程的同一文件描述符,反之亦然。2.4 Linux進程間關系進程之間有父子關系,如果一個進程創建多個子進程,那這些子進程之間就有了兄弟關系。Linux中,進程0和進程1由內核創建,進程
46、1(init)是其他所有進程的祖先。在進程描述符表task_struct結構中,以下字段表示進程間的關系:Real_parent:指向創建進程的P的進程的描述符,如果P的父進程不存在,就指向進程1的描述符。Parent:指向P的當前父進程,往往與real_parent一致。當出現Q進程向P發出跟蹤調試ptrace()系統調用時,該字段指向Q進程描述符。Children:一個鏈表頭,該字段指向Q進程描述符。Sibling:指向兄弟進程鏈表的下一個元素或前一個元素的指針。另外,進程間還存在其他關系:登錄會話關系、進程組關系、線程組關系、跟蹤調試關系。在task_struct結構中,以下字段表示這些
47、關系(假設當前進程為P):Group_leader:P所在進程組的領頭進程的描述符指針;Signal->pgrp:P所在進程組的領頭進程的PID;Tgid:P所在線程組的領頭進程PID;Signal->session:一個鏈表頭,鏈表中的所有元素是被調試器程序跟蹤的P子進程;Ptrace_list:當P被調試跟蹤時,指向調試跟蹤進程的父進程鏈表的前一個和下一個元素。2.5 進程的創建創建一個進程的系統調用很簡單,我們只要調用fork函數就可以了。 #include<unistd.h> #include<sys/types.h> pid_t fork(); 當
48、一個進程調用了fork以后,系統會創建一個子進程。這個子進程和父進程不同的地方只有他的進程ID和父進程ID,其他的都是一樣。就象符進程克隆(clone)自己一樣。當然創建兩個一模一樣的進程是沒有意義的。為了區分父進程和子進程,我們必須跟蹤fork的返回值。當fork掉用失敗的時候(內存不足或者是用戶的最大進程數已到)fork返回-1,否則fork的返回值有重要的作用。對于父進程fork返回子進程的ID,而對于fork子進程返回0。我們就是根據這個返回值來區分父子進程的。父進程為什么要創建子進程呢?前面我們已經說過了Linux是一個多用戶操作系統,在同一時間會有許多的用戶在爭奪系統的資源。有時進
49、程為了早一點完成任務就創建子進程來爭奪資源。一旦子進程被創建,父子進程一起從fork處繼續執行,相互競爭系統的資源。有時候我們希望子進程繼續執行,而父進程阻塞直到子進程完成任務。這個時候我們可以調用wait或者waitpid系統調用。 #include <unistd.h>#include <sys/types.h>pid_t wait(int *stat_loc); pid_t waitpid(pid_t pid,int *stat_loc,int options); wait系統調用會使父進程阻塞直到一個子進程結束或者是父進程接受到了一個信號。如果沒有父進程沒有子進
50、程或者他的子進程已經結束了wait會立即返回。成功時(因一個子進程結束)wait將返回子進程的ID,否則返回-1,并設置全局變量errno.stat_loc是子進程的退出狀態。子進程調用exit,_exit 或者是return來設置這個值。 為了得到這個值Linux定義了幾個宏來測試這個返回值。 WIFEXITED:判斷子進程退出值是非0 WEXITSTATUS:判斷子進程的退出值(當子進程退出時非0)。 WIFSIGNALED:子進程由于有沒有獲得的信號而退出。 WTERMSIG:子進程沒有獲得的信號號(在WIFSIGNALED為真時才有意義)。 waitpid等待指定的子進程直到子進程返回
51、。如果pid為正值則等待指定的進程(pid)。如果為0則等待任何一個組ID和調用者的組ID相同的進程。為-1時等同于wait調用。小于-1時等待任何一個組ID等于pid絕對值的進程。 stat_loc和wait的意義一樣。 options可以決定父進程的狀態??梢匀蓚€值 WNOHANG:父進程立即返回當沒有子進程存在時。 WUNTACHED:當子進程結束時waitpid返回,但是子進程的退出狀態不可得到。 父進程創建子進程后,子進程一般要執行不同的程序。為了調用系統程序,我們可以使用系統調用exec族調用.exec族調用有著5個函數。 #include <unistd.h>int
52、 execl(const char *path,const char *arg,.); int execlp(const char *file,const char *arg,.); int execle(const char *path,const char *arg,.); int execv(const char *path,char *const argv); int execvp(const char *file,char *const argv): exec族調用可以執行給定程序,這樣父進程與子進程各行各職。2.6 Linux進程間通信的介紹 Linux的進程間通信,如圖2.1示。
53、其中,最初Unix IPC包括:管道、FIFO、信號;System V IPC包括:System V消息隊列、System V信號燈、System V共享內存區;Posix IPC包括: Posix消息隊列、Posix信號燈、Posix共享內存區。有兩點需要簡單說明一下:1)由于Unix版本的多樣性,電子電氣工程協會(IEEE)開發了一個獨立的Unix標準,這個新的ANSI Unix標準被稱為計算機環境的可移植性操作系統界面(PSOIX)?,F有大部分Unix和流行版本都是遵循POSIX標準的,而Linux從一開始就遵循POSIX標準;2)BSD并不是沒有涉足單機內的進程間通信(socket本身就可以用于單機內的進程間通信)。事實上,很多Unix版本的單機IPC留有BSD的痕跡,如4.4BSD支持的匿名內存映射、4.3+BSD對可靠信號語義的實現等等。圖2.1 Linux所繼承
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- QT與GUI設計理解試題及答案
- 如何克服法學概論考試中的焦慮試題及答案
- 跨越障礙與自我超越的旅程試題及答案
- 企業戰略中的外部協作與風險管理試題及答案
- 產科面試題及答案
- 基于用戶反饋的產品迭代試題及答案
- 經貿中文考試題及答案
- 蘇州日語考試試題及答案
- 海難救援試題及答案
- 光影素描考試題及答案
- 2025年保密觀知識競賽題庫及答案(各地真題)含答案詳解
- 建筑規范學習培訓課件
- 洗衣員工合同協議書
- 終止采購合同協議書
- 機械答辯試題庫及答案
- 電站運行考試題及答案
- 2025-2030中國靜脈曲張治療行業市場發展趨勢與前景展望戰略研究報告
- GB/T 12008.7-2025塑料聚氨酯生產用聚醚多元醇第7部分:堿性物質含量的測定
- 封隔器加工合同協議
- 2025年全國國家版圖知識競賽(中小學組)題庫
- 漢中漢源電力招聘試題及答案
評論
0/150
提交評論