精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: 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.