精華區beta Programming 關於我們 聯絡資訊
※ 引述《[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>