> ==>發信人: tester@Evergreen (try or test), 信區: programming
> > ==>發信人: bert@Evergreen (哇哩咧...), 信區: programming
> > > ==>發信人: TKyo.bbs@ptt.cc (暗黑貴公子), 信區: programming
> > > ※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言:
> > > : 是否是用組語直接設定 I/O port 與 kernel memory space ? 還是透過
> > > : libray system call ?
> > > 取得 Ring 0 權限部份應該可以用其他語言完成
> > > 至於直接 I/O, 就得利用組語
> > 直接 I/O 要利用組語是 x86 限定, 或者該說是非 MMIO 架構限定
> > MMIO 架構的話, 定到記憶體位址就可以進行 I/O 存取
> PC 的 X86 兩種 I/O 都有用到, 傳統的 CGA/VGA/EGA 介面, 就有
> Memory Map IO .
傳統的 MDA/CGA/EGA/VGA 都沒有用到 Memory Map I/O
是 Memory Map 沒錯, 但是是把 adapter 上的 memory map 到
system memory 上, 而不是 controller 的 I/O
至於 x86 PC 週邊有使用 MMIO, 應該是 PCI Bus 制定後才開始
> 1. 教學實習需要使用者的環境, 一般的 PC 教室是不會給
> root/administrator 權限.
> 2. 在 Win2k/XP , Linux 這類 OS 讓 X86 處於 Priviledge Protection
> 的 VM386 mode 之下, 組語的練習, 想不要透過 Library System call
> 直接使用 I/O port 或 MMIO port 都是有困難的, 除非入侵取得 root.
> 3. 即使是在 root 權限下, 這種直接動用到 I/O port , Real Address
> 的程式只能在 Kernel Priviledge Mode 下執行, 通常都是事先對系統
> 做好下次開機前的 system execution sequence 或 link , 等下次開
> 機才被執行生效. 練習時寫錯了, 可能就開不起來.
> 4. 提供 Library System Call 就隔開了實體的硬體世界, 而高階語言在
> OS 的支援下對實體 I/O 都是以 "視同檔案" 的方式使用.
> 5. 事實是直接控制硬體在高階語言環境是受制於 Library/System Call.
前四項基於在一個 proviledge protection OS 之上撰寫程式為
前提之下是可以觀察到這些狀況無誤
但由前四項推演出第五項的結論, 那就真是可以說錯得離譜
--
** 版權聲明 **
本篇文章歡迎轉載收錄,無須為任何用途支付任何費用。
本文一經轉載收錄引用,本人即無須對其內容負責。
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 61-231-152-234.dynamic.hinet.