時間:2019-08-08 來源:互聯網 瀏覽量:
針對許多用戶反饋創建文件較大的下載任務時,可能出現磁盤繁忙的問題。迅雷X10.1.16版本提供了“快速申請磁盤空間”的新方式,可以避免因為申請磁盤空間造成的“磁盤繁忙”。那麼“快速申請磁盤空間”是什麼原理?現在迅雷官方給出了解答。
這個功能推出後,引起了部分用戶的好奇,想要更深入的了解這個功能。那得從微軟推出Windows Vista引起的一個“問題”說起。
問題起因:
2006年11月,Windows Vista發布,隨之帶來了“用戶帳戶控製功能(User Account Control,簡稱UAC)”
UAC功能對磁盤的權限控製給當時的迅雷帶來了一個大麻煩。
沒有管理員權限的情況下,申請磁盤空間並進行隨機寫入時,會觸發Windows對所申請的磁盤空間進行初始化操作。
Windows之所以作出這個限製,可能是因為Windows的文件係統在刪除文件時,並沒有真的將磁盤上的文件數據擦除,而是給數據加上“已刪除”標記了事。
但是Windows擔心未經用戶授權的程序訪問到磁盤上被標記為“已刪除”的內容,所以增加了初始化環節,其實就是擦除磁盤上標記為“已刪除”的數據。
這個擦除過程就是把磁盤上對應的區塊給寫成零。寫零這個過程就跟往磁盤裏寫數據一樣,磁盤的寫入性能決定了寫零的速度。
比如迅雷要下載一個1000MB的文件,那麼Windows就會初始化1000MB的磁盤空間,磁盤的寫入性能是100MB/s,那麼可知Windows對磁盤完成初始化需要10秒。
這10秒內,磁盤的寫入性能將會100%被占用,導致磁盤繁忙,電腦卡頓。而且此時迅雷是無法向磁盤的這個區塊寫入任何數據的,也就導致迅雷沒有任何下載速度。
解決這個問題的關鍵點,就是要找出一種方法,讓迅雷申請磁盤空間時具有管理員權限。
解決方案A:
迅雷為了解決這個問題,首先想到的解決方案是每次啟動迅雷都申請管理員權限。
▲UAC提示框
但是,讓用戶每次啟動迅雷都彈一個UAC的提示框,體驗實在太差。何況很多用戶啟動迅雷隻是為了打開下載好的文件,並不進行下載。這種死板的做法就被否了。
解決方案B:
這時,我們有個比較熟悉Windows的開發想到,Windows的係統服務是可以直接獲得管理員權限的,迅雷創建一個係統服務,專門用來幫忙申請磁盤空間不就好了嗎?
於是迅雷就開發了“XLServicePlatform”服務,當迅雷需要申請大於100MB的磁盤空間時,就通過這個服務進行申請。
這樣一來,就在不彈出UAC提示框的前提下,把問題解決了。
問題再現:
但是最近這段時間,我們發現越來越多的用戶反映,用迅雷下載大文件的時候“電腦很卡、沒速度、磁盤繁忙”等問題。
經過跟許多用戶遠程協助發現,他們的“XLServicePlatform”服務都被停止了。於是迅雷無法通過服務申請磁盤空間,導致下載大文件時,需要等待Windows初始化磁盤。
奇怪的是,用戶都說自己沒有手動停止過這個服務。
後來我們發現,這些用戶都安裝了“360安全衛士”,經過我們測試發現,360安全衛士的加速功能會建議用戶關閉“迅雷基礎服務”,其實就是把“XLServicePlatform”服務停止了。。。
於是我們就找360安全衛士的人反饋了這個問題,介紹了這個服務對於迅雷的重要性,希望360不要把這個服務列為“建議關閉”。
而且這個服務本身不占什麼內存,但是關閉之後,對用戶體驗的負麵影響很大。
經過幾輪溝通後,結果就是360安全衛士一直都沒有進行更改。。。
解決方案C:
既然很多用戶的XLServicePlatform服務會被360安全衛士停止,那麼迅雷就需要一個服務不能正常運行時的備份方案。
這個方案就是10.1.16版本上新增的“快速申請磁盤空間助手”功能,它的原理很簡單,就是個獨立的進程,在迅雷需要時啟動它申請管理員權限,然後幫迅雷申請磁盤空間。
迅雷啟動時,檢測到自身不具有管理員權限,且XLServicePlatform服務沒有正常運行,即判斷當前需要“快速申請磁盤空間助手”幫助申請磁盤空間。但是此時並不會立刻彈出UAC提示框。
而是當迅雷需要下載大於100MB的文件時,先詢問用戶選擇哪種申請磁盤空間的方式。
如果用戶選擇“快速方式”,這時才會拉起“快速申請磁盤空間助手”進程申請管理員權限(此時會彈一次UAC提示框),然後再由它幫迅雷申請磁盤空間。
這個方式雖然要彈一次UAC提示框,但是總好過方案A那種每次啟動迅雷都彈,而且作為方案B的備用方案,用戶體驗也不算太糟糕。