※ 引述《[email protected] (大王此乃房宮模型)》之銘言:
> ※ 引述《[email protected] (汀)》之銘言:
> > 以 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的全名是什麼?
看東西要看清楚,
我不是在跟你說 pthread 不是 OS 的一部份,
而是任意模仿或不模仿 pthread library 所撰寫的 user thread libraries,
都有可能不是 OS 的一部份。
而且這不是什麼新發現了,
而這個舊發現只是告訴你任何不懂該 OS 實作細節的人,
均可以光看著 online maunal section 2 & 3 寫出一個 user thread library。
> > 接著就是解答你似是而非的說法...
> > 你說「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的一部分?
我想請教你一個很簡單的問題,
有一套相當有名的 framework 叫 ACE,
它的 overview 可以參考 http://www.cs.wustl.edu/~schmidt/ACE-overview.html,
你如果沒聽過又懶得看,可以只看中間那張圖...
然後請告訴我,這個 framework 是不是 OS 的一部份。
我不清楚你刻意把選擇性事實一律歸納成必要性事實的原因,
但是如果你覺得 ACE 也是 OS 的一部份,那我也沒辦法了,
我也只能告訴你書不是這樣讀的....
> > 我當然知道你想要澄清 OS != kernel 這件事實,
> > 也想要澄清 OS 的東西是可以在 user space 下執行的,
> > 你那一章讀得不錯,這沒問題...
> 拜託,這個叫做常識,修過OS課程的本來就不應該犯這種
> 基本錯誤。
> 還有,你先前用user thread library當例子回答別人「thread
> 在什麼情況下跟OS無關」,在邏輯上,你的回答直接等同於「
> for all」user thread library跟OS無關。
我覺得你解讀文章的方法真的有需要改變,
從你解讀我那篇回文和你讀 OS 課本的方式....
我真的很懷疑你是用 context-free 的模式在讀,
拜託至少提升到 context-sensitive 的模式來讀,
我不是質疑你的閱讀能力,而是覺得你用錯方法。
針對那個問題,我的回答屬於「當然 for some」,
它是 default 的,因為問題本身要的就只是 one case,
因此我不必強調 for some,因為問題本身沒有強調 for all,
我不相信你長到這麼大會不清楚怎樣用上下文的關係來判斷語義。
> > 今天要是我利用這些 system calls 實作了自己的 user thread library,
> > 然後自己用在自己所屬的研究機關或公司行號內部開發程式使用,
> > 你會認為我寫的 user thread library 也是 OS 的一部份嗎?
> > 我的 user thread scheduler 固然呼叫了許多 system calls 來實現所需的功能,
> > 但是會有人認為我這個 library 是 OS 的一部份嗎?
> Windows裡面有很多Undocumented API,也是給內部用的,換個版本
> 說不定這些API還會有增減,你覺得它們是不是OS的一部分?
你這兩行回文跟我上面五行回文根本無關。
如果你不知道我在說什麼你可以說看不懂,
我可以再說詳細一點讓你懂,但是拜託不要亂回。
我在跟你講「利用 API 製作的 library 是不是 OS 的一部份」,
你跟我講「某些 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到市面被大家知道。
4DOS 是用來讓 user 和某種 OS 之間溝通的一種 shell,
4DOS 的確也能夠成為 OS 的一部份,
但是 4DOS 真的必須是 OS 的一部份嗎?
哪家的 OS 包含什麼東西不是課本定義的,
也不是你我可以定義的....
課本只是告訴你 OS 必須要有什麼東西,可以有什麼東西,
可沒告訴過你什麼東西必須要是 OS 的一部份,
也沒有告訴你當 X 是 OS 的一部份時,
由於 Y 和 X 是同性質的東西,
所以 Y 也必須要是 OS 的一部份。
教科書上沒定義的東西,本身就是一個彈性的空間,
你自己對教科書沒有定義的部分妄下定義,
還要說別人對這種彈性的敘述是不對的,
這就真的很奇怪。
還有我的重點不是在程式碼有沒有 public 到市面,
我的重點在那個 library 是「自己寫的」,
不要每次看到後面就忘記前面。
--
Name: Tseng, Ling-hua E-mail Address: [email protected]
School: National Chung Cheng University
Department: Computer Science and Information Engineering
Researching: GNU Toolchain Porting for Unified RISC/DSP Processor with VLIW
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.16 > ╰─╮
╚╦═╦╝ ╰ * From:218-171-140-222.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎
--
* Modify: tinlans 05/02/02 6:08:55 <218-171-140-222.dynamic.hinet.net>