操作系統有什麼自相矛盾的地方?

隨便談一談


基本上操作系統整個就是一個相互妥協的產物,

內核模塊隔離,互相靠消息通訊,但是性能太差,所以髮指針,

內核,內核擴展/驅動,靜態編在一起,性能高,但是擴展性太差,

圖形用戶界面放內核里,性能好,但是一旦崩潰會導致整個系統崩潰,做成 Client Server 模式,性能又比較捉急,

將內核映射到每一個進程的地址空間,減少開銷,但是進程地址空間就會減少,單獨的內核地址空間,又會導致來回切換的開銷,

這種東西操作系統多了去了,


Windows的管理員。

用管理員許可權進行某些操作時,系統說,你許可權不夠。

其實也不矛盾,系統說那是「我的電腦」,又不是「你的電腦」,你當然沒許可權。

Windows的「個性化」。

越來越沒個性。

能設置的東西變少了。

win8和win10的「所有設置」。

大部分的設置不在「所有設置」里。

還需要修改控制面版,組策略,註冊表,系統文件。

想隱藏桌面上的「我的文檔」「我的電腦」圖標時,只需在顯示設置里操作一下;

想隱藏桌面上的「回收站」圖標時,卻要去折騰組策略(評論,你們沒用過xp)。

Linux就光棍一些,想改設置?滾去改系統文件啦!改錯導致系統不能工作?誰叫你改系統文件噠!活該!

對話框要求用戶優先處理其中的內容。

但這個「優先」讓人很矛盾。

windows正常彈出對話框後,一切對主窗口的操作轉化為:對話框置頂為活動窗口,對話框標題閃爍,發出操作無效提示音。

一切操作包括Alt+F4關閉窗口,有些程序假死時,你必須按Alt+F4按到它真死,才能關閉它。

對話框置頂為活動窗口這一點很重要,因為原主窗口現在不受控制。

某些網頁在IE上彈出對話框後,一切對原網頁的操作轉化為:對話框轉標題閃爍,發出操作無效提示音。

這時原網頁是活動窗口,所以用戶面對的是——一個假死的網頁和沒完沒了的操作無效提示音。

ubuntu一些版本的文件管理器彈出對話框後(偶發),一切對【圖形界面】的操作轉化為:對話框轉標題閃爍,發出操作無效提示音。

偶發文件管理器主窗口成為置頂活動窗口且蓋住對話框的情況,所以用戶面對的是——圖形界面不接受任何控制,接近死機。


每次連不上網都會提示我聯網解決


老久之前的Windows關機:

「主人!有一個應用阻止我關機!?(???????)?」

【好】

那些年,關機就是個技術活。


系統安全與用戶操作體驗


世界本來就是矛盾的

操作系統的設計也不例外

看到的基本上都是妥協後的產物,也就是矛盾的產物


從進程管理和資源共享的角度去看操作系統,進程的並發性和共享性是自相矛盾的存在。一方面操作系統希望進程能夠「自由而平等地」運行,另一方面,由於對資源的共享,有需要嚴格限制系統中的資源「自由地」運行,必須給他們一個「限制」。


推薦操作系統哲學這本書

計算機的很多東西都是借鑒了人類社會的,而人類社會又是一個相互妥協的結果

https://book.douban.com/subject/10528447/


操作系統本身就是一個協調矛盾的學科吧,

比如內存管理中,關於區域的概念,內存分區就可以根據使用對象的目的、對象的大小進行內存的分配,從而提高了管理效率,防止內存碎片化的產生。GNU就是這麼做的,但是蘋果的實現並沒有這麼做,因為蘋果認為因為運行時系統中的內存管理已經極具效率(分配內存時總是盡量利用此前回收的空間),使用區域進行內存管理反而會引起使用效率低下、源碼複雜度變高的情況。

還比如比較幾種常用的緩存淘汰演算法:LRU,MQ,2Q,LRU-2。其中,Cache命中率的降序是 LRU-2 &> MQ &> 2Q &> LRU。 明顯,LRU-2最好,但是如果考慮到代價,降序依然是上面的那個排序,LRU-2的代價非常大,如果考慮到編碼的複雜性與可維護性,LRU-2的複雜性最高,可維護性也最弱,所以雖然LRU存在神馬緩存污染的問題,用的還是挺多的,或者升級到2Q。

所以,感悟到,很多事只有合適與不合適,並沒有對錯之分。


明明已經在task_running隊列了,可還是要等CPU資源


如果有,可能是操作邏輯


推薦閱讀:

Linux 下的伺服器時間同步方案有哪些?
Linux, emacs難以割捨的情結,單位使用的是win + vs,怎麼辦?
Linux下C/C++動態庫在運行時是怎樣載入進來的?
為什麼 Linux 沒有註冊表?為什麼說註冊表是萬惡之源?
Linux Kernel 4.0 中的 live patching 是如何實現的?

TAG:MicrosoftWindows | 操作系統 | Linux | Unix | 計算機科學 |