Re: [問題] 為什麼作業系統都用C寫? 而不用C++呢?

看板C_and_CPP作者 (ggg)時間15年前 (2009/03/06 14:42), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串3/37 (看更多)
※ 引述《x3795566 (冀憶)》之銘言: : 標題: [問題] 為什麼作業系統都用C寫? 而不用C++呢? : 實在搞不懂為什麼 : 因為C++不是改良C的語言嗎? : 那為啥不用C++寫作業程式 而用C呢? : 難道C++有何缺點以至於不適合寫作業程式嗎? : 還是只是大部分設計人員的習慣呢? : -- : 推 RouterHsieh:雖然我跟C++不熟..不過說是改良C語言這有點問題吧囧 03/06 01:36 : → tinlans:世界上有用 C++ 寫的 OS 啊,只是沒人想用。 03/06 01:56 : → tinlans:OS 這種東西不是靠技術就能生存的,還要硬體廠商肯挺你。 03/06 01:56 : → frank99977:是哪一種"作業"程式啊...XD 03/06 04:52 ============================ 正常的高階語言都能寫出作業系統, 只要加入適當部份的組語程式. MS-DOS 的前身 CP/M 就是用 PL/M (一種與 IBM PL/1 類似但針對 微處理機精簡與改良的高階程式語言, 由 INTEL 支持開發)寫出來 的. INTEL 也出過 Real-Time multi-task kernel 的 OS 也是用 PL/M 來支援的, 跟 C 一樣都能箝入組語程式段做一些高階語言不 能做的事, 如變換 call/return stack 的內容. C++ 理論上也可以跟 C 與 PL/M 做同樣的事, 但 Object 的概念 是由 OS 的 kernel/monitor 中的 monitor 概念延伸的, 除了 message passing 這個針對網路分散式而來的概念外, 其餘都很類 似. 在 OS 的 monitor 概念裡, 維持這種模組的單一入口與封裝 要求的, 需要 kernel 來支援. 但 O-O-Language 是假設由這個語 言的框架支援. 這個 OS kernel 的特性就是支援 interrupt/trap 與 multi-proceesor 下的 concurrent operation . 在此特性上, C++ 與 Java 就顯現不同特性, Java 是有 concurrent 特性的, C++ 則不提. 一般的 C 或 PL/M 就是靠組語來補充, 但兩者間的 特性不會有衝突性. Java 一般被強調為 Virtual Machine 是因為她能掌控這個 VM 的 concurrency 特性, 但其下層是建立在另一個 OS 之上, 拿她來寫 OS 就要依賴下層的 OS . 當然也有在硬體上想要直接 執行的 Java VM , 但喜歡 compiler 工具的不會喜歡有個 Java interprter 在內揮之不去, 另一大理由就是 效率. C++ 當然不同於 Java , 但涉及 object 封裝, 要將 OS 的 功能梳離出來會是個大事, 其次是 object 一個重要概念就是可 再用性, 原始碼的再用跟 run-time module 的再用(免不了 因 併行造成共用)是兩種不同的狀況. Window OS 的 register table 就是一種 object-id 與相互 關係記載的概念, 會讓整個 OS 隨之調整重新組裝, 像這種 object 相互溝通與管理的概念, C++ 是有的, 但顯然不是這樣方 式提供. 但理論上應該要有這種 object concept 功能. 像這些部 份就有了重疊與衝突. 針對 OS 的特性, 一部份有欠缺, 一部份又有重覆衝突. 這就 反而不如 C 的無能. 要用組語去添補反而變成要深究那些衝突的 部份, 這就違反模組化減少藕合的概念, 當然就少有人去做了. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.4.12

03/06 15:03, , 1F
115給推,請問有關Virtual Machine的觀念哪本書有說阿?
03/06 15:03, 1F

03/07 19:08, , 2F
現在較新的書是: J.E.SMITH, R.NAIR 的Virtual Machines
03/07 19:08, 2F

03/07 19:09, , 3F
他是教授捏,但還是訂正一下 mornitor -> monitor
03/07 19:09, 3F

03/07 19:10, , 4F
versatile platforms for systems and process, Elsvier
03/07 19:10, 4F

03/07 19:14, , 5F
是monitor才對.不過,現在的O-O-PL已經跟當初構想差異很多
03/07 19:14, 5F
※ 編輯: ggg12345 來自: 140.115.4.12 (03/07 19:40)
文章代碼(AID): #19iCNg3D (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 37 篇):
文章代碼(AID): #19iCNg3D (C_and_CPP)