UNIX Linux最偉大的技術是什麼?

時間 2021-05-30 01:27:07

1樓:大賢者初春令月

本回答只代表我的個人看法。

UNIX/Linux 最偉大的技術,是如同普世價值一樣的蠱惑性。

上面有很多機制的實現其實並不如其競爭對手的實現完美,即使隨著時間的流逝出現了更好的方案並已經普及,但還是能吸引人們去信仰。

其中簡單就是美是乙個容易被誤解的原則,因為挺多人一味的進行簡化導致整個系統實際上變得複雜而低效,在實現了同等數量功能的情況下穩定性也無從談起。

Linux 之所以能廣泛運用於伺服器,主要是其強悍到連核心都能修改的可定製性,能夠做出最精簡的伺服器示例,暴露最小的攻擊面。Windows 的話也拿出了 Server Core 和 Nano Server 進行競爭,只是定製性沒那麼強就是了,這也算是拿自己的缺點和別人的優點硬肛的案例之一。

但如果你要執行乙個功能和 Windows 接近的 Linux 發行版,你就很容易發現那個發行版非常複雜和低效,且缺乏穩定性。把 Linux 當作自己的主力桌面的大部分人應該都會有這樣的體會,除非那些人只把電腦當作工作用機只安裝了必要的包。

一切皆檔案也限制了其發展,而且也導致了管道滿天飛,建立程序就像喝水一樣,而且效率低,是個人都知道解析二進位制比解析字串要快不少。我個人相當厭惡 UNIX/Linux 的 fork 機制,我認為其破壞簡單就是美的理念,而且讓很多使用者學會了胡亂建立程序加大系統排程機制的負載,個人覺得執行緒或者叫做輕量程序的機制比 fork 更好。(當然,Linux 下那種實質還是程序的執行緒實現(無論是老的實現還是新的實現)不算,那太屑了。

)當然,還有乙個很嚴重的問題,那就是讓很多人的視野變得狹窄。那群借 UNIX/Linux 批判 Windows 的,很多估計連 Sysinternals 工具集都好好用過……

個人雖然先開始用的 Windows,但用 Linux 很快也能上手,除了長期不習慣 vim 而需要用 nano 替代之外。相反,我知道的那群用慣了 Linux 的卻不習慣用 Windows,理由並不是 Windows 不好用,而是怕用 Windows 後腐蝕他們的優越感而做出了類似苦行僧的選擇。這個現實與我多年前用 Linux 的時候看到社群使用者的「用慣了 Windows 上手 Linux 會變困難」宣傳並不符合。

當然,自己的乙個女性朋友,曾經對我的看法做出了「為什麼別人都喜歡擁抱開放,你卻反其道而行」的吐槽。

畢竟,我只在乎這個解決方案是否能有效地解決自己的問題,這也是大部分人的選擇。所以這也是為什麼桌面一般使用 Windows 而伺服器一般使用 Linux 的原因。

2樓:溫水煮華雄

不說什麼最偉大,只說乙個我認為很厲害的設計:把spawn拆成fork和exec兩步。

初學時覺得多此一舉,寫程式時才漸漸體會到這個設計帶來的便利

3樓:雲天明

最偉大的技術。。。

我覺得是proc。。。。。。本來proc只是提供程序相關的資訊和介面,但是核心通過這樣的方式來提供更多的東西,使得很多設計都得以簡化,堪稱是創舉了吧。。。當然devfs,sysfs,tmpfs什麼的腦洞也是大得很。

其他核心確實也提供了很多不同的介面,但是linux這樣僅僅通過檔案操作就可以獲得核心當前狀態和控制核心的執行,腦洞確實是不一般得大。

還有個腦洞叫做control groups,這是lxc所依賴的技術。

同樣大的腦洞還有kvm,什麼esx啊hv server啊,和這個相比,腦洞就缺在這個k字上了,當然這個k字本身可能並無卵用,而且大多數情況kvm還是配qemu的。。。但是腦洞大啊。

netfilter,不用解釋的黑科技。

LSM,雖然大多數人似乎不需要這東西不過還是乙個黑科技啊。

還有乙個nohz_full特性,也是腦洞巨大的存在。

4樓:大腦艾瑞克

