




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Linux操作系統結構分析緒論一、分析對象現今有許多操作系統,從巨型機到臺式機到手持機中都有自己的操作系統,經常見到的操作系統就有幾十種。如:DOS、Windows 95/98/NT/2000/CE、各種版本的、 etWare,JavaOS 等等。每一種操作系統都有自己的結構,不可能全部分析,必須選擇其中最有代表性的一種。選取的原則:流行:主流操作系統,對它的分析具有實用價值; 成熟:采用的都是經過驗證的、正確、高效的技術;先進:具有先進性,代表了操作系統發展的潮流;容易得到:能得到可運行的系統、及豐富的文檔資料,最好有原碼;滿足以上條件的操作系統有:DOS、Windows 系列、UNIX 及
2、其變種。DOS 可以分析,但過時了;.Windows 系列所能得到的資料都是應用一級的,很少有介紹其無法得到原碼,難以深入分析;實現的,更UNIX 系統發展多年,非常成熟;目前仍有很大的市場,還算流行;經過不斷的改進和演化,其技術保持先進性,對整個操作系統的發展影響深遠;而且可以得到原碼和各種資料,便于分析其結構,所以選擇 UNIX 及其變種作為分析對象。“UNIX 的種類可能比你見到的冰淇淋的品牌還要多”,應選擇一個有代表性的變種,為此,首先看UNIX 及其變種的發展和演化:1.產生:1969 AT&T 的貝爾;創造者Ken Thompson 和Dennis Ritchie;環
3、境DEC PDP 7/11;1973.10 對外正式發布。2.:兩大1956 年(BSD、SVR)司法部依據反托拉斯法向 AT&T 提出,不允許 AT&T 經營計算機產品,因此,UNIX 無法進入商業領域。AT&T 無償向大學和研究機構提供UNIX 系統(包括原碼),用于教學和研究。其間,AT&T 維護著 UNIX,用戶從不同的方面對 UNIX 作了許多改進,AT&T 又將用戶對 UNIX 的改進加入到新版本中。此舉導致了 UNIX 在世界范圍內廣泛、快速發展。可以說,UNIX 開始時走的是開放、技術而非商業的道路。1978 年貝爾將 UNIX 移植到 VAX-11 上,該版本后來寄給了加州大
4、學分校(UCB)。分校 1974 年 2 月獲得UNIX證,1978 年獲得 VAX-11/780 和貝爾在 VAX-11 上的 UNIX 新版本。再此基礎上,分校為UNIX 引入了虛存、TCP/IP、快速文件系統、socket 等技術,發布了自己的版本(Berkeley Software Distribution):1979 年 3BSD、1980 年 4.0BSD、1981 年 4.1BSD、1983 年 4.2BSD、1986 年 4.3BSD、1993 年4.4BSD,93 年后停止開發。雖然 BSD 仍然是 UNIX,但它和 AT&T 的UNIX 在許多方面都不同,出現了。1982
5、年 AT&T 被允諾進入計算機市場,它很快推出了 UNIX版本:1982 年 System III、1983 年 System V,1984 年 System V Release 2(SVR2)、1987 年 SVR3、SVR4,其中引入了許多新技術,如:虛存(與 BSD 完全不同)、進程間通信設施、框架等;文件系統、共享庫、StreamsUNIX 商業版不斷推出,它們要么基于 BSD,要么基于 SVR,從而出現了兩大派別。1987 年 AT&T 與SUN 合作開發SVR4,引起許多廠商的不滿。1988 年 IBM、Digital、HP、Apollo 等成立開放(OSF);作為,AT&T 和S
6、UN 等公司成立UNIX 國際(UI)。的商業產品有:BSDSUN SunOS、DEC Ultrix、SGI IRIX、UCB 4.4BSD; SVR3HP UP-UX、SCO/MS SCO Xenix、SCO SCO UNIX、IBMAIX、Unisys Unisys UNIX 等;SVR4USL(AT&T 的子公司) System V、Novell UnixWare、CrayUNICOS、Dell DelIX SVR4 等;SV+BSDSUN Solaris、Apple A/UX 等。1990 Windows NT 推出,合作。UNIX 的商業化和標準化發展引入了許多新技術(如:SunOS
7、 引入的虛擬文件系統、網絡文件系統,AIX 引入的日志文件系統等),也制定了許多標準(如:IEEE 的IX 標準等),促進了整個操作系統的發展。3.簡化內核MACH早期的 UNIX,內核小巧、簡單,“小的就是美的”。隨著系統不斷地添加新的功能,內核變得越來越龐大、復雜和笨拙,有必要將其減肥。80 年代中期,.大學開發 Mach 操作系統,該系統采用微內核結構,內核僅提供必要功能的最小集,并支持 UNIX 編程接口。該系統首次提出微內核的概念,對操作系統的發展產生了深遠的影響。DigitaIX、NeXT NextStep、GNU Hurd、等商業系統都是基于它開發的。4.教學需要Minix在早期
8、,只要有 AT&T 的,可以很方便地拿到 UNIX 的原碼,可以說UNIX 原碼是公開的,因此,很多大學的操作系統課程都采用了UNIX。后來 AT&TUNIX 的巨大,原碼不再公開,同時也限制大學再講述 UNIX 理論。為了教學的需要,Andrew S. Tanenbaum 等人決定自己從頭寫一個與 UNIX 兼容的、完全為教學服務(演示操作系統的基本概念)的操作系統,這就是 Minix。經過多年的努力,Minix 有了很大發展,成了一個完全獨立的操作系統。但 Minix 是制了它的進一步發展。的系統,而且不夠完善,這限1990 年秋天,芬蘭首都的大學正在開設操作系統課程,所用的是Andrew
9、 Tanenbaum 的操作系統:設計與實現,當然,講述的是 Minix,上機用的也是 Minix。其中有一個學生:Linus Torvalds。因為在學校上機需要長時間排隊等待,所以,Linus“一氣之下,自己掏錢買了一臺 PC 機”,并在其上安裝了 Minix。Linus 在自己的 PC 機上,以 Tanenbaum 教授自行設計的微型 Unix 操作系統:Minix 為開發,開發了屬于他自己的第一個程序。“這個程序包括兩個進程,都是向屏幕上寫字母,然后用一個定時器來切換這兩個進程。”他回憶說,“一個進程寫 A,另一個進程寫 B,所以就在屏幕上看到了 AAAA, BBBB,如此循環重復的輸
10、出結果。”Linus 說剛開始的時候他根本沒有想到要編寫一個操作系統內核。1991 年,他需要一個簡單的終端仿真程序來存取 Usenet組的內容,于是他就在前兩個草草編寫的進程的基礎上又寫了一個程序。當然,他把那些個 A 和 B 改成了別的東西。“一個進程是從鍵盤上閱讀輸入然后發送給調制解調器,另一個進程則是從調制解調器上閱讀發送來的信息然后送到屏幕上供人閱讀。”然而要實現這兩個新的進程,他顯然還需要一些別的東西,這就是驅動程序。他必須為不同的顯示器、鍵盤和調制解調器編寫驅動程序。1991年的夏季,也就是在他了第一臺 PC 之后 6 個月,Linus 覺得他還需要從網上某些文件,為此他必須讀寫
11、某個磁盤。“于是我又不得不寫一個磁盤驅動程序,然后是一個文件系統。而一旦當你有了任務切換器、文件系統和設備驅動程序之后,你當然就擁有了一個 Unix”或者至少是它的一個內核。Linux 就以這樣一種極其古怪但也極其自然的方式問世了。 Linux這個羽毛未豐的操作系統很有可能馬上夭折,所以 Linus 并沒有在 Minix5.組中它。他只是在技術大學的一臺 FTP 服務器上發了一則消息,說用戶可以Linux 的公開版本。“Linux 是筆名,但是我要是真用它來命名的話,我擔心有人會認為我狂妄自大,而且不會去認真地對待它。所以我當時選了一個很糟糕的名字:Freax” ,這個字是由 free()fr
12、eak(怪胎)x的,“我知道這聽起來令人”。幸好,管理這臺 FTP 服務器的 Ari Lemmke 根本不喜歡 Freax 這個名字,他認為此套系統為“Linus 的 Minix ”,所以最后還是選擇了Linux。到 1992 年 1 月止,全世界大約只有 100 個左右的人在使用 Linux,但正是他們為 Linux 做了關鍵性的洗禮。他們所提供的所有初期的上載代碼和評論后來證明對 Linux 的發展為了解決 Linux 的錯誤而編寫的許多,尤為重要的是那些網上們代碼段。網上的任何人在任何地方都可以得到 Linux 的基本文件,并可通過電子郵件評論或者提供修正代碼,Usenet 還專門為它開
13、辟了一個。于是,Linux 就從最開始的一個人的產品變成了一副巨大的織錦,變成了由無數志同道合的們發起的一場運動。后來,Linux 加入了 GNU 組織,它受到越來越多的人的喜愛,被全世界的 Linux者加工、完善。許多技術力量雄厚又市場的商業公司也加入了原先完全由業余者和網絡所參與的這場 光了純粹面和眾多的運動,開發出了多種 Linux 的擴散版本(distribution),磨許多粗糙不平的棱角,增加了更易于用戶使用的圖形界開發工具,極大地拓展了 Linux 的全球用戶基礎。因此 Linux是ernet 上許多人共同努力的結果,是集體智慧的結晶。Linus 并不是從頭開始寫 Linux 的
14、。相反地,他是從重用 Minix 的代碼和思想入手的,當然,最后所有的 Minix 代碼都或被徹底的重寫了。Linux是在 Minix 上起步的,但在其成長的過程中,又接受了 UNIX 的許多成功的。有人評價說:“Linux 是在凝聚了 Unix 過去所有的成功,并拋棄了其所有缺陷后所形成的 Unix 的全部的精華”。Linux 的特色:多任務:可同時執行多個程序。多用戶:同一部機器可供多人同時使用。支持 386 protected mode: 采用內存保護方式執行各程序, 所以個別的程序失控不會造成系統當機。動態聯結 (dynamic linking):程序只在需要時才裝入內存。虛擬內存:每
15、個進程都可用到全部的地址空間,但須在硬盤上規劃一塊區域作交換區。copy-on-write pages 支持:意即多個進程(父子)開始時共享同一塊內存頁,但當某個進程企圖向共享頁寫入時,系統在進程的地址空間為該頁創建一個新的拷貝,以后進程各自用自己的私有頁。如果一直沒有對共享頁的寫操作,它們將一直共享該頁。其好處是增加速度并減少內存的使用。符合IX 標準,并且其原碼與 System V 及部分 BSD 相容。(注)所有的原碼都是可免費獲得的,包括所有的內核程序、驅動程序、開發工具程序、應用程序。支持多國語言。多重虛擬consoles :可使用熱鍵作更換。支持多種常見的文件系統:minix-1、
16、 Xenix、 System V filesystems、DOSFAT、OS/2 的HPFS(read-only)等,本身支持兩種 file system:EXT2 and XIAFS,且文件名長度可至 256 字。 “UMSDOS(Unix-like MSDOS)”: 可在 Dos partition支持各種標準 CD-ROM 格式,如 ISO 9660。中安裝 Linux。支持 TCP/IP 協議,包含 ftp、移植性好:支持大多的硬件安全可靠,受到世界尤其net、NFS 等。計算機界的廣泛關注認為,Linux操作系統的一次難得的機會。大廠商的支持:IBM、Oracle、Sybase 等都
17、在將自己的產品移植到Linux上。Linus Torvalds 說:“微軟總是強調性能只要過得去就行,并且他們的體積非常大, 而 Linux 卻是(并且也將一直是)強調技術問題。”選取 Linux 為分析對象。Linux 既不屬于 BSD 也不屬于 SVR,但它吸收了兩者的許多優點。事實上, Linux 的許多技術來源于 UNIX,因此,也可以說,Linux 既屬于 BSD 也屬于 SVR,它又沒有完全采用這兩者中的任何一種。有些技術,如Streams,在 Linux 中就沒有采用。二、分析內容作為一個通用的操作系統,Linux 包含很多內容,1、操作系統的定義也不能全部分析。廣義上說,操作系
18、統是整個的內容,包括:內核及其上的各種系統,如圖形界面、S、語言編譯器(gcc 等)、編輯器、瀏覽器等;狹義上說,操作系統就是內核。內核之外的都是應用程序。通常說的 Linux 操作系統指的就是Linux 內核,它由 Linus 本人“擁有”,由他直接不斷地開發、完善,該操作系統中真正屬于 GNU 的、Free 的部分也就是內核。Linux 的內核是只分析內核。2、Linux但作為一個操作系統不能只有內核,還需要有各種工具、以及建立在內核上的的、一致的。應用程序。在 Linux 內核上開發有許許多多的應用程序,這些應用程序有的是的、開放的,有的是私有的、成 Linux 的一個。Linux 的各
19、種的。在 Linux 內核上集成不同的應用,就構Slackware 較早的一個發布。Red Hat 已經成為最受歡迎的“零售”版本。Caldera 由德國的 Linux Support Team (LST)(現在是 Caldera 的一部分了)負責。Debian 是最老的系統之一,但是由于它是由為緩慢。S.u.S.E.是一個德國系統。進行開發的, 它的更新較這些采用的內核均是 Linux,只是上面集成的應用不同而已。嚴格地說,它們不能直接被叫做 Linux,而應叫做“以 Linux 為包”。在內核上集成進來什么,它就能做什么。3、Linux 版本的操作系統Linux 內核的版本號是由點隔開的三
20、個數字(A.BB.CC)。其中第一個數是內核的版本,現在用的是第三版(2.);第二個號碼是的主號,主號為偶數(包括 0)的版本是可以使用的穩定的版本,如 2.0.36,主號為奇數的版本是不一定穩定的測試版,如 2.1.26;最后一個號碼是次號,它因每一次改動而增加,如 2.0.8,表示它是內核 2.0,是穩定的內核,它已經是第九次了。Linus 本人Linux 內核新版本的開發,這些新版本的主號都是奇數(目前是2.3.xx),一旦他覺得內核變得穩定了,他就將主號改為偶數,(目前的是2.2.xx),并將其交給另外的小組,而后開始另一個版本的開發(目前是 2.3.xx)。本分析基于Linux 2.
21、0 版。(本書基于穩定的 2.0.30 源代碼)。Linux的版本隨者的不同而不同,與 Linux 內核的版本號相對獨立。發行中包含的應用的版本也與內核無關。例如,RedHat5.2 中包括:內核:Linux2.0.36;WWW Server:Apache 1.3.3;系統:Send_8.8.7;DNS:Bind 8.1.2; NEWS: inn 1.7.2; Xwindow:Xfree86 3.3.2; C 語言:gcc 2.7.2;相對于 FreeBSD 類操作系統,Linux 的巨大優勢就在于有 Linus。 他專注于內核,代碼和質量,幾乎完全避開政治。他讓其他人處理“用戶空間”(庫、編
22、譯器、以及包含在任何 Linux套件里的各種工具和應用程序。)從這種“溫和的核上帝”(在他以前者”模式中獲益把 Linus 看作是“Linux 內是一神教)。一無所有,而且就此而言當 Linus 最終退休時(這也許在死后很長時間才會發生),Linux 內核開發者們的希望就在于能一致接受一個繼任者一個新的溫和的者。那將是像 Alan Cox、Stephen Tdie 這樣的人,或將是名字頻繁出現在 Linux-kernelinglist 的某個人(對此我知道得并不多)。Linus 開玩笑地把他的女兒稱為Linus 2.0 和 3.0 (如果她們有并且精通技術,可能會建立一種世襲的寡頭政體)。讓過
23、 15 年后再看。三、分析方法最好是讀原碼,但原碼多而復雜,需要有指導,所以需要先看文檔。原則:看文檔+讀原碼。就是說,查看內核源程序是深入地理解 Linux 操作系統的一個富有成效的練習。參考文獻:1、Linux 有幾本電子文檔,如安裝指南、用戶手冊、管理員指南、指南等,其中有一本叫 Linux 內核(Linux Kernel),以此為藍本。可在許多站點找到,光盤上也有,還有中文翻譯,可在 http/原文。2、書店出售的書中有一本電子工業/上,但翻譯得很爛,建議讀的Linux 實用魏永明 楊飛月編著,其中有該文檔的部分翻譯,可參考。3、UNIX 高級等譯。系統技術(美)Uresh Vahal
24、ia 著,之 王4、網上、報上、雜志上的各種有關 Linux 的資料。四、The Linux Kernel Sour(Linux 內核源程序)下面是 Linux 內核源程序的概覽:它們如何組織,你應該從哪里開始查找特定的代碼等等。Where to Get The Linux Kernel Sour從哪里得到 Linux 內核源程序)所有主要的Linux(Craftworks,Debian,Slackware,RedHat 等等)中都有內核源程序。通常,安裝在你系統上的 Linux 內核都是用這些源程序建立的。實際上這些源程序顯得有些過時, 所以你可能希望得到的源程序。的源程序放在ftp:/ft
25、p.cs.helsinki.fi 和其它所有的鏡像的web 站點上。helsinki 的 web 站點,但是其它站點,例如 MIT 和 Sunsite 也不會太。如果你無法web,還有許多 CD ROM 廠家用非常合理的費用提供世界主要 web站點的快照(snapshots)。一些廠商甚至提供預訂服務,按季或月進行更新。你的本地的Linux 用戶組也是一個源程序的好的來源。對于內核源程序的改動是用 patch 文件分發的。工具 patch 可以對于一組源文件做一系列的修改。例如,如果你有 2.0.29 的源程序樹,而你希望轉移到 2.0.30,你可以先獲取 2.0.30 的 patch 文件,
26、然后把這些 patch(編輯)應用到 2.0.29 源程序樹上:$ cd /usr/src/linux$ patch -p1 patch-2.0.30這樣可以不用拷貝整個源程序樹,特別對于慢速的串行連接。一個內核補丁(正式和非正式的)的好來源是 http。How The Kernel SourAre Arranged(內核源程序如何組織)在源程序樹的最上層你會看到一些目錄:archarch 子目錄包括所有和體系結構相關的內核代碼。它還有更深的子目錄,每一種支持的體系結構,例如 i386 和 alpha。一includeinclude 子目錄包括編譯內核所需要的大部分 include 文件。它也
27、有更深的子目錄,每一個支持的體系結構一個。include/asm 是這系結構所需要的真實的include 目錄的軟,例如 include/asm-i386。為了改變體系結構,你需要編輯內核的 makefile 文件,并重新運行 Linux 的內核配置程序。init這個目錄包含內核的初始化代碼,這是研究內核如何工作的一個非常好的起點。mm這個目錄包括所有的內存管理代碼,包括內核內存管理和虛擬內存管理。但和體系結構相關的內存管理代碼則位于arch/*/mm/,例如 arch/i386/mm/fault.c。 drivers系統所有的設備驅動程序都在這個目錄中。它們又按設備驅動程序類被劃分成多個子目
28、錄,例如block、pci、net 等。ipc這個目錄包含內核的進程間通訊的代碼,共享內存、信號燈、消息隊列等。modules這只是一個用來存放建立好的模塊的目錄。通常為空。fs所有的文件系統的代碼。它又被劃分成子目錄,每一個支持的文件系個,例如 vfat 和ext2。kernel主要的內核代碼,如進程的創建、終止、調度,以及信號、時鐘等。同樣,和體系結構相關的內核代碼放在 arch/*/kernel 中。net內核的網絡代碼,包括 TCP/IP 協議、Socket 以及相關的內容。lib這個目錄放置內核的庫代碼,如 vsprf、串處理函數、解壓縮函數等。和體系結構相關的庫代碼在 arch/*
29、/lib/中。scripts這個目錄包含(例如awk 和 tk),用于配置內核。Where to Start Looking(從哪里開始看)看像 Linux 內核這么巨大而復雜的程序是相當的。它就像一個巨大的線球,顯示不出終點。看內核的一部分代碼通常會被引到查看其它幾個相關的文件,你就會忘記你最初要看的是什么。下一節給你一個提示,對于一個給定的,最好看源程序樹的那個地方。1、System Startup and Initialization(系統啟動和初始化)在一個 el 系統上,當 loadlin.exe 或 LILO 把內核加載到內存并把控制權交給它的時候,內核開始啟動。有關這一部分可看
30、arch/i386/kernel/head.S。head.S 執行一些和體系結構相關的設置工作,然后跳到 init/main.c 中的 main()例程。2、Memory Management(內存管理)這部分代碼大多在 mm 中,但和體系結構相關的代碼則在 arch/*/mm 中。Page fault處理代碼在 mm/memory.c 中,內存和頁緩存代碼在 mm/filemap.c 中。Buffer cache 在mm/buffer.c 中實現,交換緩存在 mm/swap_se.c 和mm/swapfile.c 中。3、Kernel大部分相對通用的代碼在 kernel,而和體系結構相關的代
31、碼則在 arch/*/kernel 中。調度程序在 kernel/sched.c , fork 代碼在 kernel/fork.c 。 bottom half 處理代碼在 include/linux/ errupt.h。task_struct 數據結構可以在 include/linux/sched.h 中找到。4、PCIPCI 偽驅動程序在 drivers/pci/pci.c,系統范圍的定義在 include/linux/pci.h。每一種體系結構都有一些特殊的 PCI BIOS 代碼,Alpha AXP 的位于 arch/alpha/kernel/bios32.c。5、ros Communi
32、cation全部在 ipc 目錄。所有 System V IPC 對象都包括在 ipc_perm 數據結構中,并可以在include/linux/ipc.h 中找到。System V 的消息在 ipc/msg.c 中實現,共享內存在 ipc/shm.c 中,信號燈在 ipc/sem.c,管道在 ipc/pipe.c 中實現。6、errupndling內核的中斷處理代碼幾乎都是和微處理器(通常也和代碼在 arch/i386/kernel/irq.c 它的定義在 incude/asm-i386/irq.h。7、Device Drivers(設備驅動程序)相關的。 el 中斷處理Linux 內核源代碼的大部分代碼行在它的設備驅動程序中。Linux 所有的設備驅動程序源代碼都在 drivers 子目錄中,它們又被進一步分類:/block塊設備驅動程序,比如 ide(ide.c)。如果你希望查看所有可能包含文件系統的設備是如何初始化的,你可以看 drivers/block/genhd.c 中的 device_setup()。它不僅初始化硬盤,也初始化網絡,因為當安裝 nfs 文件系統的時候需要網絡。塊設備包括基于
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浴場防水施工方案
- 《在挫折種成長》主題班會教學設計
- 《運算律-乘法分配律》(教學設計)-2024-2025學年四年級上冊數學北師大版
- 人教版一年級上冊9加幾第1課時教學設計
- 內江2024年四川內江隆昌市考(選)調機關事業單位工作人員16人筆試歷年參考題庫附帶答案詳解
- 乳制品蛋白項目可行性研究報告(范文參考)
- 佛山廣東佛山市白燕小學面招聘臨聘教師筆試歷年參考題庫附帶答案詳解
- 伊春2024下半年黑龍江伊春市事業單位招聘272人筆試歷年參考題庫附帶答案詳解
- 亳州2024年安徽亳州利辛縣第二人民醫院招聘臨時護理人員10人筆試歷年參考題庫附帶答案詳解
- 化工管網施工方案
- 《愛彌兒》讀書分享會
- 預后的研究與評價
- 中醫治療潰瘍性結腸炎的難點及優勢課件
- 人教版七年級上冊英語單詞表
- 建筑電工培訓課件
- 中班語言課件《章魚先生賣雨傘》
- 2023年成都市錦江區九年級二診語文試題(含答案)
- 感染性疾病臨床診療規范2021版
- 2023年承德縣小升初英語考試題庫及答案解析
- DL-T 748.8-2021 火力發電廠鍋爐機組檢修導則 第8部分:空氣預熱器檢修
- 2023年中石油職稱英語考試通用選讀
評論
0/150
提交評論