作者ggg12345 (ggg)
站内Programming
标题Re: 什麽样的程式可以不用透过OS执行?
时间Sun Sep 21 22:03:51 2008
※ 引述《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