2018年12月20日 星期四

Memory Dump Using RW.exe


Example: Dump SMBIOS Entry Point Area

The table anchor string "_SM_" is present in the address range 0xF0000 to 0xFFFFF on a 16-byte boundary. " - SMBIOS Specification

由上述的SPEC描述,我們可以得知SMBIOS Entry在Memory裡的位址及關鍵字串。

1. 打開RW.exe的Memory Dump功能 (Access→Memory) 後,可以直接點選Change Memory Space Base,在視窗中Start Address內輸入起始位址"0xF0000",就能列出這塊256 Bytes的Memory Value

2. 再用精確的Search功能找出SMBIOS Entry確切位址,點取工具列中的icon,分別在Find pattern欄內輸入"_SM_",在Start Address /End Address欄內輸入"0xF0000 /0xFFFFF"就能找到SMBIOS Entry Area。

2018年12月14日 星期五

BIOS Feature - SATA Mode


  SATA Mode在某些廠牌的BIOS裡又稱SATA Operation Mode,這項Feature用來調整Chipset的SATA controller設定 (ex. Intel PCH SATA RAID/AHCI controller hub),通常會有AHCI or RAID兩種選項 ↓

AHCI: SATA controller開啟AHCI模式 (Chipset必需支援AHCI)。


RAID: SATA controller同時開啟RAID (目前主流是由Chipset支援的IRST RAID - Intel Chipset SATA RAID Controller) /AHCI模式 ,使用者能在開機階段進入RAID setup utility建RAID,或是進OS利用IRST UI建RAID。


  以上是安裝SATA Storage device時的情形,但假如套用在NVMe PCIe storage device上又會如何,基本上NVMe走的跟SATA controller是完全無關的不同路徑 ↓

AHCI: 此時會單純走NVME。


RAID: 進行remapping,由IRST driver load the NVMe device至Chipset RAID controller底下來建IRST RAID。

2018年12月4日 星期二

如何查詢Secure Boot的狀態 | How to Check the Secure Boot Status


For Windows

1. System Information

2. Powershell command: Confirm-SecureBootUEFI

For Linux

Linux command: mokutil --sb-state

2018年11月20日 星期二

OS版本的定義 - Alpha/Beta/RC/RTM/OEM/GA


  在產品開發階段,測試人員安裝OS時常見到不同的英文代號,例如RHEL GA、Windows 2012 R2 RTM、SuSE Linux Enterprise Server 11 SP4等,其實這些都是軟體版本週期 (Software release life cycle) 中的名詞。

Software release life cycle - 

Alpha: 開發階段的初期測試版本,Bug最多。

Beta: 在Alpha之後的測試版本,可能加入新功能,變動較大。

RC (Release Candidate): 候選發行的穩定版本,基本功能完成,供Debug用。

RTM (Release to Manufacturing): 提供給製造商大量生產的版本,程式碼基本上跟GA版相同。

OEM (Original Entrusted Manufacture): 給OEM廠商預裝的客製版本,隨機台發行,不單獨發售。

GA (General Availability): 進入市場發售給End User使用的正式版本。

For Windows -

SP (Service Pack): 累積的更新補丁包,提供給用戶方便進行一次大更新。

LTSC (Long Term Servicing Branch): 針對要求高穩定性且提供長期支援服務的用戶,許多一般消費功能都不提供,ex. Cortana、 Edge 、Windows 市集等,也僅支援安全性更新,乾淨與穩定是LTSC的特色。


MSDN (Microsoft Developer Network): 授權給軟體開發者的版本。

2018年10月21日 星期日

DQA常用工具軟體清單 | Common Software Tools for DQA Engineer




  根據本身DQA經驗,記錄一下在PC產業做系統整合測試時使用過軟體工具 (Windows版本為主),可運用在Server、NB、DT、AIO、Tablet、BIOS等產品上。

硬體資訊檢測

  • CPU-Z: 可檢視CPU、Memory、MB、Graphic等硬體的基本資訊。 
  • CPU-V: 檢測CPU是否支援/開啟VT-x虛擬化技術。 
  • AIDA64: 除了能顯示電腦硬體的資訊外,還能進行燒機壓力測試。 
  • HWMonitor: 監控系統上各硬體的電壓、溫度及風扇轉速等狀態,支援CPU、Memory、Graphic、HDD…等。

