精華區beta Programming 關於我們 聯絡資訊
※ 引述《[email protected] (大王此乃房宮模型)》之銘言: > ※ 引述《[email protected] (汀)》之銘言: > > 看東西要看清楚, > > 我不是在跟你說 pthread 不是 OS 的一部份, > > 而是任意模仿或不模仿 pthread library 所撰寫的 user thread libraries, > > 都有可能不是 OS 的一部份。 > > 而且這不是什麼新發現了, > > 而這個舊發現只是告訴你任何不懂該 OS 實作細節的人, > > 均可以光看著 online maunal section 2 & 3 寫出一個 user thread library。 > 請你明確的定義:一段程式碼合乎哪些條件才叫做「屬於OS的一部分」。 > 如果你承認POSIX pthread library是OS的一部分,那請你解釋為什麼 > 其他人自己寫出來的user thread library「不能」成為OS的一部分? > 違反了哪些定義? OS 這個領域並沒有明確指出 thread 是屬於 OS 的領域, OS 的教科書也沒有規範一個 OS 必須要提供 thread, OS 的教科書更沒有說只要是跟 thread 有關的東西就必然是 OS 的一部份。 為什麼你認為別人想知道什麼是 multi-thread 不能翻 Java? 為什麼我不能說 OS 的實例太少,而且你還認為是廢話? 既然你都說 Java 「不只是」一個 OS, anyway 我先不爭論 Java 是 platform 還是 OS, 但是 Java 「語言本身」就支援 multi-thread, 所以理所當然的去讀「Java 語言」的書就有辦法知道。 所以你大概還不知道 multi-thread 也是 programming language 裡的 term, 你不要因為只有讀過 OS,你就認為 thread 一定要跟 OS 有關, 你不要因為你只有讀過一本 programming language, 你就認定 programming language 裡面沒有其它分支領域在探討 thread。 為什麼一個人不能只懂 programming language 中的一個分支, 而不用去懂 OS 的課本寫些什麼東西? 當這個人不用去懂 OS 課本寫什麼東西但是知道什麼是 thread 的時候, 他對 thread 的認識跟 OS 絕對是無關的。 第一本讓我知道 thread 的書叫 unix network programming, 還是網路方面的書籍,當時我連什麼叫恐龍本都不知道, 不好意思當時我還在讀高中(應該說高職), 民國 88 年我高二,那年寒假讀的。 我不是在跟你說我有多厲害,因為有人比我更早讀, 我是要跟你說當時我還認為 multi-thread 是 programming design 領域的東西, 請問你認為當時我的認知有錯嗎? 你知不知道資工學生讀 OS 的目的是幹什麼? 其中一個主要目的就是讓你瞭解 OS 是怎樣設計的, OS 提 multi-thread 主要也是想告訴你有這種東西, OS 可以實作它,當實作它的時候會碰到什麼問題, 像是整個 process 收到一個 signal 的時候要哪條 thread 來處理, 當整個 process 呼叫 fork() 的時候要不要複製每條 thread。 當一個人以不知道是不是 user view 的角度問這是什麼的時候, 為什麼我不能叫他往 user view 的角度去看 multi-thread? 以「實作 multi-thread」和「使用 multi-thread」的人口比例來說, 為什麼我不能就 user view 做回答,叫他去看 Java? 更何況實作 multi-thread 跟 OS 領域也不見得有關係。 然後你要注意一件事情,一旦你提 pthread 或其它特定 thread 的實作, 我們的「OS」理所當然範圍就是縮小到「某些特定的 OS」, 而我提到 user thread library,範圍是在「OS 領域」, 為什麼你會認為 pthread library 是 OS 的一部份? 因為你被 OS 兩個字迷惑了,它也只是一個標準的名稱而已, 是建議某些 OS 的實作應該遵循什麼規範提供什麼 IX 才能實現那個 P 字, 一旦提到 POSIX 這個字, 跟這個字相關的句子提到的 OS 自然是指「OS 的某個或某些實作品」。 > > 我想請教你一個很簡單的問題, > > 有一套相當有名的 framework 叫 ACE, > > 它的 overview 可以參考 http://www.cs.wustl.edu/~schmidt/ACE-overview.html> > 你如果沒聽過又懶得看,可以只看中間那張圖... > > 然後請告訴我,這個 framework 是不是 OS 的一部份。 > > 我不清楚你刻意把選擇性事實一律歸納成必要性事實的原因, > > 但是如果你覺得 ACE 也是 OS 的一部份,那我也沒辦法了, > > 我也只能告訴你書不是這樣讀的.... > 我都還沒告訴你回去重修你的OS咧,還輪得到你來教我書怎麼讀? > ACE是不是OS的一部分?對使用ACE這個Fremawork的networked AP > 來說,ACE扮演的角色就是一種OS,不會因為它只是架在另外一種 > OS之上而違反這個定義,當然,對於其他不使用這個framework的 > AP來說,它不過是另外一組程式碼,那又怎樣?因為它不是system > library所以就不算OS? 我深深覺得你不是 OS 沒有讀好,也不是閱讀方法不對, 而是你讀了 OS 忘了計算機概論, 我不是刻意要拿計算機概論來侮辱你這麼多年所學的東西, 只是覺得你忘記計算機概論跟你說什麼。 我來幫你複習一下,電腦軟體分為系統軟體和應用軟體, 系統軟體包含作業系統、組譯器、編譯器、連結器、載入器和巨集處理器「等」, 又由於計算機概論對系統軟體的解釋是:協助開發應用程式的工具軟體。 因為那個「等」字,理所當然任何 libraries 均為系統軟體的一部份。 你現在應該想起來「系統軟體包含 OS」這件事了吧? 用 tree 狀來表示的話 pthread library 充其量只是 OS 的 sibling, 你憑什麼把它變成 OS 的 child? 因為 OS 痛扁了 pthread 一頓,所以要 pthread 叫他爸爸? > > 我覺得你解讀文章的方法真的有需要改變, > > 從你解讀我那篇回文和你讀 OS 課本的方式.... > > 我真的很懷疑你是用 context-free 的模式在讀, > > 拜託至少提升到 context-sensitive 的模式來讀, > > 我不是質疑你的閱讀能力,而是覺得你用錯方法。 > > 針對那個問題,我的回答屬於「當然 for some」, > > 它是 default 的,因為問題本身要的就只是 one case, > > 因此我不必強調 for some,因為問題本身沒有強調 for all, > > 我不相信你長到這麼大會不清楚怎樣用上下文的關係來判斷語義。 > 我們來看一下整串文字: > 一開始發問的是: > > 什麼是 multi-thread > 三個人分別回答: > > 恩 OS 裡面會有 > > 講Win32API或教人寫遊戲的書會有。 > > 請參閱OS恐龍書 > 你的第一個回答: > > 翻 C++ 沒有,翻 Java 會有... > > 翻 OS 也會有,不過實例不多... > > thread 這東西可以跟 OS 有關,可以跟 OS 無關... > 前面本來的回答都是針對「哪些書可以找到multithread這方面的資料」 > 就只有你回答的最離譜,multithread是OS process處理方面的term, > 當然是告訴他去看OS的課本,就只有你自以為高明的要對方去找Java > 的書,還嫌OS實例不多,廢話,OS課本教的是multithread的通則,想 > 看個別OS的實作當然是找個別OS相關的書,輪的到你來嫌實例太少? 這個第一段回文就回給你了,因為想說拖到這裡才回你太慢, 你有很多地方腦袋打結了。 > 接著就有人反問了: > > thread在什麼情況下會跟os無關??? > 接著你才回: > > library thread,純粹使用 library 來做的情況下。 > 如果你所謂的「跟 OS 無關的thread library」是從這裡開始, > 那我只能說,你的閱讀能力根本連高中生都不到,只是善用一 > 大堆看似深奧的網頁背景資料和大堆頭的垃圾文字來掩飾你自 > 己對OS基本概念的缺乏。 一樣請 goto 第一段回文。 > > 你這兩行回文跟我上面五行回文根本無關。 > > 如果你不知道我在說什麼你可以說看不懂, > > 我可以再說詳細一點讓你懂,但是拜託不要亂回。 > > 我在跟你講「利用 API 製作的 library 是不是 OS 的一部份」, > > 你跟我講「某些 API 是不是 OS 的一部份」。 > 你怎麼知道某些API不是利用其他API製作的? > 我以為這種普通常識你不可能不知道,所以我把重點擺在 > 沒public這點上面,原來你不知道很多API其實只是另外 > 一些API的包裝,就跟你「利用 API 製作的 library」是 > 一樣的,這些「2nd level API」算不算OS的一部分?你要 > 不要回答這問題看看? 是因為你愛用 API 我才跟著你用 API 這個字, 原本我講的可是 system call, system call 是 API 的 subset, 呼叫 system call 會引發 software interrupt, 呼叫 API 則未必,跟 system call 等價的字應該是 kernel API, 請記得 API 的 A 字是什麼東西,不要罵昏頭了。 根據這樣解釋,我必須先請你回答你的 2nd level API 是不是 system call, 我才有辦法告訴你它是不是 OS 的一部份。 > > 4DOS 是用來讓 user 和某種 OS 之間溝通的一種 shell, > > 4DOS 的確也能夠成為 OS 的一部份, > > 但是 4DOS 真的必須是 OS 的一部份嗎? > > 哪家的 OS 包含什麼東西不是課本定義的, > > 也不是你我可以定義的.... > > 課本只是告訴你 OS 必須要有什麼東西,可以有什麼東西, > > 可沒告訴過你什麼東西必須要是 OS 的一部份, > > 也沒有告訴你當 X 是 OS 的一部份時, > > 由於 Y 和 X 是同性質的東西, > > 所以 Y 也必須要是 OS 的一部份。 > > 教科書上沒定義的東西,本身就是一個彈性的空間, > > 你自己對教科書沒有定義的部分妄下定義, > > 還要說別人對這種彈性的敘述是不對的, > > 這就真的很奇怪。 > 我現在再問你一次,你所謂跟OS無關的「OS」是OS這門學問的 > 領域,還是指對「哪家的OS」? > 如果是前者,你對於OS的基本概念有問題,如果是後者, > 你根本是文字閱讀能力有問題。 同樣請 goto 第一段回文。 > > 還有我的重點不是在程式碼有沒有 public 到市面, > > 我的重點在那個 library 是「自己寫的」, > > 不要每次看到後面就忘記前面。 > 我要告訴你的就是「自己寫的」並不是重點所在 雖然這邊也要請你 goto 第一段回文, 但是我還是補充一下,免得你看不懂。 一旦我自己寫 library,那麼實作的部分 maybe 跟 OS 領域有關, 而我寫出來開始給別人使用以後,使用這個 library 跟 OS 領域 maybe 是無關的, 就算「這個 OS 的實作」認得裡面的 thread,它也跟「OS 領域無關」, 那你會問到底什麼時候有關? 當這個使用者想知道這是 user thread 還是 kernel thread 的時候才有關。 所以我回答「可以有關也可以無關」絕對是沒有問題的。 -- 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"的狂狷不馴;屬於年少的輕狂色彩