※ 引述《[email protected] (汀)》之銘言:
> ※ 引述《[email protected] (大王此乃房宮模型)》之銘言:
> > 你覺得Java byte code在JVM裡面執行,JVM算不算是個OS?
> > (對,JVM「不只是」個OS,我問的是:對你的Java application
> > 來說,JVM有沒有涵蓋OS的功能?)
> > 同樣的,user thread library等於是把原本OS的process控制相
> > 關的API「包裝」起來,給其他需要的Application呼叫使用,你
> > 覺得這不叫OS的一部分?
> > FreeBSD的linux emulator是不是OS的一部份?當然是。
> 以 FreeBSD 的 pthread 來說,
> 請 cd /usr/src/lib/libpthread/thread 然後 grep __sys_ *.[ch],
> 然後你會發現什麼呢,
> 發現把 __sys_ 去掉留下後面的字串就是 system call name,
> 接著你就會發現到你好像也能丟 1 到 2 週什麼事都不做,
> 就專門來設計一個有基本功能的新 user thread library 並不困難,
> 事實上靠那些 POSIX 制訂的 system calls 任何人都能寫一套 user thread library,
> 雖然我們不能排除 POSIX 制訂這些 system calls 是為了實現 pthread,
> 我對歷史並沒有太大的興趣...
> 不過事實就是 pthread 的確是使用這些 system calls 而出現的一個產物。
所以呢?你這個發現可以證明pthread library不是OS的一部分?
需不需要我告訴你POSIX的全名是什麼?
> 接著就是解答你似是而非的說法...
> 你說「user thread library等於是把原本OS的process控制相關的API包裝起來」,
> 這句話並沒有問題,但是「包裝起來給其它需要的 application 使用」這件事,
> 並不可能成立「它是 OS 的一部份這件事」,
> 邏輯上的三段論法來說你試圖使用的是 A -> B -> C 的三段論法,
> 你的 A -> B 的確是成立的,但你的 B -> C 並不成立,
> 所以你並不能夠讓 A -> C 成立。
> 你的 B -> C 描述的是:
> 「for all (包裝 OS process API 的 libraries) 必為 OS 的一部份」,
> 事實上這個 for all 無法成立,但若是 for some 可以成立。
你這種說法才叫做似是而非,首先,每本OS課本都開宗明義告訴你,
OS這組程式目的是作為使用者與硬體的介面,以及應用程式與硬體
的介面,以及運算資源的管理,user thread library既不是單一的
application program,目的又是作為application的介面,請問它哪
一點不能稱為是OS的一部分?
> 我當然知道你想要澄清 OS != kernel 這件事實,
> 也想要澄清 OS 的東西是可以在 user space 下執行的,
> 你那一章讀得不錯,這沒問題...
拜託,這個叫做常識,修過OS課程的本來就不應該犯這種
基本錯誤。
還有,你先前用user thread library當例子回答別人「thread
在什麼情況下跟OS無關」,在邏輯上,你的回答直接等同於「
for all」user thread library跟OS無關。
> 今天要是我利用這些 system calls 實作了自己的 user thread library,
> 然後自己用在自己所屬的研究機關或公司行號內部開發程式使用,
> 你會認為我寫的 user thread library 也是 OS 的一部份嗎?
> 我的 user thread scheduler 固然呼叫了許多 system calls 來實現所需的功能,
> 但是會有人認為我這個 library 是 OS 的一部份嗎?
Windows裡面有很多Undocumented API,也是給內部用的,換個版本
說不定這些API還會有增減,你覺得它們是不是OS的一部分?
> 我不知道你懂不懂我要說的意思,
> 不是在探討 OS 課本怎樣寫...
> OS 課本的確是說 OS 包含了這些東西,
> 但是並不代表這些東西一定要是 OS 的一部份,
> 好比 windows 的 explorer 是一種 command interpreter(或叫 shell),
> 在 OS 課本上說那也是 OS 的一部份,
> 很久之前就有人不喜歡那個 explorer 寫了自己的 shell 丟給大家玩,
> 你能說那是 OS 的一部份嗎?
為什麼不是?command.com是DOS這個OS的shell,你換成4DOS就不是OS的
shell?車胎是車子的一部分,誰告訴你車胎跟車子不同牌子就不是一部分?
再強調一次,一組程式碼是不是OS的一部分,是根據這組程式碼的功能,
不是根據程式碼有沒有public到市面被大家知道。
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: 203-203-38-134.cable.dynamic.giga.net.tw