contributed by < NeedToDebugMyLife
>
確保所有作業和測驗均使用 NeedToDebugMyLife
帳號提交
於是我愉快的把飲料杯放上去,開始期待他按照我想像的設計運作,接著悲劇就出現了。
杯子掉不下去。
掉不下去,掉不下去,掉不下去(抱頭)。
為什麼會出問題呢?因為這裡是他媽的真實世界啊。
這或許就是理論和實作的差別
列出針對前六週教材 (含測驗題目) 的疑惑。
誠實面對自己。
前陣子在 FaceBook 看到老師在系統軟體系列課程討論區社團分享的貼文,這則貼文是在 rv32emu 運行毀滅戰士 (DOOM) 遊戲的展示。這讓我產生了很大的興趣,究竟該如何讓一款遊戲運行在 Linux 系統上。
起初的打算是想效仿曾益铭學長,想辦法讓一款遊戲運行在 rv32emu 或 Linux 系統上。
原先選定的遊戲是 Minecraft 這款遊戲,原因是我本身對這款遊戲的瞭解比較多。但經過研究後,我發現了一些問題
考量到以上幾點,這個方向或許不適合作為 term project 的題目,所以改為選擇其他方案。
目前的方向大致上有兩種:
對於在 Linux 系統上玩遊戲,我首先想到的是 Valve 開發的 Proton,Proton 整合了需多工具 (例如: Wine, DXVK, …等)。目的是讓一些只能在 Windows 上運行的遊戲也能在 Linux 上執行,目前已經整合到 Steam 平台,約有2萬種遊戲可以透過 Proton 在 Linux 系統上成功運行。
Wine 可以說是 Proton 得以成功運作的核心。簡單來說,Wine 就是一個轉譯系統,它會把執行程式使用的 System Call 轉換 (映射) 為對應的 Linux System Call。
Windows NT architecture
Wine architecture
基於某些原因 (Wine 的官方 wiki 也沒有明確說名是什麼原因),Wine 的架構比較接近傳統的 Windows NT 架構。而 Wine 的運作必須完全覆蓋三大 DLLs (KERNEL/KERNEL32, GDI/GDI32, and USER/USER32)
<修正中>
DXVK,一種將 DirectX 轉譯為 Vulkan
當遊戲使用 DirectX 進行繪圖時,DXVK 會把指令即時轉換為 Vulkan 指令,並交由 Linux 的 GPU driver 運行。