Re: 什麼樣的程式可以不用透過OS執行?

看板Programming作者 (ggg)時間17年前 (2008/09/21 14:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/11 (看更多)
※ 引述《CharArray ( char[] )》之銘言: : 標題: 什麼樣的程式可以不用透過OS執行? : 如8題 除了 bios, 跟多重開機程式外 : driver似乎也要透過os才有辦法跟硬體溝通吧 (?) : 還有什麼樣的程式可以不用透過os就直接執行的嗎? : -- : 推 sunneo:有 ,os本身的動作不用透過os 因為他就是os 61.227.229.40 09/21 14:35 : → zhan:os本身也是程式 118.161.224.176 09/21 15:08 : → final01:這問題怪怪的吧! 140.134.110.252 09/21 16:06 : 推 typeotoco:從開機磁區載入你的程式即可 218.169.90.154 09/21 16:16 : 推 typeotoco:開機會執行bios那區塊的boot loader 218.169.90.154 09/21 17:16 : → typeotoco:那應該可以把程式燒進bios的flash內 218.169.90.154 09/21 17:16 : → typeotoco:這樣應該可以自動執行吧 @@" 218.169.90.154 09/21 17:17 : → MOONRAKER:一般的SOC程式都不用吧 59.115.199.128 09/21 17:59 ============ 這個問題確實問得令人糊塗. 不知想要解甚麼問題 ? 執行一個磁碟上的檔案型程式, 要用到 I/O device 及 透過 loader 把 binary file 放置到 memory 並做一 些 link & binding 的事, 這時候在有 protection architecture 的機器裡, 要用到 i/o device 及 MMU (memory management)就需要有 kernel priviledge 的 權限. 而開機到 user shell (command) 上來的機器, 其 kernel priviledge 的管轄已經是在 OS 的管制之 下, 所以是要靠身份由 OS 授權取得 priviledge. 有 這種特權的程式都能做 OS 能做的事, 所以不必再透 過 OS 去代理執行, 就能讓含特權的指令(all machine instruction code)生效. 一般說的直接執行(Direct Execution)就是其指令碼可 以讓 processor 按機器指令周期逕自取得機器碼指令, 該指令會讓指定的裝置按機器指令的周期做出 "有效" 的結果出來. 在 user space 的 application program 都能讓 cpu 與其有權可使用的記憶體內之程式碼逕自執行, 例如一 般的加減運算與 user space 內記憶體的搬移, 這些都 不是 priviledge instruction . 所以都不必透過 OS 代理就能 "有效" 逕自執行. BIOS 通常是 device driver 與 boot loader 程式, 這 些通常都被列為是 OS 的一部份(雖然 賣 OS 軟體的商業 公司不負責這一段). 若 kernel/user mode 是要依賴 hardware protection architecture 來實現的系統, 因 為硬體的強制, 就得要透過 OS 代理或授權才能讓處理共 用裝置的指令碼執行時生效, 否則要操控這些在 kernel space 的裝置就無法作用, 就只能叫用 OS 代為處理. 但一般使用者的程式若能取得 priviledge , 就能讓程式 置入 kernel space 其本身就可以如同 OS 般具有足夠的 權限讓指令有效執行. 一般的硬體在 hardware reset 之後會回復到不啟動 protection 不分 kernel/user priviledge 的 initial 狀態. 此時(這是一個 特例, reset 可視為是另一種 Non Mask Interrupt 形式, 是一種 典型的 sensitive operation), 只要使用者程式依舊盤據在記憶體 而且可以被 processor 執行到, 這個程式就能透過程式碼把程式 置於相當於在 kernel space 的權限, 同時讓 CPU 的執行一定還 會再回到此控制點執行(這個程式其實是形同另一個 OS). 此時, 這個程式就不必再透過原來的 OS 來代理執行 sensitive operation. 現在的 VM Architecture 的機器就能經由 hardware support VM mornitor 讓 user space 的 program 不經 kernel space 的 OS 也能有效地逕自執行. 只是此時的代理者是 VM mornitor 而不是 host OS . 當然, VM mornitor 也可以調用 host OS 來 查核與代行. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.4.12
文章代碼(AID): #18rbH8iu (Programming)
討論串 (同標題文章)
完整討論串 (本文為第 4 之 11 篇):
文章代碼(AID): #18rbH8iu (Programming)