硬體資訊讀取 (BIOS)
  • RW-Everything: 具有強大的硬體資訊讀寫功能,能讀取系統上大部份的硬體設備 ex. PCI、SMBIOS、IO、Memory、BIOS等。 
  • RU.EXE+RU.EFI: 跟RW相似的硬體資訊讀寫功能,可視為RW的DOS/Shell版。

CPU溫度監控

  • Intel Thermal Analysis tool (TAT): 除了能監控Intel CPU溫度外,另有調整CPU workload的功能。 
  • RMClock 
  • Core Temp

顯示卡檢測
  • GPU-Z: 專門檢測顯示卡資訊的工具。

記憶體檢測
  • MemTest86: 最老牌的記憶體檢測工具,需燒錄ISO檔至光碟或直接安裝在USB key上使用。 

硬碟檢測
  • SeaTools: 硬碟大廠Seagate推出的硬碟診斷工具,也有DOS版本。 
  • HDDScan: 簡易版的硬碟診斷工具。 
  • CrystalDiskInfo

硬碟管理
  • SPFDisk: DOS版本的老牌硬碟分割工具,也能製作多重開機選單。 
  • Ghost: 磁碟備份工具。

USB裝置檢測
  • USB View: 可查詢系統上的USB控制器及裝置資訊,包含PID/VID。

電源供應器測試
  • OCCT: 電源供電穩定性測試工具。

網路通訊連線
  • PuTTY /PieTTY: 最多人用的安全遠端連線工具,提供Telnet、SSH、Serial…等多種連線方式,支援 IPv4、IPv6等協定。 
  • WinScp: SSH遠端連線的檔案傳輸工具,ex. 上傳VIB檔到Vmware ESXi Host。 
  • AccessPort: Serial Port測試與監控軟體。 

I/O&網路效能評測
  • CrystalDiskMark: 測試硬碟、記憶卡、隨身碟讀寫速度。 
  • Iometer: 業界公認的Storge I/O效能量測工具,能計算硬碟、RAID或網路設備NAS等各式儲存裝置的IOPS。 
  • iPerf: 測試網路效能 - TCP/UDP的傳輸頻寬。

網路喚醒
  • WOL: 簡單好用,輸入IP後能自動抓MAC Address。 
  • Magic Packet Utility

電源管理測試
  • Pwrtest: 微軟官方版的電源管理測試工具,以command-line介面執行S1/S3/S4測試。 
  • Sleeper: S1/S2/S3/S4測試。 
  • Rebooter: Reboot測試。

十六進制編輯
  • HxD: 可檢視並編輯檔案 (ex. BIN)、記憶體、磁碟資料。

燒機軟體
  • Intel Power Thermal Utility tool (PTU): Intel in-house tool 
  • PassMark BurnInTest: System stress test
  • Prime95: CPU stress test
  • FurMark: GPU stress test 
  • 3D Mark: GPU stress test

Intel vPro
  • Meshcommander

IPMI平台管理
  • IPMItool 

USB安裝碟
  • Rufus: 快速製作USB開機隨身碟,支援各式ISO檔及MS-DOS、FreeDOS,ex. 大量製作各式OS的USB安裝碟。
  • ISO to USB

文書處理

  • Beyond Compare: 檔案、資料夾比對。

2018年10月5日 星期五

S3/S4測試工具 - PwrTest




  PwrTest (Power management test tool) 是由微軟自行開發的測試工具,能測試系統的電源管理能力,在操作上都是以command-line的方式進行,並提供多種log格式。

Step 1. 到微軟官網下載Microsoft Windows Driver Kit (WDK) 並安裝在測試主機上。

Step 2. 到WDK安裝路徑裡 (ex. C:\Program Files (x86)\Windows Kits\10 <windows version>\Tools\x64 <platform>\PwrTest.exe) 找到PwrTest.exe。*也可以在別台電腦上安裝WDK後,再將PwrTest.exe copy至測試機台上。

Step 3. 以系統管理員身分開啟CMD或PowerShell執行PwrTest.exe。

Step 4. PwrTest Basic Command:

