--- robots: index, follow tags: NCTU, CS, 共筆 description: 交大資工課程學習筆記 lang: zh-tw dir: ltr breaks: true disqus: calee GA: UA-100433652-1 --- OSC === ## Lab https://grasslab.github.io/NYCU_Operating_System_Capstone/index.html ## Course [Course video](https://www.youtube.com/playlist?list=PLSzZz2w3tsTIuHbIs5V2UKnrtqCSyRLXz) [Course Q/A](https://docs.google.com/document/d/1f_v03mKmzut8Pt7Dm0knJFRyKY_aAZ_ZFFAJNBEfCvk/) ### Course 1 - Emulator / Simulator / VM 差別 - Why need simulator? - ex. 在 OS/CPU 平行開發時需要先寫 simulator (對 spec.) - 在這邊定義 VM 需要有 instruction set level 的支援 - 因此 JVM/llvm 在這邊比較算定義到 emulator - 0x8000 是哪裡來的? - 跟 x86 不同,rpi 是由 GPU 跑起 boot loader,而在 GPU 的 boot loader 設計上會直接把 boot img 從 fs 丟到 0x8000 上,然後跳過去執行 (x86 的 boot loader instruction 可以看到要跳得到的方,也是 0x8000) - Linker 與 CPU arch. 有關係嗎? - 現在的 Linker 跟 CPU 應該是有需要去看 instruction - 如果單純說 memory layout 應該是 linker script - Userspace Dubuger 如果 mask 掉成為 break,後面的 instruction 不是就被蓋掉了 - 會把原本被 mask 掉的 instruction 先存進其他替方 (應該存在 reg 吧?) - program segment 的 layout 是誰決定現在這個樣子的? - 如果說 load 進 mem 的話是 linker script 樣子 - 如果說為什麼是現在這個設計,stack 跟 heap 應該跟 cpu fetch 指令的順序有關,其他的應該是分類/記憶體保護有關,端看記憶體設計 - *=> 可否隨設計者高興?* 應該可 - 由誰來保護 memory 的 access ex. Read only? - hardware support: MMU 與 page table - *是否可用 software protect?* - Debug mode 在 compile 時如果有下 -g 會變很大,其中哪些東西? - symble table - symble table 相對 source file 行數 - etc. - **注意: 不會存 source file,而是連過去 => 如果 source file 被改掉/刪掉 會找不到** - *延伸討論 break 爲何指 mask 1 byte (or instruction set 最小長度單位),而不是把當個 instruction 都 mask 掉?*