




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 Linux操作系統(tǒng)作業(yè)報告學(xué) 號: 110410430 姓 名: 孫宏碩 任課教師: 閆健恩 1 / 111 shell編程1)編寫shell腳本,針對指定源目錄,對所有的文件進(jìn)行移動到指定目的目錄的操作,每個文件都要提示用戶是否要移動;10分2)編寫一個shell腳本,刪除指定目下所有的文件夾(如子文件夾不為空也要刪除);10分3)編寫一個腳本,可以完成多個網(wǎng)卡(每次配置一塊,分多次配置)的ip地址、網(wǎng)關(guān)、dns、掩碼的設(shè)置,并立即使其生效。10分(1) :#! /bin/bashif -d $1 thenfor i in ls $1doif -d $i thenecho $icd $1e
2、cho "move $i ?(Y or N)"read jcase $j in y)mv $i $2; n)echo "next"esac elsecd $1echo "move $i ?(Y or N) "read jcase $j iny)mv $i $2;n)echo "next" EsacFidoneElseecho "ERROR"fi#end(2) :#!/bin/bashcd $1for i in ls $1doif -d $i thenrm -rf $ielif -f $i the
3、nrm $ielseecho "ERROR"fidone#end(3) :#!/bin/bashnum=$ ifconfig -a | egrep -o "eth0-9|inet addr:0-9+.0-9+.0-9+.0-9+" | sed "s/inet addr:/t/g"echo your new network card ip are below:echo $numifconfig eth0 $1 netmask $2 uproute add default gw $3echo $4 >>/ect/resolv.
4、confnum2=$ ifconfig -a | egrep -o "eth0-9|inet addr:0-9+.0-9+.0-9+.0-9+" | sed "s/inet addr:/t/g"echo $num2二 ext2文件系統(tǒng)原理Ext2是 GNU/Linux 系統(tǒng)中標(biāo)準(zhǔn)的文件系統(tǒng),其特點為存取文件的性能極好,對于中小型的文件更顯示出優(yōu)勢,這主要得利于其簇快取層的優(yōu)良設(shè)計?,F(xiàn)已經(jīng)有ext3,ext4等。相比于windows支持的FAT16 FAT32 及NTFS文件系統(tǒng),ext2文件系統(tǒng)支持鏈接文件。在ext2文件系統(tǒng)中,文件由inode(包含有
5、文件的所有信息)進(jìn)行唯一標(biāo)識。一個文件可能對應(yīng)多個文件名,只有在所有文件名都被刪除后,該文件才會被刪除。此外,同一文件在磁盤中存放和被打開時所對應(yīng)的inode是不同的,并由內(nèi)核負(fù)責(zé)同步。ext2文件系統(tǒng)采用三級間接塊來存儲數(shù)據(jù)塊指針, 并以塊(block,默認(rèn)為1KB)為單位分配空間。其磁盤分配策略是盡可能將邏輯相鄰的文件分配到磁盤上物理相鄰的塊中,并盡可能將碎片分配給盡量少的 文件,以從全局上提高性能。ext2文件系統(tǒng)將同一目錄下的文件(包括目錄)盡可能的放在同一個塊組中,但目錄則分布在各個塊組中以實現(xiàn)負(fù)載均衡。在擴展文件時,會盡量一次性擴展8個連續(xù)塊給文件(以預(yù)留空間的形式實現(xiàn))。 由以下
6、幾部分組成: 1 超級快(存儲了該文件系統(tǒng)最基本的信息,如塊大小,塊組中的塊數(shù)目等) 2 塊組描述符(描述了所有塊的屬性) 3 塊位圖和inode位圖 塊位圖和inode位圖的每一位分別指出塊組中對應(yīng)的那個塊或inode是否被使用。 4 inode表 inode表用于跟蹤定位每個文件,包括位置、大小等(但不包括文件名),一個塊組只有一個inode表。5、數(shù)據(jù)塊 數(shù)據(jù)塊中存放文件的內(nèi)容,包括目錄表、擴展屬性、符號鏈接等。三 linux內(nèi)核源碼安裝Linux內(nèi)核(kernel),是linux最核心的部分,實現(xiàn)管理存儲器,文件,外設(shè),和系統(tǒng)資源等。 (1)下載linux內(nèi)核源碼 https:/www
7、./在該網(wǎng)站下載linux源代碼,在ubuntu9.10版本中內(nèi)核版本為2.6.31-14可以再/usr/src中查看而linux-headers-2.6.31-14-generic是我們ubuntu使用的源碼文件,進(jìn)入該目錄然后使用 make menuconfig配置內(nèi)核然后使用make命令生成鏡像使用make modules生成模塊 完成安裝后,編譯好的內(nèi)核模塊會從內(nèi)核源代碼目錄拷貝至/lib/modules下面。最后使用mkinitrd lnitrd-2.6.31-14Linux內(nèi)存管理物理地址 用于內(nèi)存芯片級的單元尋址,與處理器和CPU連接的地址總線相對應(yīng)。這個概念
8、應(yīng)該是這幾個概念中最好理解的一 個,但是值得一提的是,雖然可以直接把物理地址理解成插在機器上那根內(nèi)存本身,把內(nèi)存看成一個從0字節(jié)一直到最大空量逐字節(jié)的編號的大數(shù)組,然后把這個數(shù) 組叫做物理地址,但是事實上,這只是一個硬件提供給軟件的抽像,內(nèi)存的尋址方式并不是這樣。所以,說它是“與地址總線相對應(yīng)”,是更貼切一些,不過拋開對 物理內(nèi)存尋址方式的考慮,直接 把物理地址與物理的內(nèi)存一一對應(yīng),也是可以接受的。也許錯誤的理解更利于形而上的抽像。虛擬內(nèi)存這是對整個內(nèi)存(不要與機器上插那條對上號)的抽像描述。它是相對于物理內(nèi)存來講的,可以直接理解成“不直實的”,“假的”內(nèi)存,例如,一個0x08000000內(nèi)存
9、地址,它并不對就物理地址上那個大數(shù)組中0x08000000 - 1那個地址元素;之所以是這樣,是因為現(xiàn)代操作系統(tǒng)都提供了一種內(nèi)存管理的抽像,即虛擬內(nèi)存(virtual memory)。進(jìn)程使用虛擬內(nèi)存中的地址,由操作系統(tǒng)協(xié)助相關(guān)硬件,把它“轉(zhuǎn)換”成真正的物理地址。這個“轉(zhuǎn)換”,是所有問題討論的關(guān)鍵。有了這樣的抽 像,一個程序,就可以使用比真實物理地址大得多的地址空間。(拆東墻,補西墻,銀行也是這樣子做的),甚至多個進(jìn)程可以使用相同的地址。不奇怪,因為轉(zhuǎn)換 后的物理地址并非相同的??梢园堰B接后的程序反編譯看一下,發(fā)現(xiàn)連接器已經(jīng)為程序分配了一個地址,例如,要調(diào)用某個函數(shù)A,代碼不是call A,而
10、是call0x0811111111 ,也就是說,函數(shù)A的地址已經(jīng)被定下來了。沒有這樣的“轉(zhuǎn)換”,沒有虛擬地址的概念,這樣做是根本行不通的。對任何一個普通進(jìn)程來講,它都會涉及到5種不同的數(shù)據(jù)段。包含有“程序代碼段”、“程序數(shù)據(jù)段”、“程序堆棧段”等。代碼段:代碼段是用來存放可執(zhí)行文件的操作指令,也就是說是它是可執(zhí)行程序在內(nèi)存中的鏡像。代碼段需要防止在運行時被非法修改,以只準(zhǔn)許讀取操作,而不允許寫入操作它是不可寫的。數(shù)據(jù)段:數(shù)據(jù)段用來存放可執(zhí)行文件中已初始化全局變量,換句話說就是存放程序靜態(tài)分配的變量和全局變量。BSS段:BSS段包含了程序中未初始化的全局變量,在內(nèi)存中 bss段全部置零。堆:堆是
11、用于存放進(jìn)程運行中被動態(tài)分配的內(nèi)存段,它的大小并不固定,可動態(tài)擴張或縮減。當(dāng)進(jìn)程調(diào)用malloc等函數(shù)分配內(nèi)存時,新分配的內(nèi)存就被動態(tài)添加到堆上(堆被擴張);當(dāng)利用free等函數(shù)釋放內(nèi)存時,被釋放的內(nèi)存從堆中被剔除(堆被縮減)棧:棧是用戶存放程序臨時創(chuàng)建的局部變量,也就是說我們函數(shù)括弧“”中定義的變量(但不包括static聲明的變量,static意味著在數(shù)據(jù)段中存放變量)。除此以外,在函數(shù)被調(diào)用時,其參數(shù)也會被壓入發(fā)起調(diào)用的進(jìn)程棧中,并且待到調(diào)用結(jié)束后,函數(shù)的返回值也會被存放回棧中。由于棧的先進(jìn)先出特點,所以棧特別方便用來保存/恢復(fù)調(diào)用現(xiàn)場。從這個意義上講,我們可以把堆??闯梢粋€寄存、交換臨時
12、數(shù)據(jù)的內(nèi)存區(qū)。進(jìn)程內(nèi)存空間Linux操作系統(tǒng)采用虛擬內(nèi)存管理技術(shù),使得每個進(jìn)程都有各自互不干涉的進(jìn)程地址空間。該空間是塊大小為4G的線性虛擬空間,用戶所看到和接觸到的都是該虛擬地址,無法看到實際的物理內(nèi)存地址。利用這種虛擬地址不但能起到保護(hù)操作系統(tǒng)的效果(用戶不能直接訪問物理內(nèi)存),而且更重要的是,用戶程序可使用比實際物理內(nèi)存更大的地址空間(具體的原因請看硬件基礎(chǔ)部分)。 第一、4G的進(jìn)程地址空間被人為的分為兩個部分用戶空間與內(nèi)核空間。用戶空間從0到3G(0xC0000000),內(nèi)核空間占據(jù)3G到4G。用戶進(jìn)程通常情況下只能訪問用戶空間的虛擬地址,不能訪問內(nèi)核空間虛擬地址。只有用戶進(jìn)程進(jìn)行系統(tǒng)
13、調(diào)用(代表用戶進(jìn)程在內(nèi)核態(tài)執(zhí)行)等時刻可以訪問到內(nèi)核空間。第二、用戶空間對應(yīng)進(jìn)程,所以每當(dāng)進(jìn)程切換,用戶空間就會跟著變化;而內(nèi)核空間是由內(nèi)核負(fù)責(zé)映射,它并不會跟著進(jìn)程改變,是固定的。內(nèi)核空間地址有自己對應(yīng)的頁表(init_mm.pgd),用戶進(jìn)程各自有不同的頁表。 第三、每個進(jìn)程的用戶空間都是完全獨立、互不相干的。Linux進(jìn)程調(diào)度Linux的進(jìn)程管理由進(jìn)程控制塊、進(jìn)程調(diào)度、中斷處理、任務(wù)隊列、定時器、bottom half隊列、系統(tǒng)調(diào)用、進(jìn)程通信等等部分組成。進(jìn)程調(diào)用分為實時進(jìn)程調(diào)度和非實時進(jìn)程調(diào)度兩種。前者調(diào)度時,可以采用基于動態(tài)優(yōu)先級的輪轉(zhuǎn)法(RR),也可以采用先進(jìn)現(xiàn)出算法(FIFO)。
14、 后者調(diào)度時,一律采用基于動態(tài)優(yōu)先級的輪轉(zhuǎn)法。某個進(jìn)程采用何種調(diào)度算法由改進(jìn)程的進(jìn)程控制塊中的某些屬性決定,沒有專門的系統(tǒng)用來處理關(guān)于進(jìn)程調(diào)度的相 關(guān)事宜。 Linux的進(jìn)程調(diào)度由schedule()函數(shù)負(fù)責(zé),任何進(jìn)程,當(dāng)它從系統(tǒng)調(diào)用返回時,都會轉(zhuǎn)入schedule(),而中斷處理函數(shù)完成它們的響應(yīng)任 務(wù)以后,也會進(jìn)入schedule()。進(jìn)程控制塊數(shù)據(jù)結(jié)構(gòu)Linux系統(tǒng)的進(jìn)程控制塊用數(shù)據(jù)結(jié)構(gòu)task_struct表示,這個數(shù)據(jù)結(jié)構(gòu)占用1680個字節(jié),具體的內(nèi)容不在這里介紹。進(jìn)程調(diào)度Linux進(jìn)程調(diào)度由schedule()執(zhí)行,其任務(wù)是在run-queue隊列中選出一個就緒進(jìn)程。每個進(jìn)程都有一
15、個調(diào)度策略,在它的task_struct中規(guī)定(policy屬性),或為SCHED_RR,SCHED_FIFO,或為SCHED_OTHER。前兩種為實時進(jìn)程調(diào)度策略,后一種為普通進(jìn)程調(diào)度策略。用戶進(jìn)程由do_fork()函數(shù)創(chuàng)建,它也是fork系統(tǒng)調(diào)用的執(zhí)行者。do_fork()創(chuàng)建一個新的進(jìn)程,繼承父進(jìn)程的現(xiàn)有資源,初始化進(jìn)程時鐘、信號、時間等數(shù)據(jù)。完成子進(jìn)程的初始化后,父進(jìn)程將它掛到就緒隊列,返回子進(jìn)程的pid。在支持多進(jìn)程的系統(tǒng)中,理想情況下,各個進(jìn)程應(yīng)該是根據(jù)其優(yōu)先級公平地占有CPU。而不會出現(xiàn)“誰運氣好誰占得多”這樣的不可控的情況。linux進(jìn)程調(diào)度中最基本的數(shù)據(jù)結(jié)構(gòu)是struct
16、runqueue;有關(guān)于此結(jié)構(gòu)的隊列在kernel/sched.c,此隊列包含了處理器的所有可執(zhí)行進(jìn)程的信息。 每個運行隊列都有兩個優(yōu)先級數(shù)組,一個活躍的和一個過期的,此數(shù)組也是在kernel/sched.c中含有。 schedule函數(shù)定義也是在kernel/sched.c中。每個CPU均有兩個具有優(yōu)先級的隊列。一個“活動”隊列,一個“過期”隊列?;顒雨犃兄邪杏成溆谠揅PU并具有時間片的任務(wù)。而過期隊列包含所有已 經(jīng)使用完時間片的任務(wù)(依然是一個有序隊列)?;顒雨犃泻瓦^期隊列不能直接訪問,而是通過每個CPU的運行隊列結(jié)構(gòu)中的兩個指針來訪問。調(diào)度程序不需每次 都掃描所有的任務(wù),而是在一個任務(wù)變成就緒狀態(tài)時將其放到“活動”的隊列中。當(dāng)調(diào)度程序運行時,只選擇活動隊列中最有利的任務(wù)來執(zhí)行。這樣,調(diào)度可以在一 個恒定的時間里完成。當(dāng)任務(wù)執(zhí)行時,它會得到一個時間片,或者在其轉(zhuǎn)到另一線程之前得到一段時間的CPU使用權(quán)。當(dāng)時間片用完后,任務(wù)會被轉(zhuǎn)移到“過期” 的隊列中。在該隊列中,任務(wù)會根據(jù)其優(yōu)先級進(jìn)行排序。 當(dāng)活動隊列中的任務(wù)均被運行完時,我們就交換兩個指針,從而使得先前的過期隊列成為活動隊列,同樣先前空閑的活動隊列將轉(zhuǎn)變?yōu)檫^期隊列。因此,可以看得出 來,“活動”隊列中總是排好了順序的任務(wù)隊列,如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 診斷測評與BOPPPS教學(xué)模式的融合在高中英語閱讀教學(xué)中的行動研究
- 茶具設(shè)計手繪技法解析
- 腎病綜合征常規(guī)護(hù)理要點
- 孕期飲食健康管理
- 大班心理健康:笑是良藥
- 領(lǐng)航職業(yè)英語2課件下載
- 惡性腫瘤病人的護(hù)理教學(xué)查房
- 2025年上海市中考招生考試數(shù)學(xué)真題試卷(真題+答案)
- 采樣消毒培訓(xùn)
- 舞蹈教育考研講解
- 2025年廣東省中考英語試題卷(含答案解析)
- 航圖zbyn太原武宿-機場細(xì)則
- 浙江省城市體檢工作技術(shù)導(dǎo)則(試行)
- 義務(wù)教育歷史課程標(biāo)準(zhǔn)(2022年版)
- 防火封堵施工方案(新版)
- 真空度正壓和負(fù)壓關(guān)系及負(fù)壓中MPa和Pa對應(yīng)關(guān)系
- 大面積地面荷載作用附加沉降量計算
- 山東省普通初中小學(xué)音樂、美術(shù)、衛(wèi)生設(shè)備配備標(biāo)準(zhǔn)
- 景陵峪_構(gòu)造報告_構(gòu)造地質(zhì)學(xué)
- 浸塑作業(yè)與檢驗
評論
0/150
提交評論