pwrtest /sleep /c:n /d:n /p:n /s:n

/c: 
循環的次數,也就是要跑多少round。

/d:
每round的間隔時間 (秒)。

/p:
設定睡眠時間的長短 (秒)。

/s:1
測試S1 mode。

/s:3
測試S3 mode。

/s:4
測試S4 mode。

/s:all
測試所有支援的Power state (依照順序)。

/s:rnd

測試所有支援的Power state (隨機)。

/s:hibernate
測試休眠模式 (S4)。

/s:standby
測試任一Standby state (S1 or S3).


/?
更多參數的使用說明。
Step 5. 跑完test後,會在資料夾裡自動產生log。

2018年9月25日 星期二

Reboot測試工具 - Rebooter


  Rebooter也是PassMark Software發行的小工具,其功能強大又操作簡單,適用在auto-reboot long run test。


Rebooter操作介面
1. Maximum reboots: 設定重新開機的次數。
2. Reboot type: Reboot (default) /Shutdown /Power off /Log off,一般我們會選擇Reboot進行壓力測試。
3. Force shutdown: Ask to close (default) - OS裡如有運行中的程式會阻擋shutdown /Force to close - 直接強制進行shutdown的動作
4. Delay: 設定每次重開機間的間隔時間。
5. *Auto load Rebooter at startup: 必需打勾,每次重開機後Rebooter才會自動啟動進行下一次循環。
6. Application: 重開機後自動開啟特定應用程式。
7. Log file: log存放路徑。
8. Auto-login: 目前自動登入的功能只限於NT/2000/XP/Vista/Window 7。


Rebooter




2018年9月21日 星期五

S3/S4測試工具 - Sleeper



  電源管理是讓電腦硬體正常運作的重要機制,對此PassMark Software發行了Sleeper這套工具來測試系統電源管理效能。Sleeper能測試系統睡、休眠與喚醒的能力 (支援ACPI中的S1~S4 mode),也就是俗稱的跑long run test。


Sleeper操作介面 
1. Suspend Types For Cycle: 選擇讓電腦自動進入睡眠 (S1~S3) 或休眠 (S4) 狀態,並定時自動喚醒。
2. Sleep System Information: 顯示電腦支援的睡眠模式。
3. Sleep Now /Stop Cycle: 開始 /停止測試鍵。
4. Configuration: 設定測試參數。


Sleeper Configuration 
1. Sleep durations: 設定睡眠時間的長短 (秒)。
2. Cycle Settings: 設定睡眠次數 (也可以選擇Cycle forever - 無限次數) 及間隔時間。
3. Log file settings: log相關設定。


Sleeper 

2018年9月12日 星期三

使用MeshCommander遠端遙控桌面 | Using MeshCommander for Remote Desktop



  MeshCommander是一套根據Intel AMT (Active Management Technology) 技術而設計的開源軟體,我們可以使用MeshCommander來遠端監控或是遙控電腦主機。以下是用Dell的電腦來示範Remote Desktop功能:

Part 1 - 到Client端 (被遙控的電腦主機) 的BIOS中啟動Intel AMT的遠端網路管理功能。

Step 1. 開機並按F12進入BOOT MENU後,選取Intel Management Engine BIOS Extension (MEBx)

Step 2. 在MEBx的MAIN MENU頁面中先選取MEBx Login,輸入預設密碼admin登入。

Step 3. 成功登入後,再選取Intel (R) AMT Configuration

Step 4. 在INTEL (R) AMT CONFIGURATION頁面中選取Active Network Access來開啟遠端網路管理功能,完成後存檔離開MEBx,進入OS並保持連線。

Part 2 - 在Host端OS裡安裝MeshCommander。

Step 5. 開啟MeshCommander後,點選Add Computer加入Client端主機。

Step 6. 
*Friendly Name: 自訂Client端主機的名稱。
*Hostname: 填入Client端主機的IP。
*Username: 預設為admin。
*Password: 填入MEBx的密碼。

Step 7. 成功加入Client端主機後,點選Connect連線。

Step 8. 連線後,可先到System Status頁面查看Client端主機的狀態,再選擇Remote Desktop頁面準備遠端遙控。

Step 9. 點選Connect後,系統會出現訊息要求Enable Redirection Port/KVM Remote Desktop,勾選後按OK即可。

