note

課程:系統程式 – 筆記、習題與報告

欄位 內容
學期 110 學年度下學期
學生 魏仲彥
學號末兩碼 41
教師 陳鍾誠
學校科系 金門大學資訊工程系
課程內容 https://gitlab.com/ccc110/sp/
教材網址 陳鍾誠的系統程式課程
期中作業 研究 rubi 編譯器 後寫成報告
期末作業 課堂筆記
課堂加分題 HW1HW2HW3

System Program

week content date
week01 環境設定
使用GCC執行C
使用g++執行C++
反組譯目的碼
使用GDB進行Debug
2022/02/14
week02 C<ul><li>C 常錯寫法</li><li>動態分配空間 </li><li>C-陣列陷阱</li><li>微積分程式碼</li><li>C 觀念</li></ul>CPU0處理器<ul><li>CPU0 暫存器 </li><li>CPU0 指令集 </li><li>CPU0指令格式 </li><li>CPU0 狀態暫存器 </li><li>定址模式 </li><li>CPU0的程式執行 </li></ul>組譯器<ul><li>映像檔 </li><li>組譯器演算法</li></ul>連結與載入<ul><li>簡介 </li><li>載入器</li></ul> 2022/02/23
week03 語法理論
正規表達式
C0語言
程式碼解說 03-compiler<ul><li>gen </li><li>exp0</li></ul>
2022/03/02
week04 程式碼解說 03-compiler(續)<ul><li>exp0 </li><li>lexer</li><li>03a-compiler</li></ul> 2022/03/09
week05 C6
<ul><li>自我編譯</li><li>asm<ul><li>sum</li><li>fib</li></ul></li><li>遞迴下降</li></ul>
2022/03/16
week06 gcc
x86組合語言<ul><li>hello.s</li><li>foobar.c</li><li>esp、ebp圖解</li></ul>內嵌式組合語言<ul><li>inline.c</li><li>jit.c快速編譯</li></ul>
2022/03/21
week07 C函式庫
Makefile寫法
2022/03/30
week08 放假! 2022/04/06
week09 作業系統<ul><li>作業系統的五大功能模組<ul><li>行程管理</li><li>記憶體管理</li><li>輸出入系統</li><li>檔案系統</li><li>使用者介面</li></ul></li><li>行程<ul><li>行程的資料共享方法</li><li>執行緒(Thread)</li><li>競爭狀況與臨界區間</li></ul></li><li>多工</li><li>排程<ul><li>排程的方法</li><li>內文切換</li></ul></li><li>記憶體管理<ul><li>記憶體分配策略</li><li>堆積空間不足時的處裡方法</li><li>記憶體管理單元(MMU)</li><li>磁區結構</li><li>輸出入系統</li><li>驅動系統</li></ul></li></ul><li>Linux<ul><li>Linux 行程管理</li><li>Slab 記憶體配置器</li><li>Linux的驅動程式</li></ul></li></ul>Linux 指令 2022/04/13
week10 函數式編成
pair
map
lisp
2022/04/20
week11 race condition<ul><li>race.c</li><li>norace.c</li></ul>生產者消費者問題
哲學家用餐問題
fork<ul><li>posix</li><li>process</li><li>多工處裡</li><li>exec</li><li>system</li><li>zombie</li></ul>
 
week12 FileSystem<ul><li>IO</li><li>echo</li><li>stderr</li><li>shell</li></ul>Net<ul><li>timer</li><li>server</li><li>client</li><li>connetion</li></ul> 2022/05/04
week13 HTTPServer<ul><li>Hello World!</li><li>connect</li><li>response</li><li>thread</li></ul>提升程式效能 2022/05/11
week14 Inter-Process Communication<ul><li>fifo</li><li>mmap</li><li>msgQ</li><li>udp</li><li>tcp</li><li>thread</li></ul>LinuxNet<ul><li>poll</li><li>epoll</li><li>msgQ</li></ul>特殊函數<ul><li>strcmp</li><li>fgets</li><li>fopen</li><li>mmap</li><li>msgget</li><li>msgsnd</li><li>msgrcv</li></ul> 2022/05/18
week15 mini-riscv-os<ul><li>HelloOs</li><li>ContextSwitch</li><li>MultiTasking</li></ul> 2022/05/25
week16 mini-riscv-os-續<ul><li>TimerInterrupt</li><li>Preemptive</li></ul> 2022/06/01
week17 xv6<ul><li>啟動程式</li><li>行程控制</li><li>行程初始化</li><li>設定虛擬機</li><li>init</li><li>cat 指令</li></ul> 2022/06/08
week18 xv6-續<ul><li>cat.c</li><li>open()</li><li>read()</li><li>inode,-superblock-與檔案系統</li><li>緩衝模組-bio.c</li><li>虛擬硬碟存取-virtio.h/virtio-disk.c</li><li>file</li><li>整體的檔案系統結構</li><li>xv6:-中斷-Interrupt-Trap<ul><li>重要觀念</li><li>main.c</li></ul></li><li>xv6:-平行與鎖-lock—-多核心的控管<ul><li>xv6:-磁碟驅動與-virtio-交互協議</li><li>參考</li><li>簡介</li><li>運作方式</li></ul></li><li>xv6:-分頁表與-MMU<ul><li>riscv.h</li></ul></li><li>Q</li></ul> 2022/06/15