第一篇:關于磁盤IO的總結
磁盤IO的總結:
1.IO讀寫:磁盤是用來存取數(shù)據(jù)的。磁盤的存數(shù)據(jù)對應IO的寫操作,磁盤的取數(shù)據(jù)對應IO的讀操作。
2.隨機訪問(Random Access)與連續(xù)訪問(Sequential Access):
隨機訪問指的是本次IO所給出的扇區(qū)地址和上次IO給出扇區(qū)地址相差比較大,這樣的話磁頭在兩次IO操作之間需要做比較大的移動動作才能重新開始讀/寫數(shù)據(jù)。
同理,連續(xù)訪問就是兩次給出的扇區(qū)地址相近,磁頭就能很快的進行操作,這樣的多個IO操作就是連續(xù)訪問。
3.順序IO模式(Queue Mode)/并發(fā)IO模式(BurstMode):
原理:磁盤控制器可能會一次對磁盤組發(fā)出一連串的IO命令,如果磁盤組一次只能執(zhí)行一個IO命令時稱為順序IO;當磁盤組能同時執(zhí)行多個IO命令時,稱為并發(fā)IO。
并發(fā)IO只能發(fā)生在由多個磁盤組成的磁盤組上,單塊磁盤只能一次處理一個IO命令。
4.IOPS,IO系統(tǒng)每秒所執(zhí)行IO操作的次數(shù)
5.一次完整的磁盤IO操作:
當控制器對磁盤發(fā)出一個IO操作命令的時候,磁盤的驅動臂(ActuatorArm)帶讀寫磁頭(Head)離開著陸區(qū)(LandingZone,位于內圈沒有數(shù)據(jù)的區(qū)域),移動到要操作的初始數(shù)據(jù)塊所在的磁道(Track)的正上方,這個過程被稱為尋址(Seeking),對應消耗的時間被稱為尋址時間(SeekTime);但是找到對應磁道還不能馬上讀取數(shù)據(jù),這時候磁頭要等到磁盤盤片(Platter)旋轉到初始數(shù)據(jù)塊所在的扇區(qū)(Sector)落在讀寫磁頭正上方的之后才能開始讀取數(shù)據(jù),在這個等待盤片旋轉到可操作扇區(qū)的過程中消耗的時間稱為旋轉延時(RotationalDelay);接下來就隨著盤片的旋轉,磁頭不斷的讀/寫相應的數(shù)據(jù)塊,直到完成這次IO所需要操作的全部數(shù)據(jù),這個過程稱為數(shù)據(jù)傳送(DataTransfer),對應的時間稱為傳送時間(TransferTime)。完成這三個步驟之后一次IO操作也就完成了。
6.傳輸速度(Transfer Rate)/吞吐率(Throughput):是磁盤在實際使用的時候從磁盤系統(tǒng)總線上流過的數(shù)據(jù)量。
7.IO響應時間也被稱為IO延時(IOLatency),IO響應時間就是從操作系統(tǒng)內核發(fā)出的一個讀或者寫的IO命令到操作系統(tǒng)內核接收到IO回應的時間,注意不要和單個IO時間混淆了,單個IO時間僅僅指的是IO操作在磁盤內部處理的時間,而IO響應時間還要包括IO操作在IO等待隊列中所花費的等待時間。
8.dd命令 dd:硬拷貝命令(直接在硬盤上進行數(shù)據(jù)拷貝,沒有經(jīng)過內存,二進制之間的協(xié)調復制)
bs=BYTES:一次讀取和寫入的字節(jié)數(shù)(單元大?。?/p>
count=BLOCKS:單元數(shù)量
if=FILE:源文件
of=FILE:目標文件
測試磁盤的寫入:
[root@localhost ~]# /usr/bin/time dd if=/dev/zero of=/tmp/hx bs=4k count=10240 10240+0 records in 10240+0 records out 41943040 bytes(42 MB)copied, 0.0577 s, 727 MB/s 0.00user 0.05system 0:00.05elapsed 96%CPU(0avgtext+0avgdata 832maxresident)k 0inputs+81920outputs(0major+241minor)pagefaults 0swaps
測試磁盤的讀取:
[root@localhost ~]# /usr/bin/time dd if=/tmp/hx of=/dev/null bs=4k 10240+0 records in 10240+0 records out 41943040 bytes(42 MB)copied, 0.014955 s, 2.8 GB/s 0.00user 0.01system 0:00.01elapsed 86%CPU(0avgtext+0avgdata 828maxresident)k 0inputs+0outputs(0major+240minor)pagefaults 0swaps
讀寫同時測試
[root@localhost ~]# /usr/bin/time dd if=/tmp/foo of=/tmp/foo2 bs=4k 10240+0 records in 10240+0 records out 41943040 bytes(42 MB)copied, 0.0742246 s, 565 MB/s 0.00user 0.08system 0:00.08elapsed 97%CPU(0avgtext+0avgdata 828maxresident)k 0inputs+81952outputs(0major+240minor)pagefaults 0swaps 9.[root@localhost ~]# iostat-x Linux 2.6.32-573.el6.x86_64(localhost.localdomain)03/16/2016 _x86_64_(12 CPU)
avg-cpu: %user
%nice %system %iowait %steal
%idle
0.09
0.00
0.06
0.02
0.00
99.82
Device:
rrqm/s
wrqm/s
r/s
w/s
rsec/s
wsec/s avgrq-sz avgqu-sz
await svctm %util sda
8.30
68.47
7.61
2.27
363.21
565.82
94.05
0.05
5.32
0.40
0.39 各個性能指標的簡單說明。rrqm/s 每秒進行merge的讀操作數(shù)目。wrqm/s 每秒進行merge的寫操作數(shù)目。r/s 每秒完成的讀I/O設備次數(shù)。w/s 每秒完成的寫I/O設備次數(shù)。rsec/s 每秒讀扇區(qū)數(shù)。wsec/s 每秒寫扇區(qū)數(shù)。rkB/s 每秒讀K字節(jié)數(shù)。wkB/s 每秒寫K字節(jié)數(shù)。avgrq-sz平均每次設備I/O操作的數(shù)據(jù)大小(扇區(qū))。avgqu-sz平均I/O隊列長度。await平均每次設備I/O操作的等待時間(毫秒)。svctm平均每次設備I/O操作的服務時間(毫秒)。%util 一秒中有百分之多少的時間用于I/O操作,或者說一秒中有多少時間I/O隊列是非空的。
平均單次IO大小(IO Chunk Size)<=>avgrq-sz
平均IO響應時間(IO Response Time)<=>await
IOPS(IO per Second)<=> r/s + w/s
吞吐率(Throughtput)<=> rkB/s + wkB/s
10.fio是一個非常靈活的io測試工具,他可以通過多線程或進程模擬各種io操作。
fio分順序讀,隨機讀,順序寫,隨機寫,混合隨機讀寫模式。參數(shù):
filename: 指定文件(設備)的名稱??梢酝ㄟ^冒號分割同時指定多個文件,如filename=/dev/sda:/dev/sdb。
directory: 設置filename的路徑前綴。在后面的基準測試中,采用這種方式來指定設備。
name: 指定job的名字,在命令行中表示新啟動一個job。
direct: bool類型,如果設置成true(1),表示不使用io buffer。
ioengine: I/O引擎,現(xiàn)在fio支持19種ioengine。默認值是sync同步阻塞I/O,libaio是Linux的native異步I/O。
iodepth: 如果ioengine采用異步方式,該參數(shù)表示一批提交保持的io單元數(shù)。
rw: I/O模式,隨機讀寫,順序讀寫等等。
bs: I/O block大小,默認是4k。
size: 指定job處理的文件的大小。
numjobs: 指定job的克隆數(shù)(線程)。
time_based: 如果在runtime指定的時間還沒到時文件就被讀寫完成,將繼續(xù)重復知道runtime時間結束。
runtime: 指定在多少秒后停止進程。如果未指定該參數(shù),fio將執(zhí)行至指定的文件讀寫完全完成。
group_reporting: 當同時指定了numjobs了時,輸出結果按組顯示。
例: #順序讀
fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=read-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=1000-group_reporting-name=mytest
#順序寫
fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=write-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=1000-group_reporting-name=mytest
#隨機讀
fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=randread-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=1000-group_reporting-name=mytest #隨機寫
fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=randwrite-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=1000-group_reporting-name=mytest
#混合隨機讀寫
fio-filename=/dev/sda-direct=1-iodepth 1-thread-rw=randrw-rwmixread=70-ioengine=psync-bs=16k-size=200G-numjobs=30-runtime=100-group_reporting-name=mytest-ioscheduler=noop
補充:
上次測試的三塊固態(tài)硬盤IO:
0.55到2K的小文件
[root@localhost 1]# fio-filename=/data/B/1/2-direct=1-iodepth 1-thread-rw=randrw-rwmixread=80-ioengine=psync-bsrange=512-2048-size=4G-numjobs=5-group_reporting-name=test-runtime=1200 test:(g=0): rw=randrw, bs=512-2K/512-2K, ioengine=psync, iodepth=1...test:(g=0): rw=randrw, bs=512-2K/512-2K, ioengine=psync, iodepth=1 fio 2.0.7 Starting 5 threads test: Laying out IO file(s)(1 file(s)/ 4096MB)Jobs: 5(f=5): [mmmmm] [100.0% done] [8319K/2060K /s] [9870 /2498 iops] [eta 00m:00s] test:(groupid=0, jobs=5): err= 0: pid=29601
read : io=11152MB, bw=9515.1KB/s, iops=9183 , runt=1200079msec
clat(usec): min=0 , max=1000.3K, avg=468.07, stdev=1981.20
lat(usec): min=0 , max=1000.3K, avg=468.42, stdev=1981.20
clat percentiles(usec):
| 1.00th=[ 189], 5.00th=[ 211], 10.00th=[ 225], 20.00th=[ 249],| 30.00th=[ 274], 40.00th=[ 294], 50.00th=[ 318], 60.00th=[ 350],| 70.00th=[ 382], 80.00th=[ 430], 90.00th=[ 516], 95.00th=[ 596],| 99.00th=[ 844], 99.50th=[ 5088], 99.90th=[32128], 99.95th=[42240],| 99.99th=[58624]
bw(KB/s): min= 159, max= 6607, per=20.03%, avg=1905.53, stdev=328.56
write: io=2789.3MB, bw=2379.2KB/s, iops=2297 , runt=1200079msec
clat(usec): min=0 , max=1000.2K, avg=283.77, stdev=1432.42
lat(usec): min=0 , max=1000.2K, avg=284.21, stdev=1432.42
clat percentiles(usec):
| 1.00th=[
89], 5.00th=[ 110], 10.00th=[ 137], 20.00th=[ 153],| 30.00th=[ 165], 40.00th=[ 175], 50.00th=[ 189], 60.00th=[ 207],| 70.00th=[ 239], 80.00th=[ 302], 90.00th=[ 386], 95.00th=[ 458],| 99.00th=[ 660], 99.50th=[ 1976], 99.90th=[20352], 99.95th=[27520],| 99.99th=[43264]
bw(KB/s): min=
60, max= 1769, per=20.03%, avg=476.50, stdev=87.73
lat(usec): 2=0.08%, 100=0.51%, 250=29.98%, 500=59.64%, 750=8.40%
lat(usec): 1000=0.63%
lat(msec): 2=0.10%, 4=0.11%, 10=0.19%, 20=0.08%, 50=0.23%
lat(msec): 100=0.03%, 250=0.01%, 500=0.01%, 1000=0.01%, 2000=0.01%
cpu
: usr=6.13%, sys=37.70%, ctx=101478124, majf=0, minf=24056
IO depths
: 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit
: 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued
: total=r=11021114/w=2757348/d=0, short=r=0/w=0/d=0
Run status group 0(all jobs):
READ: io=11152MB, aggrb=9515KB/s, minb=9515KB/s, maxb=9515KB/s, mint=1200079msec, maxt=1200079msec
WRITE: io=2789.3MB, aggrb=2379KB/s, minb=2379KB/s, maxb=2379KB/s, mint=1200079msec, maxt=1200079msec
Disk stats(read/write):
sda: ios=11020977/2758079, merge=0/69, ticks=4004421/515149, in_queue=4514919, util=98.00%
10M的大文件
[root@localhost 1]# fio-filename=/data/B/1/10-direct=1-iodepth 1-thread-rw=randrw-rwmixread=80-ioengine=psync-bs=10M-size=10G-numjobs=10
-group_reporting-name=test-runtime=1800 test:(g=0): rw=randrw, bs=10M-10M/10M-10M, ioengine=psync, iodepth=1...test:(g=0): rw=randrw, bs=10M-10M/10M-10M, ioengine=psync, iodepth=1 fio 2.0.7 Starting 10 threads test: Laying out IO file(s)(1 file(s)/ 10240MB)Jobs: 4(f=4): [_m___mm_m_] [99.0% done] [220.2M/104.9M /s] [21 /10 iops] [eta 00m:03s]]
test:(groupid=0, jobs=10): err= 0: pid=29618
read : io=81910MB, bw=270613KB/s, iops=26 , runt=309948msec
clat(msec): min=15 , max=1006 , avg=334.89, stdev=102.97
lat(msec): min=15 , max=1006 , avg=334.89, stdev=102.97
clat percentiles(msec):
| 1.00th=[ 123], 5.00th=[ 157], 10.00th=[ 200], 20.00th=[ 249],| 30.00th=[ 289], 40.00th=[ 318], 50.00th=[ 343], 60.00th=[ 363],| 70.00th=[ 383], 80.00th=[ 412], 90.00th=[ 449], 95.00th=[ 482],| 99.00th=[ 578], 99.50th=[ 766], 99.90th=[ 963], 99.95th=[ 979],| 99.99th=[ 1004]
bw(KB/s): min= 7076, max=64912, per=10.25%, avg=27750.67, stdev=7359.31
write: io=20490MB, bw=67694KB/s, iops=6 , runt=309948msec
clat(msec): min=24 , max=752 , avg=161.82, stdev=105.86
lat(msec): min=25 , max=753 , avg=162.61, stdev=105.84
clat percentiles(msec):
| 1.00th=[
27], 5.00th=[
33], 10.00th=[
34], 20.00th=[
51],| 30.00th=[
54], 40.00th=[ 103], 50.00th=[ 178], 60.00th=[ 206],| 70.00th=[ 233], 80.00th=[ 260], 90.00th=[ 297], 95.00th=[ 326],| 99.00th=[ 392], 99.50th=[ 416], 99.90th=[ 644], 99.95th=[ 725],| 99.99th=[ 750]
bw(KB/s): min= 7398, max=82447, per=29.87%, avg=20218.16, stdev=9671.17
lat(msec): 20=0.01%, 50=3.69%, 100=4.55%, 250=23.75%, 500=65.39%
lat(msec): 750=2.18%, 1000=0.42%, 2000=0.01%
cpu
: usr=0.61%, sys=6.94%, ctx=600392, majf=0, minf=12529
IO depths
: 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit
: 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued
: total=r=8191/w=2049/d=0, short=r=0/w=0/d=0
Run status group 0(all jobs):
READ: io=81910MB, aggrb=270612KB/s, minb=270612KB/s, maxb=270612KB/s, mint=309948msec, maxt=309948msec
WRITE: io=20490MB, aggrb=67694KB/s, minb=67694KB/s, maxb=67694KB/s, mint=309948msec, maxt=309948msec
Disk stats(read/write):
sda: ios=261982/65792, merge=0/96, ticks=40438645/1040942, in_queue=41479880, util=100.00%
第二篇:IO總結
輸入和輸出
IO分類輸入 和 輸出 流節(jié)點流 和 處理流字節(jié)流(byte)和 字符流(char)
輸入流
字節(jié)流
抽象基類 InputStream
讀取文件的 FileInputStream
緩沖流 BufferedInputStream
讀取各種java基本數(shù)據(jù)類型的 DataInputStream
讀取對象 ObjectInputStream
字符流
抽象基類 Reader
讀取文本文件的 FileReader
實現(xiàn)緩沖的 BufferedRead 讀取一個行 readLine();newline()輸出流
字節(jié)流
抽象基類 OutputStream
寫文件的 FileOutputStream
緩沖輸出流 BufferedOutputStream
寫各種java基本數(shù)據(jù)類型的 DataOutputStream
寫對象的 ObjectOutputStreamwriteObject(Object obj);字符流
對象的序列化
一個對象所屬的類如果實現(xiàn)java.io.Serializable
則這個類是序列化類,此類創(chuàng)建的對象就是序列化對象 序列化對象可以通過文件流在文件中進行讀和寫。
第三篇:IO企業(yè)文化
IO的企業(yè)文化是什么:
【企業(yè)文化】
——企業(yè)定位
· 四個人每個人找十個標的,各自去實驗,標的領域的選取根據(jù)各自偏好和擅長。公司注冊成功后去尋找一個信托平臺,費用為一個點的回報率。財務方面不用管信托平臺會代為管理,并且將財務報表予以公示
·托管公司 代理大陸客戶進行港股操盤
——使命
·為客戶利益而努力進取
·提高每位員工的公司榮譽感,自豪感。
·像對待技術創(chuàng)新一樣致力于成本創(chuàng)新。
·讓更多的人獲得更好,更穩(wěn)健的服務
·充分調動員工主觀能動性,主動完成好任務。
——核心價值觀
· 成就客戶—我們致力于每位客戶的滿意和成功。
· 尊重員工—我們致力于尊重每位員工的要求以及情感。
· 誠信正直—我們秉持信任、誠實和富有責任感,無論是對內部還是外部?!?追求卓越—我們倡導每天學習一點,開拓視野,每天爭做最佳最好。
——愿景
IO基于對行業(yè)的深厚理解,以及對優(yōu)秀的管理和文化基因的傳承,順應時代的趨勢,爭取成為時代的領頭羊,在全球范圍內打造高品質的產(chǎn)品,讓消費者充分享受卓越的IO服務。IO致力于發(fā)展成為一個自由民主的公司,一個可以自由討論,積極發(fā)出自己聲音的的公司,一個穩(wěn)健提升的企業(yè),為客戶、股東、員工和社會創(chuàng)造更多的價值,讓世界因IO更美好。
第四篇:磁盤調度[推薦]
操作系統(tǒng)課程設計
磁 盤 調 度 實 踐 報 告
姓名: 董宇超 班級:計算機一班 學號:0906010124
目錄:
? 實踐內容 ? 實踐目的及意義 ? 功能設計及數(shù)據(jù)結構 ? 調試運行及測設分析 ? 存在的問題及改進設想 ? 實踐體會 ? 總結 ? 參考文獻
正文:
1.實踐內容:
? 假設磁盤只有一個盤面,并且磁盤是可移動頭磁盤。? 磁盤是可供多個進程共 享的存儲設備,但一個磁盤每個時刻只能為一個進程服務。當有進程在訪問 某個磁盤時,其它想訪問該磁盤的進程必須等待,直到磁盤一次工作結束。當有多個進程提出輸入輸出請求而處于等待狀態(tài)時,可用電梯調度算法從若 干個等待訪問者中選擇一個進程,讓它訪問磁盤。為此設置“驅動調度”進 程。
? 由于磁盤與處理器是并行工作的,所以當磁盤在為一個進程服務時,占有處理器的其它進程可以提出使用磁盤(這里我們只要求訪問磁道),即動 態(tài)申請訪問磁道,為此設置“接受請求”進程。
要求模擬電梯調度算法,對磁盤進行移臂操作,編程實現(xiàn)。
2.實踐目的:
磁盤是高速、大容量、旋轉型、可直接存取的存儲設備。它作為計算機 系統(tǒng)的輔助存儲器,擔負著繁重的輸入輸出工作,在現(xiàn)代計算機系統(tǒng)中往往 同時會有若干個要求訪問磁盤的輸入輸出要求。
系統(tǒng)可采用一種策略,盡可能按最佳次序執(zhí)行訪問磁盤的請求。由于磁 盤訪問時間主要受尋道時間T的影響,為此需要采用合適的尋道算法,以降 低尋道時間。
本實驗要求模擬設計一個磁盤調度程序,觀察調度程序的動態(tài)運 行過程。通過實驗理解和掌握磁盤調度的職能。
3.功能設計:
由于程序簡單,沒有設計結構體,只定義了一下變量:
int m=0;//記錄磁道數(shù)目
int n;//接受輸入的磁道號
int disk[1000];//保存磁道序列
int currenttrack;//當前磁道號
int t;
int i=0,j=0,k=0;//循環(huán)參數(shù)
int option;//記錄尋到方向
int sum=0;//統(tǒng)計尋道長度
源代碼: #include
int n;//接受輸入的磁道號
int disk[1000];//保存磁道序列
int currenttrack;//當前磁道號
int t;int i=0,j=0,k=0;//循環(huán)參數(shù)
int option;//記錄尋到方向
int sum=0;//統(tǒng)計尋道長度
printf(“請輸入當前的磁道號:”);scanf(“%d”,¤ttrack);
printf(“n--------------------1.向磁道號增加的方向訪問--------------------”);printf(“n--------------------2.向磁道號減少的方向訪問--------------------”);printf(“n請選擇的當前磁頭移動方向(1/2):”);scanf(“%d”,&option);
printf(“n請輸入磁道請求序列(0~999并以<-1>結束):n”);scanf(“%d”,&n);while(n!=-1){
disk[i]=n;
m++;i++;
scanf(“%d”,&n);}
/* 冒泡排序 使磁道請求序列從小到大排序 */ for(j=0;j for(i=0;i { if(disk[i]>disk[i+1]) { t=disk[i]; disk[i]=disk[i+1]; disk[i+1]=t; } } } /* 找到當前磁道號在磁道請求序列中的排序位置 */ k=0;for(i=0;i k++;else break;} printf(“n--------------電梯算法調度后的磁盤調度序列-------------n”);/* 第一種: 當前磁道號先向外再向里讀 */ if(option==1){ for(i=k;i printf(“%5d”,disk[i]);} for(i=k-1;i>=0;i--){ printf(“%5d”,disk[i]);} sum=2*(disk[m-1]-disk[k])+disk[k]-disk[0];printf(“n尋道長度為:%5d”,sum);} /* 第二種: 當前磁道號先向里再向外讀 */ if(option==2){ for(i=k-1;i>=0;i--){ printf(“%d ”,disk[i]); sum+=disk[i];} for(i=k;i printf(“%5d”,disk[i]); sum+=disk[i];} sum=disk[m-1]-disk[k]+2*(disk[k]-disk[0]);printf(“n尋道長度為:%5d”,sum); } printf(“n”);} 4.調試運行: 運行開始后出現(xiàn)如下界面,舉例輸入5: 然后出現(xiàn): 1.先選擇1(按按磁道號增加的方向尋道): 接著輸入磁道序列,若要結束輸入,輸入-1即可: 然后出現(xiàn)如下尋道結果: 2.再選擇2(按按磁道號減少的方向尋道): 接著輸入磁道序列,若要結束輸入,輸入-1即可: 然后出現(xiàn)如下尋道結果: 5.存在的問題: 由于初次做操作系統(tǒng)模擬實驗,所以程序設計中存在很多問題,例如:由于電梯算法是從當前的磁道號開始沿著預定的方向尋道,當本方向上的請求全部滿足時,再反向尋道,但是程序模擬過程中,進程不能隨著尋道的同時添加新的進程,使得電梯調度算法不能更好的體現(xiàn)。只能預先輸入一串請求,然后只對這一段請求尋道。 改進之處:添加更高級的算法,使得請求能在尋道的同時加進來。 還有一些簡單的已解決的問題,不一一列舉了。 6.實踐心得體會: 通過這次實踐學會了不少內容,更深的理解了磁道調度的幾種算法,而且學 會了系統(tǒng)的編寫程序。在編程過程中,需要 查閱各種資料,并且學習前人的 編寫方法,找出優(yōu)劣,然后形成自己的思想,最終完成程序的編寫。 通過模擬磁盤調度的電梯調度算法,并比較與其他調度算法的不同,懂得了 各種算法在不同情況下的作用。選擇一個好的調度算法可以節(jié)約很多時間。 在模擬過程中出現(xiàn)過好多問題,有的解決了,有的還未解決,不管如何都是 一種收獲。 在最初的時候,由于程序編寫隱藏的錯誤,編譯沒有發(fā)現(xiàn),卻執(zhí)行不下 去,然后改正錯誤,修復漏洞,最終滿足實驗要求。 7.總結: 為期一周的操作系統(tǒng)實踐課結束了,編寫了電梯調度算法的磁盤調度模 擬程序。電梯調度尋道方式就像電梯運行一樣,就是沿一個方向尋道,直到 滿足這一方向的所有請求,便反向尋道。在程序中添加了尋道長度的顯示,以便將電梯調度的效率與其他磁盤調度算法比較。 8.參考文獻: 1.操作系統(tǒng)教程(第4版)????孫鐘秀 主編 高等教育出版社; 2.算法與數(shù)據(jù)結構-C語言描述(第2版)??張乃孝 主編 高等教育出版社; 3.網(wǎng)絡資源; 配額管理 Windows Server 203 R2“文件服務器”的“配額管理”包括如下功能: (1)通過創(chuàng)建配額來限制允許卷或文件夾使用的空間,并在接近或達到配額限制時生成通知。 (2)生成應用于卷或文件夾中所有現(xiàn)有文件夾以及以后創(chuàng)建的任何新子文件夾的自動配額。(2)定義配額模板,并且定義的配額模板可以很容易應用于新的卷或文件夾以及可以在整個組織中使用。 Windows Server 2003 R2的“文件服務器”中的配額模板是非常靈活的,例如:(1)您可以為服務器上每個用戶的個人文件夾設置200 MB的限制,并在達到180 MB存儲空間時通知您和用戶。 (2)您可以為指定的用戶組的共享文件夾設置靈活的500 MB配額。達到此存儲限制時,將通過電子郵件通知組中的所有用戶,存儲配額已臨時擴展到520 MB,以便用戶可以刪除不必要的文件并符合預設的500 MB配額策略。 (3)可以在臨時文件夾達到2 GB時接收通知,然而不限制該文件夾的配額,因為服務器上運行的服務需要。 按照組件過程:添加刪除組件-管理監(jiān)視工具-文件服務管理+配額管理,就不一一的詳細敘述了。創(chuàng)建配額 在“文件服務器”中創(chuàng)建配額的步驟如下: (1)雙擊“文件服務器資源管理器”展開,如圖4-16所示。 圖4-16 文件服務器資源管理器窗口 (2)在如圖4-16所示的窗口中雙擊“配額管理”將其展開,右擊“配額”選項,如圖4-17,在展開的快捷菜單中選擇“創(chuàng)建配額”命令,打開“創(chuàng)建配額”對話框,如圖4-18所示。 圖4-17 選擇創(chuàng)建配額選項 圖4-18 打開創(chuàng)建配額對話框 (3)在“配額路徑”文本框中,選擇或鍵入將應用該配額的文件夾的路徑。注意,配額屬性還將應用于其所有的子文件夾。選中“在路徑上創(chuàng)建配額”單選按鈕,在“配額屬性”選項組中的“從此配額模板派生屬性”下拉列表中選擇其配額屬性。本例中選擇“100 MB限制”,如圖4-19所示。單擊“創(chuàng)建”按鈕完成配額的創(chuàng)建,如圖4-20所示。 圖4-19 設置配額路徑和屬性 圖4-20 完成配額的創(chuàng)建 (4)在圖4-19所示的窗口中,從“配額屬性”選項組上選中“定義自定義配額屬性”單選按鈕,單擊“自定義屬性”按鈕,打開“配額屬性”對話框,如圖4-21所示。單擊“確定”按鈕,打開“將自定義屬性另存為模板”對話框。鍵入模板名(如:dfs1),如圖4-22所示。 圖4-21 自定義配額屬性 圖4-22 輸入模板名 (5)單擊“確定”按鈕,完成配額的創(chuàng)建,如圖4-23所示。 圖4-23 完成配額創(chuàng)建并生成配額模板 2創(chuàng)建配額模板 “文件服務器”中提供的配額模板是有限的,如果模板不能滿足需求,可以創(chuàng)建新的模板,方法如下: (1)在圖4-23所示的窗口中,右擊“配額模板”,在展開的快捷菜單中選擇“創(chuàng)建配額模板”命令,如圖4-24所示。將打開“創(chuàng)建配額模板”對話框,在“從配額模板復制屬性”中的下拉列表中選擇“100 MB 限制”,在“設置”選項卡中“模板名”文本框中鍵入模板名,本例用“dfs1”。在“空間限制”選項組中“限制”文本框中鍵入空間大小,如150,下拉列表中選擇“MB”。選中“硬配額”單選按鈕,如圖4-25所示。 圖4-24 選擇創(chuàng)建配額模板選項 圖4-25 打開創(chuàng)建配額模板對話框 (2)在“通知閥值”選項組中單擊“添加”按鈕,打開“添加閥值”對話框,如圖4-26所示。在“電子郵件”選項卡中,選中“將電子郵件發(fā)送到下列管理員”復選框,在下列文本框中鍵入管理員郵件地址,如hanxiaoqi129@sohu.com;若想要將電子郵件發(fā)送到時超出該閥值的用戶,可選中“將電子郵件發(fā)送到超出該閥值的用戶”復選框。單擊“其它電子郵件標題”按鈕,打開“其他電子郵件標題”對話框,鍵入發(fā)件人地址,如qiling8139@163.com,抄送地址和密件抄送地址,如圖4-27所示。 如圖4-26 打開添加閥值對話框 如圖4-27 輸入郵件地址 (3)在“事件日志”選項卡中,選中“將警告發(fā)送至事件日志”復選框,在“警告消息”選項組中,可編輯默認的日志項,本例中使用默認,如圖4-28所示。 圖4-28 設置“事件日志”選項卡 (4)在“命令”選項卡中,選中“運行該命令或腳本”復選框,指定在達到閾值時是否運行命令或腳本,在“命令安全”選項組中,可指定運行該命令的安全級別,如圖4-29所示。 圖4-29 設置“命令”選項卡 (5)在“報告”選項卡中,選中“生成報告”復選框,在“選擇要生成的報告”中的下拉列表中選擇“按所有者分類的文件”、“按文件組分類的文件”“大文件”等復選框,查看所選報告可單擊“查看所選報告”按鈕,將打開“查看所選報告”對話框,如圖4-13所示。選中“將報告發(fā)送至下列管理員”復選框,在“將報告發(fā)送至下列管理員”文件框中鍵入管理員電子郵件地址,本例中使用hanxiaoqi129@sohu.com,如有多個郵件地址用分號分隔,若想把生成的報告發(fā)送至超出閥值的用戶,可選中“把報告發(fā)送至超出閥值的用戶”復選框,如圖4-30所示。 如圖4-30 設置“報告”選項組 (6)創(chuàng)建模板完成后,在圖4-30中單擊“確定”按鈕。 3創(chuàng)建自動配額 通過使用自動配額,可以為文件夾指定配額模板,并指定自動生成基于該模板的配額并應用于現(xiàn)有的子文件夾以及以后創(chuàng)建的任何新子文件夾。例如,可以為按需求為漫游配置文件用戶或新用戶創(chuàng)建的文件夾定義自動配額。每次創(chuàng)建新文件夾時,將使用其父文件夾的自動配額配置文件中定義的模板來為該文件夾自動生成新配額項。然后,可以在結果窗格中的“配額”節(jié)點下查看這些自動生成的配額項,作為分別創(chuàng)建的配額查看,可以單獨進行編輯和修改。 創(chuàng)建自動配額的步驟如下: (1)在圖4-17所示的窗口中,單擊“創(chuàng)建配額”命令,打開“創(chuàng)建配額”對話框,如圖4-18所示。在“配額路徑”文本框中,選擇或鍵入將應用該配額的文件夾的路徑。本例中選擇“F:hjx”目錄,選中“在現(xiàn)有子文件夾和新的子文件中自動應用模板并創(chuàng)建配額”單選按鈕,在配額屬性選項組中,選中“從此配額模板派生屬性”在其下拉列表中選擇配額屬性。本例中選擇“100 MB 限制”。如圖4-31所示。 圖4-31 設置配額路徑和屬性 (2)單擊“創(chuàng)建”按鈕,打開“文件服務器資源管理器”窗口,如圖4-32所示。 圖4-32 完成自動配額的創(chuàng)建 4編輯配額模板的屬性 在更改配額模板時,可以選擇將這些更改擴展到使用原始配額模板創(chuàng)建的配額上??梢赃x擇只修改那些仍與原始模板匹配的配額或從原始模板派生的所有配額,無論自創(chuàng)建后對配額進行過任何修改都是如此。此功能通過提供一個可進行所有更改的中心點,簡化更新配額屬性的過程。 (1)在圖4-23所示的窗口中,雙擊“配額模板”項,展開配額模板,在配額模板列表中選擇“dfs1”,右擊該模板,在彈出的快捷菜單中選擇“編輯模板屬性”命令,如圖4-33所示。將打開“編輯模板屬性”對話框,如圖4-34所示。 圖4-33 選擇“編輯模板屬性(P)?”命令 圖4-34 打開配額模板屬性對話框 (2)在“空間限制”選項組中的“限制”文本框中鍵入200,選中“軟配額 允許用戶超出限制(用于監(jiān)視)”單選按鈕,如圖4-35所示。 如圖4-35 修改配額模板屬性 (3)單擊“確定”按鈕,打開“更新從模板派生的配額”對話框,選中“僅將模板應用于與原始模板匹配的派生配額”單選按鈕,如圖4-36所示。 如圖4-36 設置模板應用范圍 (4)單擊“確定”按鈕,完成模板屬性的修改,如圖4-37所示。 如圖4-37 修改DFS1模板屬性 編輯自動配額模板的屬性 在更改自動配額時,可以選擇將這些更改擴展到自動配額路徑中現(xiàn)有的配額上??梢赃x擇只修改那些仍與原始自動配額匹配的配額或自動配額路徑中的所有配額,無論自創(chuàng)建后對配額進行過任何修改都是如此。此功能通過提供一個可進行所有更改的中心點,簡化更新從自動配額派生的配額屬性的過程。 (1)在圖4-32所示的窗口中,雙擊“配額”展開“配額”項,如圖4-38所示。在“配額”列表中選中“F:hjx*?”模板,右擊該模板,在彈出的快捷菜單中選擇“編輯配額屬性”命令,如圖4-39所示,打開“編輯自動應用配額”對話框,如圖4-40所示。 圖4-38 展開配額選項 圖4-39 選擇編輯配額命令(2)在“編輯自動應用屬性”選項組中的“從此配額模板派生屬性”的下拉列表中選擇“200 MB 限制,50 MB 擴展”項,如圖4-40所示。 圖4-40 修改自動應用配額屬性 (3)單擊“確定”按鈕,打開“更新從自動應用配額派生的配額”對話框,從中選中“僅將自動應用配額應用于原始自動應用配額匹配的派生配額”單選按鈕,如圖4-41所示。單擊“確定”按鈕,完成自動配額模板的屬性的修改,如圖4-42所示。 圖4-41 選擇自動配額應用范圍 圖4-42 顯示修改后模板信息第五篇:文件服務器磁盤配額管理