Step 10. 此時在Client端主機的螢幕上會出現一組6位數字,將這組數字填入MeshCommander的視窗內。

Step 11. 遠端遙控桌面成功。

2018年8月23日 星期四

台大資訊系統訓練班 - Linux作業系統班上課心得



上課期間: 2017/3~2017/5

講師: 吳嘉翰 

上課方式: 
  自帶筆電到教室現場操作 (也可現場借用台大電腦教室的公用筆電),電子檔簡報講義可以從網站上下載,另需準備一支16G以上的USB 3.0隨身碟,用來儲存上課用的Linux OS映象檔。

上課內容: 
  用VirtualBox虛擬機器安裝Ubuntu後,跟著講師依照講義一動一動的教學,之後每次上課都是開啟VirtualBox裡的Linux OS來操作↓

第一
Linux的認識與使用
第二章
使用文字界面與Linux溝通
第三章
vim文字編輯器
第四章
檔案系統與目錄管理
第五章
使用者帳號與程序管理
第六章
套件管理
第七章
程式化腳本
第八章
系統的啟動與作業排程
第九章
Linux網路管理基礎
第十章
架設Apache伺服器
第十一章
網路檔案系統(NFS)

上課心得:
  在前一份工作開始接觸到Linux作業系統,主要是安裝OS、上driver及下Command執行測試項目,但專案爆炸兵荒馬亂期間,身為新人只能照著SOP先把工作完成交差了事,對於Linux OS的操作相當侷限在少數功能上,因此趁換新工作的空檔來上課做系統性的複習。
  課程難易度對於當時略懂Linux操作的我是剛剛好的,但完全沒接觸過Linux的初學者,下課之後可能就需自己多加複習追上進度。講師是廣達的工程師,上課期間也會分享一些業界趣事,不會無聊。PS. 上課學員的電腦知識程度差異頗大,講師要如何掌握上課品質實在是個挑戰啊。

2018年8月7日 星期二

UEFI Shell 的基本操作 | Basic Instructions for Using UEFI Shell


  剛進到EFI Shell時,預設畫面 (圖1) 會顯示Shell版本以及Device mapping table。
圖 1

  Device mapping table會列出所有EFI shell能辨識出的儲存裝置 (必需含有FAT32 Partition),並依序命名為fs0、fs1.....,fs = filesystem即每個fsX代表一個Partition。已安裝UEFI OS的儲存裝置會被指定fsX: HardDisk屬性 (根據.efi開機檔的路徑),如圖1的fs0~fs2即是代表某顆UEFI Win10 HDD裡的Partitions (圖2),一般隨身碟則會被辨識為fsX: Removable HardDisk
圖 2

  而我們所使用的EFI Shell隨身碟在此被辨識為fs3,想切換到隨身碟下,只需在示符號後輸入fs3:即可 (圖3):

Shell> fs3: 成功進入隨身碟後 fs3:>

  依此類推,想再切換到其它裝置則輸入fsX:即可。
圖 3

  EFI Shell的指令基本上跟Linux指令幾乎相同,可以輸入help來查詢所有的指令 (圖4)。輸入ls則可以顯示目前目錄中所有的檔案跟子目錄 (圖3) ─ 綠色的.efi是執行檔 (相當於Windows中的.exe檔),可以直接執行也能搭配參數執行,ex. 使用Fpt更新BIOS:

Fpt.efi -f Test_BIOS.bin

  綠色的.nsh也是可以直接執行的批次檔 (相當於Windows中的bash檔);藍色的為子目錄,輸入cd可以切換進入子目錄中 ;其它的所有非執行檔則以白色顯示。
圖 4






2018年7月27日 星期五

如何開啟Diskpart | How to Open Diskpart


Diskpart是Windows內建的磁碟管理工具,除了一般直接在Windows內執行外,也可以用Windows安裝光碟或是USB安裝碟由外部執行,如此一來,就能在沒有安裝Windows的情況下利用Diskpart格式化空硬碟。

有安裝Windows:
進入Windows → 開啟cmd → 輸入diskpart

沒安裝Windows:
進入Windows安裝碟 → 在安裝畫面按Shift + F10開啟cmd → 輸入diskpart