Linux第一版也是一團漿糊而已

關鍵Linus把握住了歷史機遇

現在即便再來乙個一樣的系統,甚至更好的,也不可能得到這麼大範圍的使用了,因為生態系統沒建立起來

要知道,Linux在2023年的時候,連wifi都驅動不了,這麼多年來,寫了多少配套的驅動!

微軟投入了極其巨大的人力物力為各類硬體寫驅動程式

5樓:賈志鵬

UNIX最偉大的不就是把作業系統做出來了嗎。。Linux最偉大的不就是把原始碼給大家看了嗎。。。感覺提主列舉的都是些浮雲,沒啥偉大不偉大。。

6樓:zpan

我覺得不管是「一切都是檔案」還是「乙個工具只做好一件事」,其背後共通的邏輯就是「工程實踐大於理論完美」,或者說「解決問題先於完善架構」。

我們知道 UNIX 有很多缺陷。

首先就是 C 語言,天生缺乏型別系統,沒有安全的記憶體分配機制,指標導致 segfault 滿天飛。然而它簡單又高效,及時地滿足了核心開發的需求,有一些缺陷也無傷大雅。

其次是「一切皆檔案」,或者說基於 raw byte stream 的程式間資訊交換和資訊儲存。缺點是沒有 metadata,沒有型別系統。然而它的普適性很強,只要程式間定好了協議,定好了檔案格式,就可以做各種事情。

這樣的設計可以快速地解決問題。而如果要設計一套型別系統,不花大量人力和時間是做不出來的。而且即使做出來了,也可能會存在滿足不了快速變化的需求的問題。

比如要求所有 IPC 都使用同一套帶 metadata 的結構化的協議,可能並不適合所有情況,不同型別的服務用不同的協議才更有針對性,更高效。又比如用一套資料庫系統代替檔案系統,可是有了新的檔案型別怎麼辦?檔案的 metadata 欄位不完善又怎麼辦?

又比如用統一的配置系統代替每個程式各有各的語法各不相同的配置檔案,又怎麼保證能滿足所有程式的配置需求?

要設計一套非常完美的系統是很難的,只有 M$ 這種級別的大公司才能做得出來。但即使是 M$ 也因為揹著沉重的歷史包袱,無法完成這種巨集大的工作。M$ 曾試圖把 Windows 設計成一套完美的架構,那就是當年的 Longhorn 計畫,可是到最後卻失敗了,留下了一套先進的 .

NET Framework 和仍然必須不斷向後相容的 Win32 API。這就好像 C++ 一樣,既要保持對 C 的相容又要引進現代語言特性,最終變成了乙個極其複雜的語言。這並不是說 Windows 或 C++ 不好,而是它們雖然好,卻又沒有做到完美,結果反而對使用者造成了困難。

而不管是 UNIX 還是 C,它們雖然簡陋,卻是完善的,這就足夠了。即使我們需要更複雜的東西,也可以在它們上面增加抽象層。對程式設計師來說,UNIX 的架構、層級是簡單的、清晰的。

而至於後來 *nix 的上層架構發展沒有 Windows 那麼快,則是因為使用者數量始終上不來,因而也缺乏大公司的支援,我覺得這跟技術本身並沒有關係。

我個人認為,真正的新一代作業系統,應該具有以下特點:

具有系統級別的型別系統;

具有系統級別的資源管理機制;

所有資料交換都是帶有 metadata 的結構化資料;

資料庫代替檔案系統;

對開發者而言記憶體與硬碟之間是透明的,不再有變數和檔案的區別,只有臨時資料和永久資料的區別;

由於開發語言的特性以及系統的資源管理,很可能我們不再需要程序,只需要執行緒就夠了,因為語言本身不再可能產生 segfault。(這點有爭議)

這究竟有沒有可能實現呢?我對此保留意見。現實世界是很複雜的,真的那麼容易做出抽象嗎?

7樓:仇偉佳

就題主問的檔案和管道說一下我的理解

檔案是一種抽象,統一了作業系統對於各種裝置的訪問介面,如open,read,write,close這組元語

管道如題主所說是用來連線各種應用程式的,提供了一種組合應用程式的方法(就如同各種程式語言中,函式之間的呼叫),目的是讓系統使用者盡量借助已有的工具來完成工作

