版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、東北大學秦皇島分校計算機與通信工程學院操作系統(tǒng)課程設計設計題目Linux中的虛擬文件系統(tǒng)的分析專業(yè)名稱計算機科學與技術班級學號學生姓名黎楠指導教師王翠榮設計時間2018年01月01日一2018年01月12日課程設計任務書專業(yè):計算機科學與技術學號:學生姓名(簽名):1. 設計題目:Linux中的虛擬文件系統(tǒng)的分析與進程管理器一、設計實驗條件綜合樓1208、1210實驗室二、設計任務及要求Linux中的虛擬文件系統(tǒng)的分析;進程管理器;三、設計報告的內(nèi)容設計題目與設計任務(設計任務書)題目一:Linux中的虛擬文件系統(tǒng)的分析要求:虛擬文件系統(tǒng)(VFS)是物理文件系統(tǒng)與服務之間的一個接口層。試說明它
2、與物理文件系統(tǒng)有何關系,以及VFS超級塊地實現(xiàn)方法;題目二:進程管理器要求:在Linux或Windows系統(tǒng)環(huán)境下,實現(xiàn)一個系統(tǒng)進程管理器,能夠顯示當前系統(tǒng)的活動進程信息(進程名、用戶、優(yōu)先級、內(nèi)存使用等),并能結束或創(chuàng)建特定進程??蓞⒖糤indows下任務管理器”功能。2. 前言(緒論)(設計的目的、意義等)任何一個操作系統(tǒng)都是基于文件系統(tǒng)之上的,在Linux操作系統(tǒng)中下的文件系統(tǒng)主要可分為三大塊:一是上層的文件系統(tǒng)的系統(tǒng)調(diào)用,二是虛擬文件系統(tǒng)VFS(VirtualFilesystemSwitch),三是掛載到VFS中的各實際文件系統(tǒng),例如ext2,jffs等。VFS處于文件系統(tǒng)的使用者與具
3、體的文件系統(tǒng)之間,將兩者隔離開來。這種引入一個抽象層次的設計思想,即“上層不依賴于具體實現(xiàn),而依賴于接口;下層不依賴于具體實現(xiàn),而依賴于接口”,就是著名的“依賴反轉(zhuǎn)”,它在Linux內(nèi)核中隨處可見。所以對VFS與物理文件系統(tǒng)之間關系的分析以及VFS超級塊的實現(xiàn)方法顯得格外重要。而正是因為虛擬文件系統(tǒng)的存在,跨文件系統(tǒng)的文件操作才能得以實現(xiàn)。對虛擬文件系統(tǒng)的分析將有助丁我們對Linux文件系統(tǒng)的學習,同時對深入理解Linux操作系統(tǒng)有很大幫助。設計主體(各部分設計內(nèi)容、分析、結論等)3.1.Linux中的虛擬文件系統(tǒng)的分析【題目分析】虛擬文件系統(tǒng)(VirtualFileSystem,簡稱VFS)
4、,是Linux內(nèi)核中的一個軟件層,用丁給用戶空間的程序提供文件系統(tǒng)接口;同時,它也提供了內(nèi)核中的一個抽象功能,允許不同的文件系統(tǒng)共存。系統(tǒng)中所有的文件系統(tǒng)不但依賴VFS共存,而且也依靠VFS協(xié)同工作。VFS支持的文件系統(tǒng)可以分為3種類型:基丁磁盤的文件系統(tǒng)、網(wǎng)絡文件系統(tǒng)、特殊文件系統(tǒng)(虛擬文件系統(tǒng))。為了能夠支持各種實際文件系統(tǒng),VFS定義了所有文件系統(tǒng)都支持的基本的、概念上的接口和數(shù)據(jù)結構;同時實際文件系統(tǒng)也提供VFS所期望的抽象接口和數(shù)據(jù)結構,將自身的諸如文件、目錄等概念在形式上與VFS的定義保持一致。換句話說,一個實際的文件系統(tǒng)想要被Linux支持,就必須提供一個符合VFS標準的接口,才
5、能與VFS協(xié)同工作。實際文件系統(tǒng)在統(tǒng)一的接口和數(shù)據(jù)結構下隱藏了具體的實現(xiàn)細節(jié),所以在VFS層和內(nèi)核的其他部分看來,所有文件系統(tǒng)都是相同的。圖1VFS在內(nèi)核中與其他的內(nèi)核模塊的協(xié)同關系【VFS與物理文件系統(tǒng)的關系】Linux的VFS位于Linux整個文件系統(tǒng)的最上層,是一種軟件機制,提供文件系統(tǒng)對用戶命令、系統(tǒng)調(diào)用及內(nèi)核其他模塊的統(tǒng)一接口,負責管理并控制下層的邏輯文件系統(tǒng),使它們按照各自特定的模式正常運轉(zhuǎn),同時能夠?qū)τ脩籼峁┍M可能相同的表現(xiàn)形式。VFS是物理文件系統(tǒng)與服務之間的一個接口層,它對Linux的每個文件系統(tǒng)的所有細節(jié)進行抽象,使得不同的文件系統(tǒng)在Linux核心以及系統(tǒng)中運行的進程看來都
6、是相同的。嚴格的說,VFS并不是一種實際的文件系統(tǒng)。它只存在于內(nèi)存中,并沒有真正存在于磁盤分區(qū)中,磁盤分區(qū)存放的是邏輯文件系統(tǒng)的內(nèi)容,所有VFS的數(shù)據(jù)結構都是在系統(tǒng)啟動之后才建立完成,并在系統(tǒng)關閉時撤銷。同時,它必須和其他實際存在于磁盤的文件系統(tǒng),比如Linux默認的ext2或者WindowsNT的NTFS等邏輯文件系統(tǒng)一起,才能構成一個完整的文件系統(tǒng)。VFS對邏輯文件系統(tǒng)進行抽象,采用統(tǒng)一的數(shù)據(jù)結構在內(nèi)存中描述所有這些文件系統(tǒng),接受用戶層的系統(tǒng)調(diào)用和核心層其他模塊的訪問,通過VFS操作函數(shù),按照一定的映射關系,把這些訪問重新定向到邏輯文件系統(tǒng)中相應的函數(shù)調(diào)用,然后由邏輯文件系統(tǒng)來完成真正的具
7、體操作。這樣,VFS只負責處理設備無關的操作,主要是進行具體操作的映射關系。正是VFS的這種抽象的功能層次,保證了Linux系統(tǒng)可以支持多種不同的邏輯文件系統(tǒng),所有文件系統(tǒng)都具有基本相同的外部表現(xiàn),而且可以方便地進行相互訪問。針對下層的邏輯文件系統(tǒng),Linux系統(tǒng)中的VFS為它們提供一致的接口,統(tǒng)一管理各種邏輯文件系統(tǒng),包括進行文件系統(tǒng)的注冊和注銷、安裝和卸載等,提供限額機制,對用戶存儲空間進行有效的控制。對文件操作進行適當?shù)霓D(zhuǎn)換,轉(zhuǎn)交由具體的邏輯文件系統(tǒng)進行處理,然后把具體的操作結果提供給上層的調(diào)用者。針對上層,VFS為用戶層函數(shù)調(diào)用和內(nèi)核其他模塊的訪問提供接口,接受訪問并返回由具體邏輯文件
8、系統(tǒng)完成的結果。此外,VFS還負責管理文件系統(tǒng)的各種緩沖區(qū),保證文件系統(tǒng)的整體效率。從本質(zhì)上講,文件系統(tǒng)是特殊的數(shù)據(jù)分層存儲結構,它包含文件、目錄和相關的控制信息。為了描述這個結構,Linux引入了一些基本概念:文件一組在邏輯上具有完整意義的信息項的系歹0。在Linux中,除了普通文件,其他諸如目錄、設備、套接字等也以文件被對待??傊?,“一切皆文件”。目錄目錄好比一個文件夾,用來容納相關文件。因為目錄可以包含子目錄,所以目錄是可以層層嵌套,形成文件路徑。在Linux中,目錄也是以一種特殊文只供學習與交流件被對待的,所以用丁文件的操作同樣也可以用在目錄上。目錄項在一個文件路徑中,路徑中的每一部分
9、都被稱為目錄項;如路徑/home/source/helloworld.c中,目錄/,home,source和文件helloworld.c者8是一個目錄項。索引節(jié)點用丁存儲文件的元數(shù)據(jù)的一個數(shù)據(jù)結構。文件的元數(shù)據(jù),也就是文件的相關信息,和文件本身是兩個不同的概念。它包含的是諸如文件的大小、擁有者、創(chuàng)建時間、磁盤位置等和文件相關的信息。超級塊用丁存儲文件系統(tǒng)的控制信息的數(shù)據(jù)結構。描述文件系統(tǒng)的狀態(tài)、文件系統(tǒng)類型、大小、區(qū)塊數(shù)、索引節(jié)點數(shù)等,存放丁磁盤的特定扇區(qū)中。VFS依靠四個主要的數(shù)據(jù)結構和一些輔助的數(shù)據(jù)結構來描述其結構信息,這些數(shù)據(jù)結構表現(xiàn)得就像是對象;每個主要對象中都包含由操作函數(shù)表構成的操
10、作對象,這些操作對象描述了內(nèi)核針對這幾個主要的對象可以進行的操作。下圖就是邏輯上對VFS及其下層實際文件系統(tǒng)的組織圖,可以看到用戶層只能丁VFS打交道,而不能直接訪問實際的文件系統(tǒng),比如EXT2、EXT3、PROC,換句話說,就是用戶層不用也不能區(qū)別對待這些真正的文件系統(tǒng),不過,SOCKET雖然也屆丁VFS的管轄范圍,但是有其特殊性,就是不能像打開大部分文件系統(tǒng)下的“文件”一樣打開socket,它只能被創(chuàng)建,而且內(nèi)核中對其有特殊性處理。intfd=open()intfd=socket。UserKernel圖3邏輯上對VFS及其下層實際文件系統(tǒng)的組織圖【超級塊的實現(xiàn)方法】VFS描述文件系統(tǒng)使用超
11、級塊和inode的方式,所謂超級塊就是對所有文件系統(tǒng)的管理機構,每種文件系統(tǒng)都要把自己的信息掛到super_blocks這么一個全局鏈表上。內(nèi)核中是分成2個步驟完成:首先每個文件系統(tǒng)必須通過register_filesystem函數(shù)將自己的file_system_type掛接至Ufile_systems這個全局變量上,然后調(diào)用kern_mount函數(shù)把自己的文件相關操作函數(shù)集合表掛到super_blocks上。每種文件系統(tǒng)類型的讀超級塊的例程(get_sb)必須由自己實現(xiàn)。super*sop?uper_bloct(指向后皿的VFS管理孱具體的文件系疏層fifeexl3fst網(wǎng)Eock_fs_l
12、ipcg«_st>_pseudo傘句啟面的義件系統(tǒng)矣墮sock#i_<p4圖4超級塊的實現(xiàn)wchallockiodc,(testrt>Linode存儲一個已安裝的文件系統(tǒng)的控制信息,代表一個已安裝的文件系統(tǒng);每次一個實際的文件系統(tǒng)被安裝時,內(nèi)核會從磁盤的特定位置讀取一些控制信息來填充內(nèi)存中的超級塊對象。一個安裝實例和一個超級塊對象對應。超級塊通過其結構中的一個域s_type記錄它所屆的文件系統(tǒng)類型。VFS超級塊是各種邏輯文件系統(tǒng)在安裝時建立的,并在這些文件系統(tǒng)卸載時自動刪除,它只存在于內(nèi)存中。VFS中保存了系統(tǒng)中掛接的文件系統(tǒng)的鏈表以及這些文件系統(tǒng)對應的VFS超級塊
13、。系統(tǒng)啟動后所有被初始化的文件系統(tǒng)都要向VFS登記。每個已安裝的文件系統(tǒng)由一個VFS超塊表示,它包含如下信息:Device:表示文件系統(tǒng)所在塊設備的設備標志符。例如系統(tǒng)中第一個IDE硬盤的設備標志符為0x301oInodepointers這個mountedinode指針指向文件系統(tǒng)中第一個inode。而coveredinode指針指向此文件系統(tǒng)安裝目錄的inode。根文件系統(tǒng)的VFS超塊不包含covered指針。(3)Blocksize:以字節(jié)記數(shù)的文件系統(tǒng)塊大小,如1024字節(jié)。Superblockoperations指向此文件系統(tǒng)一組超塊操縱例程的指針。這些例程被VFS用來讀寫inode和
14、超塊。FileSystemtype:這是一個指向已安裝文件系統(tǒng)的file_system_type結構的指針。FileSystemspecific:指向文件系統(tǒng)所需信息的指針。一個超級塊對應一個文件系統(tǒng)(已經(jīng)安裝的文件系統(tǒng)類型如ext2,此處是實際的文件系統(tǒng))。之前我們已經(jīng)說了文件系統(tǒng)用于管理這些文件的數(shù)據(jù)格式和操作之類的,系統(tǒng)文件有系統(tǒng)文件自己的文件系統(tǒng),同時對于不同的磁盤分區(qū)也有可以是不同的文件系統(tǒng)。那么一個超級塊對應一個獨立的文件系統(tǒng),保存文件系統(tǒng)的類型、大小、狀態(tài)等等。(“文件系統(tǒng)”和“文件系統(tǒng)類型”是不同的概念,一個文件系統(tǒng)類型下可以包括很多文件系統(tǒng)即很多的super_block)對于
15、不同的文件系統(tǒng)有不同的super_block,對于不同的super_block的操作也是不同的,所以我們在下面的super_block結構中可以看到上面說的抽象的struct結構(例如下面的:structsuper_operations)(linux內(nèi)核2.4.37)<panstyle=.;>Struct5uper_block746structlist_heads_list;747kd«u_ts_dev;74怠unziQHd*ong.£_block£lzei749unsignetcharsblocksizebits:750unsignedchars_d
16、irt;751unsignedLorialongs_maKbytes;752structfile_system_type*s_type;753structsjper_operations*s_op;754structdquot_operations*dq_ap;7SSstructqjotactl_ops*s_qcop;756unsignedlongs_flags;757unsignedlongs_magic;75&structdentry*5_rocrt;759structrw_semapfiares_umount;760structsemaphores_lock;761£n
17、tscount;752763atomics_active;/W-structj-isr_neads_dirty;765structlist_hcads_locked_inodes;766767structlist-hedds_-Files;768structdlock_detfice*5_bdev;769structlist_lieads_instance5;770771structquot3_11£0s_dquot;772union773structminlx_sb_tnfominiK_5b;774structex±2_sb_inrfoext775structe)ct3_
18、sb_infoext3_sb;776structhpf5_5b_infohpf5_5t>;777structntfs_與5_土nfontFs_sbi778structm5do5_sb_infom5dos_sb;779structisof5_sb_infoi50f5_5tl;7S6structnfs_sb_irfonfs_sbj781structsysriifosysvsb7B2structaffsK-inf口affs_st>783structufs_sb_infofs_sbi7B4structe-Fs_sbi_iri-F&7B5structshm&m_st>_
19、info&hn>ein_st;786structroitfs_sb_inforonrFs_sb;787structsmb_5bi_infosmt>fs_sbi7B8structhfs_sb_lnfohf£_sb;7B9structadfs_sb_infoadfs_5t>j7&estructqnx4_sb_inf&qn<4_sb;791structr&iserfs_sb_infa792structbfssbinfotrFssb;793structudf_sb_infod_sb;7驅(qū)structncp_sb_infoncpf
20、3;_sb;795structusbdev_£b_infousbdevf£_£bj796structjffs2_3t>_in-Foj肝睥_拆;797structcrantfs_sfa_infocramf5_5b;798void*eeneric_sbp;799u;nnnf物S05structsemaphores_vfs_rename_Eem;structsemaphores_nfsd_free_path_sem;j</span>圖5Structsuper_operations解釋字段:s_list:指向超級塊鏈表的指針,這個structlist_h
21、ead是很熟悉的結構了,里面其實就是用丁連接關系的prev和next字段。內(nèi)核中的結構處理都是有講究的(內(nèi)核協(xié)議棧中也說過),內(nèi)核單獨使用一個簡單的結構體將所有的super_block都鏈接起來,但是這個結構不是super_block本身,因為本身數(shù)據(jù)結構太大,效率不高,所有僅僅使用structlist_headprev;list_headnext;這樣的結構來將super_block中的s_list鏈接起來,那么遍歷到s_list之后,直接讀取super_block這么長的一個內(nèi)存塊,就可以將這個super_block直接讀進來!這樣就很快捷方便!這也是為什么s_list必須放在第一個字段的
22、原因。s_dev:包含該具體文件系統(tǒng)的塊設備標識符。例如,對丁/dev/hda1,其設備標識符為0x301s_blocksize:文件系統(tǒng)中數(shù)據(jù)塊大小,以字節(jié)單位s_blocksize_bits:上面的size大小占用位數(shù),例如512字節(jié)就是9bitss_dirt:臟位,標識是否超級塊被修改s_maxbytes:允許的最大的文件大小(字節(jié)數(shù))structfile_system_type*s_type:文件系統(tǒng)類型(也就是當前這個文件系統(tǒng)屆丁哪個類型?ext2還是fat32)要區(qū)分艾件系統(tǒng)”和艾件系統(tǒng)類型”不一樣!一個文件系統(tǒng)類型下可以包括很多文件系統(tǒng)即很多的super_block,后面會說!s
23、tructsuper_operations*s_op:指向某個特定的具體文件系統(tǒng)的用丁超級塊操作的函數(shù)集合structdquot_operations*dq_op:指向某個特定的具體文件系統(tǒng)用丁限額操作的函數(shù)集合structquotactl_ops*s_qcop:用丁配置磁盤限額的的方法,處理來自用戶空間的請求s_flags:安裝標識s_magic:區(qū)別丁其他文件系統(tǒng)的標識s_root:指向該具體文件系統(tǒng)安裝目錄的目錄項s_umount:對超級塊讀寫時進行同步s_lock:鎖標志位,若置該位,則其它進程不能對該超級塊操作s_count:對超級塊的使用計數(shù)s_active:引用計數(shù)s_dirty
24、:已修改的索引節(jié)點inode形成的鏈表,一個文件系統(tǒng)中有很多的inode,有些inode節(jié)點的內(nèi)容會被修改,那么會先被記錄,然后寫回磁盤。s_locked_inodes:要進行同步的索引節(jié)點形成的鏈表s_files:所有的已經(jīng)打開文件的鏈表,這個file和實實在在的進程相關的s_bdev:指向文件系統(tǒng)被安裝的塊設備u:u聯(lián)合體域包括屆丁具體文件系統(tǒng)的超級塊信息s_instances:具體的意義后來會說的?。ㄍ活愋偷奈募到y(tǒng)通過這個子墩將所有的super_block連接起來)s_dquot:磁盤限額相關選項super_block存在丁兩個鏈表中,一個是系統(tǒng)所有super_block的鏈表,一個
25、是對丁特定的文件系統(tǒng)的super_block鏈表。所有的super_block都存在丁super_blocks(VFS管理層)鏈表中:superblock+1«11spinodes"1J-s.files:111sJs_info!11supei'_hlflcksupet*_hlocts_filesI+Is_dirtyiS_pp«=4s_fs_infoIsFilesI:+s_dirtyI圖6超級塊與VFS管理層鏈表對丁特定的文件系統(tǒng)(文件系統(tǒng)層的具體文件系統(tǒng)),該文件系統(tǒng)的所有的super_block都存在丁file_sytem_type中的fs_supers
26、鏈表中;而所有的文件系統(tǒng)都存在丁file_systems鏈表中.這是通過調(diào)用register_filesystem接口來注冊文件系統(tǒng)的。intregister_filesystem(structfile_system_type*fs)圖7文件系統(tǒng)層的具體文件系統(tǒng)的超級塊3.2.進程管理器【任務描述】在Windows系統(tǒng)環(huán)境下,實現(xiàn)一個系統(tǒng)進程管理器,能夠顯示當前系統(tǒng)的活動進程信息(進程名、進程ID、優(yōu)先級、線程數(shù)、內(nèi)存使用等),并能結束或創(chuàng)建特定的進程?!驹创a】Forml:usingSystem;usingSystem.Collections.Generic;usingSystem.Comp
27、onentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Threading;usingSystem.Diagnostics;usingSystem.Management;namespace進程管理器publicpartialclassForm1:FormpublicForm1()InitializeComponent();this.listView1.Columns.Add("進程名",65,HorizontalAlignme
28、nt.Center);this.listView1.Columns.Add("進程ID",65,HorizontalAlignment.Center);this.listView1.Columns.Add("線程數(shù)",65,HorizontalAlignment.Center);this.listView1.Columns.Add(”優(yōu)先級",65,HorizontalAlignment.Center);this.listView1.Columns.Add("占用內(nèi)存",65,HorizontalAlignment.Cent
29、er);this.listView1.View=System.Windows.Forms.View.Details;privatevoidgetProcessInfo()(try(listView1.Items.Clear();ProcessMyProcesses=Process.GetProcesses();listView1.Items.Clear();ProcessAllProcesses=ProcessGetProcesses();foreach(ProcessMyProcessinAllProcesses)(ListViewItemitem1=newListViewItem(MyPr
30、ocess.ProcessName+".exe”,0);映像名稱/iteml.Checked=true;item1.SubItems.Add(MyProcess.Id.ToString();進程PIDitem1.SubItems.Add(MyProcess.BasePriority.ToString();優(yōu)先級item1.SubItems.Add(MyProcess.Threads.Count.ToString();線程數(shù)item1.SubItems.Add(MyProcess.WorkingSet64/1024).ToString()+"K");/內(nèi)存大小lis
31、tView1.Items.AddRange(newListViewItem(item1);catch(privatevoidForm1_Load(objectsender,EventArgse)(getProcessInfo();privatevoidbutton1_Click(objectsender,EventArgse)(listView1.Refresh();getProcessInfo();privatevoidbutton3_Click(objectsender,EventArgse)if(listView1.SelectedItems.Count<=0)return;Lis
32、tViewItemitems=listView1.SelectedItems0;stringStrPro=items.Text;獲取選中的進程名intpid=int.Parse(items.SubItems1.Text);/獲取選中的進程的PIDProcessSelPro=newProcess();intflag=0;/異常標志。如果Process.GetProcessById(pid)出現(xiàn)異常,不執(zhí)行結束.trySelPro=Process.GetProcessById(pid);catch(ArgumentExceptionae)flag+;MessageBox.Show(ae.Messa
33、ge);if(0=flag)if(DialogResult.OK=MessageBox.Show(string.Format("確定要結束進程0嗎?",StrPro),"提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)trySelPro.Kill();結束進程getProcessInfo();結束進程后刷新listviewcatch(Win32Exceptionioe)/獲取異常信息MessageBox.Show(ioe.Message);catch(InvalidOperationEx
34、ceptionioe)MessageBox.Show(ioe.Message);button1_Click(sender,e);privatevoidlistView1_SelectedIndexChanged(objectsender,EventArgse)privatevoidbutton2_Click(objectsender,EventArgse)Form2dlg=newForm2();if(dlg.ShowDialog()=DialogResult.OK)tryProcessStart(dlg.FileName);catch(System.ComponentModel.Win32Ex
35、ception)(MessageBox.Show(String.Format("can'tfindthefiles'0',pleasemakesureofthenameoffilesthentryagain。npressstarttosearchfiles",dlg.FileName);button1_Click(sender,e);Form2:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Draw
36、ing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Management;namespace進程管理器publicpartialclassForm2:FormpublicForm2()InitializeComponent();StartPosition=FormStartPosition.CenterParent;privatevoidbutton1_Click(objectsender,EventArgse)(DialogResult=DialogResult.OK;privatevoidbutton2_Click(objectsender,EventArgse)(DialogResult=DialogResult.Cancel;privatevoidbutton3_Click(objectsender,EventArgse)(OpenFileDialogdlg=newOpenFileDialog();dlg.Filter="program|*.exe|"+"allfiles|*.*"if(dlg.ShowDialog()=DialogResult.OK)(boBox1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024專利知識產(chǎn)權合同
- 2024五星級酒店食品供應與采購勞務合同
- 2024外架搭設合同
- 2024軟件項目委托開發(fā)合同
- 2024年度旅游景點開發(fā)合作協(xié)議
- 2024年度安置房買賣合同中的違約責任
- 2024年度新能源項目開發(fā)建設合同
- 文書模板-充電樁股份轉(zhuǎn)讓合同
- 2024年度貨物買賣合同商品描述與支付方式詳解
- 2024年幼兒園教育聯(lián)盟協(xié)議
- 氯酸鹽行業(yè)分析
- 國開電大 可編程控制器應用實訓 形考任務6實訓報告
- GB/T 34120-2023電化學儲能系統(tǒng)儲能變流器技術要求
- 跨國企業(yè)中方外派人員的跨文化適應
- 《道路交叉設計》課件
- 《活著》讀后感-課件
- 體檢報告匯總分析中風險的防范
- 村里建群管理制度
- 【城市軌道交通運營安全管理研究5300字】
- 2024年中核匯能有限公司招聘筆試參考題庫含答案解析
- 上海市2024屆高三7月模擬預測歷史試題(等級考)(解析版)
評論
0/150
提交評論