2018年7月23日 星期一

CHIPSEC (Platform Security Assesment Framework)



  CHIPSEC (Platform Security Assesment Framework) 是McAfee所開發的工具,能分析PC platform中硬體、系統韌體 (BIOS/UEFI) 與元件等的安全性,其運作原理是對比前後的EFI image是否有差異,找出韌體被修改過而感染的可能性。目前CHIPSEC套件支援Windows, Linux, Mac OS, UEFI shell,以下是CHIPSEC在Win10 x64的執行步驟: 

Step 1. 下載CHIPSEC package (https://github.com/chipsec/chipsec)。

Step 2. 安裝Python 2.7,及相關套件 - pywin32、WConio、py2exe。

Step 3
. 將CHIPSEC package裡的所有檔案複製到C:\Python27資料夾底下。

Step 4. Build CHIPSEC Windows driver: 將 chipsec_hlpr.sys (產生.sys檔的方法請參照\drivers\win7\readme)複製到C :\Python27\chipsec\helper\win\win7_amd64資料夾底下

Step 5. Turn off kernel driver signature checks: 按著Shift鍵+Reboot進入Troubleshoot後,依序點選Advanced Options → Startup Settings → Restart → 按F7執行 7) Disable driver signature enforcement。

Step 6. Start CHIPSEC driver/service: 以管理員權限開啟CMD執行
(1) sc create chipsec binpath="c:\Python27\chipsec\helper\win\win7_amd64\chipsec_hlpr.sys" type= kernel DisplayName="Chipsec driver"
(2) sc start chipsec

Step 7. Run CHIPSEC: 以管理員權限開啟CMD執行 python chipsec_main.py /python chipsec_util.py












2018年7月13日 星期五

如何在Win10裡刪除EFI 磁碟分割區 | How to Delete EFI Partition in Windows 10


Open Command Prompt as Administrator:

1. diskpart #執行Diskpart程式


2. list disk

3. select disk #選擇EFI分割區所在的磁碟機

4. list partition

5. select partition 5 #選擇想刪除的EFI分割區 (可到磁碟管理工具查)

6. delete partition override


刪除EFI分割區後的硬碟空間會呈現Unallocated

2018年7月12日 星期四

如何在Win10裡建立EFI 磁碟分割區 | How to Create EFI Partition in Windows 10



Open Command Prompt as Administrator:

1. diskpart #執行Diskpart程式


2. list disk

3. select disk 0 #選擇想加入EFI分割區的磁碟機

4. list partition

5. select partition 4 #通常選擇Win OS所在的分割區

6. shrink desired=1000 #指定新建立的分割區大小 (單位:MB)

7. create partition efi size= 1000 #將上個步驟所切割出的新分割區EFI格式化成EFI分割區


8. format quick fs=fat32 #對EFI分割區進行FAT32格式化建立EFI磁碟區

9. assign letter= D #指定
EFI磁碟區磁碟機代號

10. list partition

11. list volume 

EFI磁碟區在Windows裡會呈現隱藏狀態,需在EFI Shell裡開啟↓。


2018年6月22日 星期五

Self-Certification Test (SCT)


  UEFI Self-Certification Test (SCT) 是由Intel開發的自動化驗證工具,提供給韌體開發者來驗證Platform是否符合UEFI SPEC規範,目前支援的Platform有x64, IA-32, ARM 。

