Upgrade to Pro — share decks privately, control downloads, hide ads and more …

用十分鐘《向 jserv 學習作業系統設計》

Avatar for 陳鍾誠 陳鍾誠
November 11, 2016

用十分鐘《向 jserv 學習作業系統設計》

Avatar for 陳鍾誠

陳鍾誠

November 11, 2016
Tweet

More Decks by 陳鍾誠

Other Decks in Education

Transcript

  1. 用十分鐘 向 jserv 學習作業系統設計 陳鍾誠 2016 年 9 月 21

    日 程式人《十分鐘系列》 程式人《十分鐘系列》 本文衍生自維基百科
  2. 主程式 main.c • 看來是用 UART 傳回一 個 hello World! 字串

    • 傳回到 UART 接收電腦 上! ( 這電腦通常就是 你用來編譯程式的那一 台 )
  3. 把每一行的意義寫上 // 儲存核心暫存器 // 包含在 ip 中的 psr // ip

    <= psr ( 狀態暫存器 ) // psp <= r0, r0 裡放的是 task 的堆疊,因為 activate(stack) // control <= #3=0x011, 切換到使用者堆疊 (process stack) // 載入行程的暫存器 // 跳到剛剛取出的 lr 暫存器,也就是行程的指令位址上開始執行
  4. 所以 syscall.S 的內容 • 主要是切換模式,回到 OS 控制下 // 從 user

    mode 切換到 kernel mode // 返回 http://infocenter.arm.com/help/index.jsp?topic=%2Fcom.arm.doc.dai0179b%2Far01s02s07.html
  5. 於是 os.c 裡也可以進行系統呼叫了 // 會從 user mode 切換到 kernel mode

    交還控制權給 OS // 原本只會用 UART 傳回給主電腦印出的 // 會從 user mode 切換到 kernel mode 交還控制權給 OS