8樓:

1 linux開源,作業系統的所有細節公眾都知道,很多思想可以借鑑

2 其實windows也有很多偉大的技術,只是由於閉源 ,大家都不知道

3 OSX 也有很多優秀的技術,大家也不知道

9樓:

覺得技術上沒啥偉大的,大家都能做。出彩的地方應該是簡潔的設計,策略機制分開,簡單工具組合完成複雜功能等等。這些都很實用,不走學院派,是個實用的作業系統,設計思想對後來的軟體產生了巨大影響。

10樓:fisheuler

1.提供了一系列的可復用的software tools工具和思想,來提高效率。

以正則匹配功能來說,原來是thompson自己寫的私房工具,後來在mcllroy的建議下把其整合到grep等工具中。

2模組組合的思想

其經典的word frequency統計為例來展示管道的魅力:

cat *.txt | tr transform | sort | uniq -c

管道其實是粘合劑,將各種小模組的功能組合起來完成一件大的功能。

3 某某人提煉的unix culture 和 lisp culture的不同。提出了worse is better的思想。大致是技術不一定做到做好,但是需要能和周邊的環境等(市場需求)匹配好。

也就是要接地氣的樣子。

想想四十多年前,在AT&T的某個辦公室,某一群人的hack活動悄悄的改變了世界的一部分。

11樓:

雖然說輪子哥胡說八道,但就他的工資和地位來看,早就秒殺本版所有回答者。他有時間來教導我們,我們當感到榮幸。NT確實是近代最優秀的核心之一,說他超過NIX 那千年如一日的核心,確實不足為過Linux 其他方面並無什麼貢獻,最主要的貢獻其實還是那個開源的平台。

讓更多人用上了computation .

12樓:開源醬

我倒是很好奇 @vczh 說的 「Windows 核心」是 1985 年的 Windows 1.0x 呢,還是 1993 的 NT 呢?

順便管道的概念是道格拉斯·麥克羅伊發明,然後在 Unix 上實現,後來才被 Windows 學去的:

「它的想法在2023年被實現,Ken Thompson將管道新增到了UNIX作業系統。這個點子最終被移植到了其他的作業系統,比如DOS、OS/2、Microsoft Windows和BeOS,而且常常使用相同的記號(垂直線)。」——維基百科:

管道 (Unix)

至於 Windows 裡的一切皆檔案和 IO 重定向,我懶得去查了,不過 UNIX 是 1971 年發布的,比 Windows 1.0x 早了 10 多年,誰先誰後就不用我說了吧

另外 Windows 的確有不少可以用來跟 *NIX 炫耀的呢,藍屏比 Kernel Panic 好看多了

如何看待 最偉大的悲劇家也是最偉大的喜劇家 ?

小完能 為啥記得看過一句話,大意是如果你已經寫了文章的開頭,那麼結局就已經是定好的了,你只能在適當的時候把它表達出來。所以文字也是有生命的啊!劇作家也只是傳承作品的乙個媒介,所以覺得喜劇與悲劇其實只是選擇更好的表現形式,哪種更可以加劇矛盾便會選擇某種,唔 總覺得這一堆都和題目沒啥關係,不過以樂景襯哀...

NBA最偉大的球衣號碼是多少?

DuTu617 按照球星的數量和質量來看,應該是32 33 34這仨其中乙個。32號有魔術師 卡爾馬龍 比爾沃頓 麥克海爾 ABA時期的j博士 傑里盧卡斯 比利坎寧安 太陽時期的基德 小斯 非三連冠的鯊魚等等 33號是賈巴爾 大鳥 皮蓬 尤因 莫寧 大衛湯普森 馬布里 有段時間 這些 34號就是三連...

誰是歷史上最偉大的人?

XYG.某某 獨一檔的偉大人物。再無可能出現這樣乙個塑造西方,影響人類數千年的人物。都說亞里斯多德是百科全書式的學者,其實,百科全書不過是收集知識,而亞里斯多德,是百科之祖。他涉獵的學科,包括但不限於哲學 文學 邏輯學 心理學 物理學 地理學 生物學 天文學 教育學。任何乙個有歷史的學科,基本都會提...