SCT Package (下載點:http://www.uefi.org/testtools) 裡有以下附件: 
  • Documents.zip 
  • EMS.zip – 透過remote的方式執行SCT (Passive Mode)。 
  • IHVSCT. zip – 提供給IHV業者驗證UEFI drivers。 
  • UEFISCT.zip – SCT tool (Native Mode) 

x64 Platform (Native Mode) 測試步驟:

Step 1. 如想執行完整的SCT,Platform需安裝Storage device、USB drive,及接上網路線。

Step 2. SCT需在UEFI Shell環境下執行,將UEFISCT.zip裡的SctPackageX64資料夾複製至UEFI Shell USB drive裡。

Step 3. 在BIOS裡將UEFI Shell設為First Boot Device,因為跑SCT期間會多次auto-reboot。

Step 4. Boot to UEFI Shell > fsX: > SctPackageX64,執行InstallX64.efi來安裝SCT於USB
drive裡 (此處我們選 6: FS5:)。*也可將SCT安裝在SSD裡的EFI partition裡 (5: FS4:),測試速度會更快,但必需先在SSD裡切割出容量夠大的EFI partition及建立Shell環境。

Step 5. 安裝完畢後,會在USB drive裡產生一個新的SCT資料夾,切換至/SCT底下即可開始執行SCT.efi來驗證。

Step 6. 輸入”SCT.efi –u”開啟GUI畫面操作,也可直接下command來跑SCT (ex. “SCT -a”, Execute all test cases)。

Step 7. 執行”SCT.efi –g <filename>”產生Test report (CSV檔)。

2018年6月19日 星期二

如何讓Win10自動登入


進行壓力測試時,需將Windows設定成自動登入以利執行Rebooter程式。

方法一.

Step 1.
在Win10裡執行"Netplwiz"指令,開啟使用者帳戶 (User Accounts)視窗。


Step 2.
在這台電腦的使用者清單中選擇目前登入的帳號後,取消勾選必須輸入使用者名稱和密碼,才能使用這台電腦 (Users must enter a user name and password to use this computer),再按確定。



Step 3.
此時會彈出自動登入的視窗,輸入目前登入的帳密後,按確定即可完成自動登入的設定。


方法二 - 修改登錄檔

Step 1.
在Win10裡執行"Regedit",啟動登錄編輯程式 (Registry Editor)。

Step 2. 切換到 -
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
機碼目錄底下。


Step 3.
點選Winlogon子機碼後按右鍵,執行新增字串值 (String) 的動作。


Step 4. 
將新增登錄值的數值名稱 (Value name) 命名為"AutoAdminLogon",再修改其數值資料 (Value data)為"1"。

Step 5.
點選Winlogon子機碼後按右鍵,新增登錄值"DefaultUserName",修改其數值資料為"登入的帳號"。

Step 6.
點選Winlogon子機碼後按右鍵,新增登錄值"DefaultPassword",修改其數值資料為"登入的密碼" (假如該帳號無設定密碼,數值資料欄位保持空白即可)。

Step 7.
完成後,登錄編輯程式裡應該有以下三個新的設定。

- AutoAdminLogon設定讓Windows自動登入
- DefaultUserName設定自動登入的帳號
- DefaultUserName設定自動登入的帳號密碼


2018年5月31日 星期四

如何查詢PowerShell版本


  在PowerShell裡輸入指令$PSversionTable欄位PSversion顯示的前兩位數字即代表PowerShell版本 (ex. 5.1版)↓。

2018年5月27日 星期日

如何儲存PuTTY的log

開啟putty.exe後點選左邊Category列中的 Session → Logging:


1. Session logging: 選擇要儲存哪部分的Session。
2. Log file name: 輸入log的名稱及存放路徑。
3. What to do if the log file already exists: 選擇覆蓋已存在log的方式。
4. 設定完後,再點選Category列中的Session回到主畫面即可。



2018年5月23日 星期三

排程 (Scheduling)


CPU Scheduling Concept

當多個行程或執行緒在就緒佇列 (Ready Queues) 中等待進入CPU時,系統如何選擇適當的行程優先進入目前可執行的CPU中,這個作業即是CPU排程 (以下都簡稱為排程)。

排程是多工作業系統 (Multi programming) 的主要工作之一,目的在提高CPU的使用率 - 當CPU處於怠惰 (Idle) 時,立即安排其他就緒的行程進入CPU。

Type of Process

行程的執行會在兩個狀態間不停的切換:
- CPU Burst: 行程在CPU執行的期間。
- I/O Burst: 行程在等待I/O的期間。

CPU Bound: 此類行程大部分時間都在進行CPU計算上,通常由些一較長的CPU Burst組成。
I/O Bound: 此類行程花費大部分時間在I/O動作上 (ex. 播放DVD),由許多小的CPU Burst組成。

Scheduler vs. Dispatcher

排程器 (Scheduler): 短程排程器 (Short - Term Scheduler 或稱 CPU Scheduler),由就緒佇列中選出下一個可以執行的行程。

分配器 (Dispatcher): 當排程器選出下一個行程後,就把工作交給分派器執行下列動作
– 本文切換
– 將行程轉換至使用者模式 (排程是在核心模式進行)
– 重新回到使用者的程式,從適當位址開始執行

由分派器停止一個行程到開始執行另一個行程的這段時間稱為分派延遲 (Dispatch Latency)。

Preemptive vs. Non-Preemptive

行程進行排程的時機有兩種模式:
- 可搶先 (Preemptive): 當新的行程進入系統,或有其它行程進入就緒狀態 (ex. 中斷發生: Run → Ready/ 中斷喚醒: Wait → Ready),能隨時進行搶佔CPU,讓目前執行中的行程暫停,再將CPU控制權交予優先權較高的行程。
*需注意同步的問題。

- 不可搶先 (Non-Preemptive): CPU配置給某行程後,此行程可一直擁有CPU控制權直到終止或是轉換到等待狀態 (ex. I/O發生: Run → Wait) 釋出CPU為止,其他行程無法搶佔。

Scheduling Algorithms

先到先執行 (First - Come -First Served, FCFS): 將就緒佇列內等待的各行程,依先到先執行的法則,排序進入CPU執行。

最短工作優先 (Shortest-Job-First, SJF): 根據下一次CPU Burst最短的行程可優先取得CPU的控制權。

優先權 (Priority): 行程的優先權高低來分配CPU 的使用順序,優先權愈高的行程可優先使用
CPU。但如果某行程的優先權很低,可能永遠無法進入CPU,即為饑餓 (Starvation) 現象,可用老化 (Aging) 來解決此問題 - 隨等待時間增長,機動提高該行程的優先權。

循環分時 (Round-Robin, RR): 將CPU時間等切割成數個時間分量 (Time slice/ Quantum),時間分量代表每個行程每次取得CPU控制權的時間長短,因此當某個行程執行過程中超過一個時間分量時,便會被中斷 (Run → Ready)。

多層佇列 (Multilevel Queue): 將行程分類,相同類型的行程分在同一佇列,而每種佇列都有自己的排程方法,佇列之間還有優先權的關係,前景行程 (Foreground Process) 的優先權高於背景 (Background Process) 行程。

多層回饋佇列 (Multilevel Feedback-Queue): 允許行程在各個佇列間移動,避免飢餓的現象發生 (由低優先權的佇列移往較高優先權的佇列中等待)。

Multi-Processor Scheduling

同質性 (Homogeneous) CPU系統

佇列與CPU:
- 單一排程器 (Single Scheduler): 多個CPU共用一個佇列。
- 多重排程器 (Multiple Scheduler): 每個CPU都有專屬的佇列。

CPU與CPU (共用佇列):
- 對稱式 (SMP): 每個CPU的行為都是對等的,各自行進行排程,當CPU空閒時就到佇列中- 挑選一個行程來執行,但需克服同步的問題。
- 非對稱式 (NMP): 由某顆CPU來幫其他CPU進行排程。

Load Balancing vs. Processor Affinity (兩者為互斥關係)

負載平衡 (Load Balancing): 企圖保持工作均勻的分散在所有CPU,透過Push將過度負載的CPU裡行程分散到閒置CPU;用Pull動作將行程由忙碌CPU拉至閒置CPU。

處理器親和性 (Processor Affinity): 避免行程在不同間CPU轉移,當同一CPU上保持住同個行程,表示行程對該CPU有親和性。

Scheduling Criteria

1. CPU使用率 (Utilization): 0~100%。

2. 工作量 (Throughput): 單位時間內完成的行程數量。

3. 等待時間 (Waiting Time): 行程在就緒佇列裡等待的時間總和。

4. 回覆時間 (Turnaround Time): 完成一個行程所需的時間。

5. 反應時間 (Respond Time): 使用者發出要求後,收到第一個回應所需的時間。

(1)(2)計量越大越好;(3)(4)(5)越小越好。

Evaluation

定量模型 (Deterministic modeling )

佇列模式 (Queueing model)

模擬 (Simulation)

實作 (Implementation )

Other Issue:
Long - Term Scheduler/Job Scheduler vs Short - Term Scheduler/CPU Scheduler
Foreground Process vs Background Process
Soft affinity vs Hard affinity

2018年4月29日 星期日

挖礦程式 (BRTSvc)


最近發現安裝某款免費軟體後,電腦效能變成很不穩定,也無法自動關閉螢幕,追根究底原來是被植入自動挖礦程式 - BRTSvc,強迫你當礦工。

解決方案:

1. 檢查工作管理員的處理程序以及效能 資源監視器中是否有 BRT.exe 相關的應用程式正在執行 → 結束應用程式。
2. 檢查是否存在此資料夾: C:\Program Files (x86)\BRTSvc\brt.dll → 刪除資料夾。
3. 移除該軟體或是停止更新。

目前已知發生問題的軟體: Virtual DVD, oCam

2018年4月26日 星期四

PC產業常用英文名詞


英文縮寫 - 英文全名 - 中文 - 簡體

A
ACPI - Advanced Configuration and Power Interface Specification - 進階組態與電源介面
AHCI - Advanced Host Controller Interface - 進階主機控制器介面
ATX - Advanced Technology Extended - 進階技術延伸主機板規格

B
BIOS - Basic Input Output System - 基本輸入輸出系統

C
CPU - Central Processing Unit - 中央處理單元
CRB - Customer Reference Board - 公板
CSM - Compatibility support Module - 相容性支援模組

CMOS - Complementary Metaloxide Semiconductor - 互補式金屬氧化層半導體

D
DHCP - Dynamic Host Configuration Protocol - 動態主機配置協定
DMI - Direct Media Interface - 直接媒體介面
DNS - Doman Name System - 網域名稱系統
DVI - Digital Visual Interface - 數位視訊介面

F
FAT - File Allocation Table - 檔案配置表

G
GPT - GUID Partition Table - GUID磁碟分割表

H
HDD - Hard Disk Drive - 硬碟 -
 硬盘
HDMI - High Definition Multimedia Interface - 高畫質多媒體介面
HTTP - Hyper Text Transfer Protocol - 超文件傳輸協定

I
ICH - I/O Control Hub - I/O路徑控制器
IGD - Integrated Graphics Device -
 內建顯示裝置
Intel ME - Intel Management Engine - 管理引擎
IPMI - Intelligent Platform Management Interface - 智慧平台管理介面

L
LBA - Logical Block Addressing - 邏輯區塊定址

M
MAC - Media Access Control - 媒體擷取控制層
MBR - Master Boot Record - 主開機記錄
MCH - Memory Control Hub - 記憶體控制器中樞

N
NAS - Network Attatched Storage - 網路儲存伺服器
NFS - Network File System - 網路檔案系統
NTFS - New Technology File System - NT檔案系統
NTP - Network Time Protocol - 網路校時通訊協定

O
ODD - Optical Disc Drive - 光碟機 - 
光驱

P
PCB - Printed Circuit Board - 印刷電路板
PEG - PCI Express Graphics - PCIe顯示卡

R
RAID -Redundant Array of Independent Disks - 磁碟陣列
RTC - Real Time Clock - 即時時鐘

S
SAS - Serial Attached SCSI - 序列式SCSI
SATA - Serial Advanced Technology Attachment - 序列式ATA
SPD - Serial Presence Detect - 序列存在檢測
SPI - Serial Peripheral Interface - 串列周邊介面
SSD - Solid State Disk/Drive - 固態硬碟
SSH - Secure Shell - 安全殼層

T
TPM - Trusted Platform Module - 可信賴平台模組


UEFI - Unified Extensible Firmware Interface - 統一可延伸韌體介面
UMA - Unified Memory Architecture - 統一記憶體架構
USB - Universal Serial Bus - 通用序列匯流排 -
 U盘

V
VGA - Video Graphics Array - 視訊圖形陣列 


W
WOL - Wake On Lan - 網路喚醒

2018年3月31日 星期六

開關 Windows 10 Test Mode


開啟 Test Mode:
開啟PowerShell/ CMD (Run as administrator) > 執行指令Bcdedit.exe -set TESTSIGNING On > Reboot

關閉 Test Mode:
開啟PowerShell/ CMD (Run as administrator) 執行指令Bcdedit.exe -set TESTSIGNING Off > Reboot