導航:首頁 > 編程系統 > winvslinux

winvslinux

發布時間:2023-04-23 22:12:51

『壹』 linux 和 WINDOWS 內核的區別

二者最大的區別在於WINDOWS是個商業軟體,而LINUX是開源軟體。商業軟體的好處是可以集中一大批人力物力做一件事情。容易統一,兼容(因為客戶需求)。而開源的好處在於靈活,開放。

在下面的比較中,我一般先介紹下WINDOWS的,然後再介紹LINUX的。

1、觀念:商業 VS 開源

WINDOWS是個商業軟體,它的源碼是保密的. 當然,其他非MS的人也還是有機會看到源碼的. 如果你和MS 簽訂一個NDA(NON DISCLOSURE AGREEMENT),那麼你也有可能拿到WINDOWS代碼.

不過對於廣大窮學生,以及連VISUAL STUDIO都在用盜版的摳門公司來說,和MS簽個NDA幾乎是不可想像的. 所以在WINDOWS世界,想了解WINDOW 內核的具體信息變得很難. 只能靠DDK(DRIVER DEVELOPMENT KIT) 和WINDBG(內核調試工具)泄漏出來的一些. 然後就是REVERSE ENGINEERING (逆向工程,可以簡單的理解為反匯編,實際上更復雜一些).

這也造成了 <WINDOWS INTERNALS> 一書超級火爆的原因. 因為它是微軟授權的,而且公布了很多內部細節. 另外一本講內核的書是<UNDOCUMENTED WINDOWS 2K SECRETS>,雖然老了點,但是很多內幕。關於WINDOWS, undocumented 和secrets 這2個字絕對是可以類比「超級美女」的字眼。因為這些東西平時是看不到的.

與此對應,在LINUX世界,常見的一個詞是RTFS。也就是READ THE FXXXXXX SOURCE CODE (這句話據說最早出於linus torvalds, 也就是LINUX之父)。意思也就是說「去讀該死的代碼」。言外之意,我把代碼都給你你了,你還想要啥啊?這就好像一個男人對他GF / LP / LD說,我把全部的銀行帳戶密碼都給你了,你還想要啥啊?

其實他不知道(或者認識不到)女人還需要你的時間,精力來陪她。就好像LINUX 程序員意識不到文檔也是很重要的。當然,LINUX程序員應該也是知道文檔的重要的,不過一個是維護成本太高,另外是LINUX 內核變化太快。所以LINUX 的文檔總感覺比MSDN要差點。

話說當年WIN 2K的源碼泄漏出來了一些,我也迫不及待的下載了一份.雖然至今也沒看過,但是拿到WINDOWS 源碼的感覺,絕對不比娶了一個絕世美女差. (當然,真要娶老婆還是看內在).

相比之下, LINUX 是開源的,代碼隨時可見. 這對剛從WINDOWS世界轉過來的我是十分震撼的. 雖然我一直都知道這個事實, 但是當你發現了以前需要用盡各種方法,採用各種手段才可以得到只言片語的信息現在完全呈獻在你面前的時候,你才能真正體會開源確實是一件偉大的工程.

看了LINUX源碼之後,我終於發現,原來內核里大部分也是C語言(而不是以前想像的匯編). 同時內核似乎也就那樣,不像之前想像的那麼神秘. 原來編譯內核也就是比編譯個普通程序稍微麻煩點,用的時間長點. 原來編譯內核用普通的C編譯器就可以. 原來內核也是一個普通的可執行文件.(PS: 我懷疑MS也是用VS來編譯WINDOWS的. 同時我也知道WINDOWS內核也是一個可執行文件.) 原來更換內核是如此的簡單.

終於,內核可以被我隨便改了. 哇哈哈哈!

言規正傳,我覺得商業也還是有好處的。比如兼容性好,我以前用WDM寫一個驅動,最多改下編譯選項就可以在WIN 98, WIN 2K, WIN XP下運行。十分方便。而如果換成LINUX,那麼你只好祈禱不同的內核版本之間沒改那些你用到的頭文件,函數介面。否則就要改代碼了。

同時,開源的好處是適合學習,十分靈活。我覺得LINUX十分適合學校,學生。因為開源,當你發現不明白的地方的時候,可以直接去看源碼(還記得RTFS? )。看不懂還可以到論壇上問。而對於WINDOWS,你想了解它的內部機制就只好GOOGLE,然後祈禱了。比較好的一個資源是MSDN下面的一個雜志,其中有一個主題叫UNDER THE HOOD, 或者搜搜 BUGSLAYER 也可以。這2個專題的作者Matt Pietrek和John Robbins都是大牛級的人物。

順便說下UNDER THE HOOD 這個名字本身。以前一直不太理解,因為查字典的話,HOOD 的意思也就是個蓋子。那麼蓋子下面有啥呢?為啥要看蓋子下面呢?

來到美國之後,我漸漸明白了。HOOD 在這里應該理解為汽車的引擎蓋。在美國,汽車是很普遍的。如果你開車,但是從來沒打開過引擎蓋,那麼說明你只會用,而不了解汽車內部。那麼如果你打開蓋子看看呢?就可以看到很多內部細節,比如發動機啥的了。

在美國這個汽車王國,很多軟體術語和汽車有關,因為人們日常生活中對汽車也很了解。比如「引擎」這個詞,以前玩3D游戲的時候,常會看到介紹說,本游戲採用了最新的3D引擎。啥意思呢?就是游戲最核心的部分(汽車引擎)已經升級了。不是只把外面的人物形象改了下而已。

另外,開源軟體也經常用汽車來類比。開源意外著你買了車(軟體)後,可以隨便拿到一個修理廠去修。也就是什麼人都可以改,只要他懂。而COPY RIGHT 軟體呢,就是你買了車,但是引擎蓋子是鎖著的,壞了只能去生產廠家修,其他人修不了。如果萬一生產廠家不想修或者不會修呢?那你就只能認命了。

扯得有點遠了,打住。

1.1、發布:2進制 VS 源碼

這里主要討論下WINDOWS和LINUX在發布程序採用的不同的形式和觀念,這些和前面的商業還是開源的基本觀念是聯系在一起的。

在WINDOWS 世界,安裝程序幾乎全部都是以二進制形式發布的。也就是說,用戶下載了一個程序,然後雙擊,一路NEXT,NEXT,NEXT就可以了。這個方法很適合初學者。在LINUX世界也有類似的機制,比如YUM, APT-GET 等。不過YUM和APT-GET都是比較晚才出現的,在那之前,在LINUX世界安裝程序要更麻煩些。

有的時候,LINUX的YUM, APT-GET還不夠用。比如有的人寫的一個小軟體,沒有放到這些大的公共的庫裡面。這時,你就會發現他們一般提供一個或者一堆源文件,然後需要使用者自己下載,「編譯」,安裝。這也就是LINUX世界常見的源代碼發布的形式。

一開始的時候,十分不習慣LINUX的這種發布形式。用慣了WINDOWS的雙擊安裝,總覺得LINUX的安裝很麻煩,又要自己./CONFIGURE, MAKE, MAKE INSTALL. 萬一這個軟體又依賴於其他的庫,那麼又要自己去找那些庫,萬一那些庫又依賴其他的庫...... 另外,各種庫的版本也是一個問題,萬一不兼容,那麼又要找一個兼容的。

為什麼LINUX世界這么多源代碼發布呢?為什麼WINDOWS世界流行2進制文件發布,而不是源代碼呢?關於後者,很好解釋,因為WINDOWS那邊很多源代碼都是商業秘密,是不公開的。同時,WINDOWS的程序用到的那些庫在一般的系統里都裝好了。所以2進制發布可行,也十分方便。

關於前一個問題,我覺得源代碼發布的一個好處是可以在編譯的時候進行一些優化和設置。比如同樣的代碼,在32或64位平台下編譯的時候可以進行適當的優化。另外,用戶也可以在編譯的時候設置一些開關,這樣在編譯期間的優化一般要好於運行時間的優化。

不過源代碼發布的一個壞處就是對使用者要求較高。如果運行configue,make命令順利的話還好。如果萬一不順利,要自己改下頭文件啥的,無疑是一般的使用者無法做到的。另外庫之間的依賴關系如果是人手工處理的話也十分麻煩。好在LINUX世界後來有了YUM APT-GET之類的包管理系統。大多數軟體都可以很方便的安裝了。

2、進程及其創建 CreateProcess VS fork+execv

在WINDOWS世界,創建進程最常用的WIN 32 API 是 CreateProcess以及相關函數。這個函數需要一堆參數(WINDOWS API 的特點),不過很多參數可以簡單的用NULL, TRUE OR FALSE來表示。另外,你直接告訴它要執行的是哪個文件。

到了LINUX世界,我模糊的知道fork是用來創建一個新進程的。但是當我看fork的函數說明的時候,呆住了。因為fork不需要任何參數。習慣了 CreateProcess 的10來個參數,突然換成一個不要任何參數的函數,感覺很奇妙。一方面覺得似乎事情簡單了很多,不用去把10來個參數的每個意思都搞明白。另外一方面又很疑惑,我怎麼告訴它我要執行某個文件呢?

後來才知道,LINUX中的進程的含義和WINDOWS中是不一樣的。LINUX中的進程本身是可以執行的。而WINDOWS中,進程只是表示一個資源的擁有體,是不能執行的。要執行的話,一定需要一個線程。這也部分解釋了為什麼CreateProcess中為啥一定要傳入要執行的文件的名字。

而fork的含義是把進程本身CLONE一個新的出來。也就是說,FORK之後,父進程和子進程都執行同樣的一段代碼。如果想區分的話,可以根據FORK的返回值來區分。引用一段fork的說明:

On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution.

同時在LINUX程序中,常見的寫法如下:

int pid;
pid = fork();
switch (pid)
{
case 0: //I am the child

;
case -1: //failed.

;
default: //I am the parent

}

為什麼要這樣設計呢?因為LINUX的設計目標之一就是應用於伺服器。這種情況下,一個SERVICE可能會啟動很多進程(線程)來服務不同的CLIENT. 所以FORK設計成快速復制父進程。子進程直接使用父親的地址空間,只有子進程載入一個新的可執行文件的時候才創建自己的地址空間。

這樣節省了創建地址空間這個龐大的開銷,使得LINUX的進程創建十分快。不過實際上,這里的進程相對於WINDOWS中的線程,所以同WINDOWS中的線程創建相比,二者的開銷應該差不多。

那麼如何才能讓新的進程載入一個可執行文件呢,這時就要用execv以及相關函數了。所以LINUX中,代替CreateProcess()的函數是fork+execv

3、文件格式 PE VS ELF

WINDOWS中的可執行文件格式是PE。到了LINUX就變成了ELF。2者有相似的地方,比如都分成幾個SECTION,包含代碼段,數據段等。但是2個又不一樣。使得從一個轉到另外一個的人不得不重新學習下。有點象在國內開慣了車的人,到了香港或者英國開車,雖然也是4個輪子一個方向盤,但是一個靠左行駛,一個靠右。總是需要些時間來習慣。

那麼為啥LINUX不能和WINDOWS用同樣的文件格式呢?我覺得可能的原因有幾個。首先可能是2個差不多同時在設計的,彼此不知道對方的存在。所以也沒法一方壓倒一方。另外一個可能的原因是PE格式最開始還是保密的(後來MS公開了PE的SPEC),所以即使LINUX想直接用PE都不行。

順便說下,MS OFFICE 的文檔格式以前也是保密的,直到最近(好像是2008年)才公開。希望這可以使得OPEN OFFICE的開發順利很多。

4、內核API:固定 VS 非固定

WINDOWS內核有一套固定的API,而且向後兼容。這使得WINDOWS 驅動的開發人員在不同版本之間移植時變得很容易。比如我用WDM (WINDOWS DEVICE MODEL) 開發一個驅動,最多改下編譯選項就可以在WIN 98, 2K, XP, 2003 下使用。VISTA 我覺得也許都可以。

而LINUX沒有固定的內核API。2.4版本的內核模塊在2.6幾乎很大可能是不能兼容的。要移植的話,不只是改個編譯選項,而是要改一堆的頭文件和實現文件等。而麻煩的是,即使都是2.6內核,不同的小版本之間也有些不同。如果你的內核模塊剛好用到了變化的部分,那麼也只好重新學習,然後改自己的頭文件或者實現文件了。

固定內核API的好處是兼容性好,壞處是包袱比較大,不得不隨時支持老的,也許是過時的介面。比如WINDOWS內核里有WDM 一套API, 但是又有網卡專用的 NDIS 一套API. 實際上2套API的很多設計目標是重合的。那麼為什麼有2個呢?因為NDIS是先出來的,為了兼容性,一定要支持。而NDIS又只針對網卡,所以又出來了WDM。

不固定API的壞處是升級很麻煩,外圍的內核模塊維護者很辛苦。好處是可以隨時採用更新的設計。

5. WINDOWS與LINUX中的中斷處理比較

5.1不同之處:

在WINDOWS中,有一個IRQL (注意不是IRQ)的概念。最早的時候,我以為是CPU設計里就包括了這個東東。後來看INTEL CPU手冊,發現似乎沒有。最近又看了一遍WINDOWS INTERALS 4TH。感覺這個東西應該是包括在PIC OR APIC裡面的(關於APIC,可以看我以前的帖子)。對於X86-32,硬體設備的IRQ於IRQL之間的關系是:IRQL= 27-IRQ。引入IRQL的動機似乎是這樣的:當CPU運行在低IRQL時,如果來了一個高IRQL對應的中斷,那麼低的中斷的ISR是會被高的ISR搶過去的。就是說低的ISR又被一個更高級的ISR中斷了。這樣的好處是優先順序高的ISR可以更快的得到響應。

另外,在具體實現中,由於操作PIC OR APCI改IRQL是比較費時的,所以WINDOWS是盡量不去直接操作硬體,而是等到萬不得已的時候才改。

在LINUX中,似乎沒有類似IRQL這樣的觀念。就我目前看過的書和代碼來看,LINUX中的ISR或者是KERNLE最多是操作下CPU上的中斷標志位(IF)來開啟或者關閉中斷。也就是說,要麼中斷全開,要麼全關。

從這一點來看,LINUX在這部分的設計上比WINDOWS簡單。

5.2 相似之處:

WINDOWS和LINUX似乎都把中斷分成了2部分。在LINUX中叫ISR(還是其他?)和BOTTOM HALF。而WINODWS中,DPC(Deferred Procere Calls)和APC(Asynchronous Procere Calls)就非常類似BOTTOM HALF。二者把中斷分成兩部分的動機是差不多的。都是為了把ISR搞得越快越好。LINUX中,在ISR里一般關中斷,所以時間太長的話,其他中斷就得不到響應。WINDOWS中,ISR跑在一個很高的IRQL裡面,同樣會阻塞其他IRQL比較低的任務。

LINUX中的BOTTOM HALF 又可以分為TASKLET 和SOFIRQ。二者的主要區別是復雜度和並發性(CONCURRENCY)。下面COPY自<UNDERSTANDING LINUX NETWORK INTERNALS>一書。
Tasklet: Only one instance of each tasklet can run at any time. Different tasklets can run concurrently on different CPUs.
Softirq: Only one instance of each softirq can run at the same time on a CPU. However, the same softirq can run on different CPUs concurrentlyOnly one instance of each softirq can run at the same time on a CPU. However, the same softirq can run on different CPUs concurrently.

WINDOWS中的DPC有點類似TASKLET和SOFTIRQ。 DPC是系統范圍內的,並且運行在DPC IRQL。是一個類似中斷上下文的環境(INTERRUPT CONTEXT)。APC和DPC的區別是運行在更低級別的APC IRQL。另外,APC是針對每一個線程的。執行在某個線程環境中。主要目的也是把一部分事情放到以後去執行。APC又分為KERNEL APC 和USER APC。APC這個觀念在LINUX中似乎沒有類似的?至少我還沒想到。

5.3 參考文獻:
1. WINDOWS INTERALS 4TH
2. UNDERSTANDING LINUX NETWORK INTERNALS, 2005

UNICODE VS ASCII
KERNEL 4M/4K MIXED PAGE VS 4K PAGE
FS SEGMENT VS NO FS
GDI VS XWINDOWS
IRP VS FUNCTION POINTER
注冊表 VS 普通文件

『貳』 windows和linux伺服器哪個好

面對這個問題,一些人尤其是互聯網相關從業人員,會覺得伺服器系統當然選擇Linux更好啊,我們公司的伺服器就是Linux系統的;但同樣也有一些人,會覺得Windows操作系肆告統操作便捷,還有微軟作為技術保證。

先說我個人的觀點,Windows和Linux系統在伺服器上的表現都很好,具體選擇哪一個,還要看你的需求到底是什麼了。

至於原因呢?還是基於同樣的原則,不要以自己看到的主觀感受來判斷,而是通過客觀的數據來說明這個問題。

首先,介紹一個網站工具,netcraft(也可直接輸入網址:https://searchdns.netcraft.com/)。

在輸入框中輸入目標網站,可以通過列表看到圖中箭頭所指的OS列信息(若想看具體信息,可以關注site report列)。如果我可以遍歷這個世界上所有的網站,那麼我就可以獲取一份統計表,對應就是Linux和Windows的市場佔比。

為了方便起見,我這里就不寫爬蟲進行爬取,而是直接使用現成的。w3techs,是一個廣泛而可靠的網路技術調查網站(這個網站上的數據會按照天進行更新,還是很有權威性和實時性的),在這個網站上找到了我們希望得到的統計結果,具體信息如下圖所示。

從圖中可以看到,除去unknown的伺服器外,Linux佔比35.0%,Windows佔比29.2%。

對網站進行進一步細分,細分的依據是按照該網站的排名,可以看到一個有趣的現象。越是頂尖的網站,伺服器使用Windows的佔比就越高,例如,針對Top1000的網站,其中Windows佔比52.9%,而Linux僅佔比34.3%。

換句話說,越是牛逼的網站越是傾向於使用Windows,是不是跟各位的認知產生了一定的偏差?

還是根據w3techs網站的最新數據顯示,Linux的市場佔有率有較大的下滑趨勢。

也許這里就會更加疑惑,為什麼伺服器選擇Windows操作系統不僅不是非主流,而且還有如此大肆雹彎的裂悶市場佔有率,那麼所謂的Windows系統不穩定的問題又是如何呢?

上面這個圖中顯示的是Linux和Windows系統在人氣和流量方面的情況。其中橫坐標為使用者的數量,即人氣;縱坐標為服務的流量。

那麼又有一個現象出現了,Windows操作系統比起Linux系統,更多的被使用在高流量的網站上。

現在回到最開始的那個問題,Windows和Linux伺服器哪個好?還有那麼絕對的答案嗎?這個問題也逐步的變成了, 在企業級伺服器應用場景下, Linux和Windows伺服器各有什麼優勢。

總的來說,Linux與Windows的核心區別:

一個開源生態下依賴眾多開發者所維系的一種操作系統

VS

一個利益驅動下依賴企業進行維護迭代的一種操作系統

因為生態環境,造就了兩個操作系統最大的差別,深刻理解了這一點,就會明白為何有人選擇Linux,而也有人選擇Windows,只是大家做選擇時的核心訴求不一致而已。

舉例說明一下具體情況:

這個時候,再回過頭去看之前的統計數據,對於數據本身所表現出來的問題,還會覺得意外嗎?

目前看上去確實有一定的差別,例如很多人所說的安全性,一個公開的依靠世界各地頂尖開發者維護的系統,與一個閉源的由壟斷巨頭所維護的系統,看似確實前者安全性更好,但是也不要忽略利益的趨勢,既然微軟作為一個企業,那麼賺錢就是其最大化體現,為了更好的賺錢,提供更好的服務也許是最簡單的途徑。

Windows和Linux的優劣其實網上一搜一大堆,但是我要說的是,隨著時間的發展,Linux會越來越Windows,而Windows也越來越Linux,競品的出現本身就會按照時間的發展而取長補短。同樣按照市佔率和後續發展,支持Linux的同時支持Windows也會越來越重要。





『叄』 我在Windows下用VS2013編寫的程序,如何能讓它在Linux上也能編譯運行

總共又三種方案:mingw+codeblocks,是windows下的gcc編譯工具+跨的輕量ide,可以編譯c++的程序,還可以使用wxWidget(跨的界面工具)版
使用cygwin,是windows下中間件權級別的編譯工具。可以在cygwin下用命令行編譯程序。
使用vmware或者其他虛擬機,安裝目標linux系統,並且編譯。這是虛擬硬體級別的編譯工具,其編譯的程序是完全可以在linux系統上運行的。

『肆』 到底是選擇linux開發還是windows開發他們到底有什麼區別

可是linux的C開發有什麼不同呢?
回答:Windows上的C開發是什麼呢? 如果你只是在潭浩強書的水平的話,Windows上的開發跟Linux上的C開發沒有什麼鏈薯空不同,因為都是基本的簡單的語言的學習.C語言的學習到什麼平台都一樣.
那麼Windows中的C開發和Linux中C開發有什麼不同.不同是有的.比如.Windows下開發用Windows的庫,Linux下用Linux下的庫.雖然庫不同,但是通一懂百,所以不管是選擇在Windows下棚瞎C開發.還是Linux下開發.都是學習進步,以後再根據需要學習下對方就可以了.

另外一個不同的地方.Windows上的C開發主要藉助 VS或者VC平台.但是Linux下就有更多的選擇了.當然了很多的人認為Linux那麼多的選擇也不如Windows上的VS強大.
但是也有人認為Linux上的開發很美妙.比如你所說的.

linux開發,一旦畢業,會有公司要麼?
答: 國內在Linux下開發的人還不夠,因為嵌入式的發展很快.不過話說回來,只要你學好了,到時候,你自己的眼界開了.不要說公司要你,也許你自己就開公司了...但是如果你學得不好,就算Windows大行天小,你一樣沒有公司要.

國內的Linux公司這么少,是不是linux程序員只能在Linux下開發,沒有能力在windows下開發?
回答:什麼叫Linux公司? ,國內對於Linux系統相關方面應用是很多的.這是你的了解錯誤..
Linux沒有公司,Linux是一個生態環境.
沒有能力在windows下開發? 這個問題,其實很好回答,你會用Nokia的手機,轉去用三星的手機就不會用了嗎?確實但是比從沒有用過手機的呢?
上面的例子也許不是很恰當,但是說明了一個問題.知識是很具有普遍適當性的.但是只是一些思想.
如果想深入當然還得另花時間.

總結: 山都很高,上到了山頂都可以 一覽眾山小.
PS: 嘗試在Linux下學習編程,會比在單純在Windows下學習編程手弊獲得更多..

『伍』 windows vs 編譯的動態庫 能不能在linux 下調用

這個理虛跡論上是可以實現的。但是很復雜,通用性不強。
1、windows上的動態庫DLL文件是PE格式,而linux上的可執行文件是ELF格式,這兩種格式首先不同。
2、但是,你可以在Linux上模擬實現一個PE載入器,然後載入DLL文件,實際上就是在Linux上實現一個PE Loader。 但是,這是一個相當復雜的事情差扮並,因為,微軟沒有公布PE的完全細節,我們現在所有了解的PE結構,那都是非官方公布的!

綜上所述,不建議這樣操作,但是理論上能實缺漏現。

『陸』 Linux vs Windows:有什麼區別

Mac OS使用UNIX核心。從Mac OS切換到Linux將相對順利。

Windows用戶需要進行一些調整。在本教程中將介紹Linux操作系統並將其與Windows進行比較。

[TOC]

在Microsoft Windows中,文件存儲在不同數據驅動器上的文件夾中,如C:D:E:

但是,在 Linux中,文件以從根目錄開始的樹結構排序

該根目錄可以被視為文件系統的開始,並且它進一步分支出各種其他子目錄。根用正斜杠'/'表示。

UNIX上的常規樹文件系統可能如下所示。

在Linux和UNIX中,一切都是文件。目錄是文件,文件是文件,以及列印機,滑鼠,鍵盤等設備。

讓我們更詳細地研究文件類型。

常規文件也稱為普通文件。它們可以頃早稿包含圖像,視頻,程序或簡單的文本。它們可以是ASCII格式或二進制格式。這些是Linux用戶最常用的文件。

這些文件是其他文件類型的倉庫。你可以在目錄(子目錄)中擁有目錄文件。你可以將它們作為Windows操作系統中的「文件夾」。

在MS Windows中,列印機,CD-ROM和硬碟驅動器等設備表示為驅動器字母,如G:H:。

在Linux中,有文件表示。例如,如果第一個SATA硬碟有三個主分區,它們將被命名並編號為/ dev / sda1,/ dev / sda2和/ dev / sda3。

注意 :所有設備文件都位於/ dev /目錄中

所有上述文件類型(包括設備)都具有許可權,允許用戶讀取,編輯或執行(運行)它們。這是一個強大的Linux / Unix功能。通過更改許可權,可以對不同類型的用戶應用訪問限制。

Linux中有3種類型的用戶。

在系統上安裝Ubuntu時,將為你創建常規用戶帳戶。你的所有文件和文件夾都存儲在/ home /這是你的主目錄。作為普通用戶,你無權訪問其他用戶的目錄。

除常規帳戶外,還會在安裝時創建另一個名為root的用戶帳戶。root帳戶是 超級用戶 ,可以訪問受限文件,安裝軟體並具有管理許可權。每當你想要安裝軟體,更改系統文件或在Linux上執行任何管理任務時; 你需要以root用戶身份登錄。否則,對於播放音樂和瀏覽互聯網等常規任務,你可以使用常規帳戶。

Linux被廣泛用作伺服器操作系統。Apache,Squid,電子郵件等服務都有自己的服務帳戶。擁有服務帳戶可以提高計算機的安全性。Linux可以根據服務允許或拒絕訪問各種資源。

注意:

在Windows中,有4種類型的用戶帳戶類型。

在Windows中,你不能在同一文件夾中擁有2個具有相同名稱的文件。見下文

在Linux中,只要它們使用不同的大小寫,你就可以在同一目錄中擁有2個具有相同名稱的文件。

對於Linux中的每個用戶,目錄創建為 / home /

考慮一下,常規用戶帳戶「Tom」。他可以將他的個人文件和目錄存儲在「/ home / tom」目錄中。他無法將文件保存在其用戶目錄之外,也無法訪問其他用戶的目錄。例如,他無法訪問另一個用戶帳戶「Jerry」的目錄「/ home / jerry」。

該概念類似於Windows中的C: Documents and Settings。

引導Linux操作系統時睜者,你的用戶目錄(來自上面的示例/ home / tom)是 默認的工作目錄 。因此,目錄「/ home / tom也稱為 主目錄 ,這是一個用詞不當。

可以使用我們稍後將學習的一些命令來更改工作目錄。

在Windows中,系統和程序文件通常保存在C:驅動器中。但是,在Linux中,你會在不同的目錄中找到系統和程序文件。例如,引導文件存儲在/ boot目錄中,程序和軟體文件可以在/ bin下的/ bin,設備文件中找到。下面是重要的Linux目錄以及它們包含的內容的簡短雀孝描述。

這些是Linux和其他操作系統之間最顯著的差異。切換到Linux時會有更多變化,我們將在教程中進行討論。

『柒』 linux下編程和windows下的編程有什麼區別

Linux編程C語言用的比較多一些,C++語言也常用,Linux編程調用的介面叫做「系灶豎統調用」,C標准庫、第三方開源C/C++庫也是常用的,Linux編程會用到許多代碼庫,代碼庫選擇上比較靈活;但是Windows編程C語言就用的少了,用C語言調用Windows API編程叫做Win32編程,微軟將Windows API作了C++封裝,封裝成了C++庫叫MFC,因為MFC庫是和微軟編程數大工具VC++/VS進行捆綁的,加上MFC編程的便捷,所以Windows編程C語言用的比較少,而C++語言用的比較多,後來微軟退出.NET平台後,C#語言也成為了Windows編程的主流語言。
另外就是Linux編程,編寫命令行程序仍然占很大比例,而Windows命令行編程已經非常少了,Windows主要是圖形界面編程。還有就是Linux上腳本編程很普遍,而Windows上腳本編程的程序規模都比較小,鑒於腳本語言(除了shell腳本)是跨平台的,在Windows上也可以用,而且有些腳本編程屬於Web開發的范疇,這里就不討論了。隱畢大

『捌』 [雜燴]Windows IOCP與Linux的epoll機制對比

看到一些資料,說Windows的IOCP後發制人,比Linux的epoll優越很多。那麼優勢到底在哪裡?如何選擇Linux或Windows作為伺服器呢?
也看到有資料說,同樣在Linux上,使用reactor機制的網路庫性能比使用Proactor機制的Asio性能好接近1/5,這個例子可能與題目無關,不過我在文中可基如能會做一些相關的分析。

系統姿讓I/O模型 可分為三類:

IOCP基於非阻塞非同步模型,而epoll基於非阻塞同步模型。

參考 Hyunjik Bae, A game programmer since 1995 說的:

參考[4]比較了Windows IOCP和Linux epoll的性能,結論是如果使用Linux,應該使用支持RSS(multi-queue)的NIC,這樣可以達到與IOCP類似的性能。

Boost.Asio為了兼容Windows和Linux,在Linux上用epoll和select去模擬proactor模式,影響了它的效率和實現復雜度。其效率不及使用原生I/O機制的其它實現為Reactor模式的網搏冊啟絡庫。

引用來自參考[3]的話:

[1] Why doesn't Linux have a system like IOCP or Rio does? , 2014.
[2] 兩種高性能I/O設計模式(Reactor/Proactor)的比較 - 文章 - 伯樂在線
[3] Practical difference between epoll and Windows IO Completion Ports (IOCP)
[4] Windows IOCP vs Linux EPOLL Performance Comparison

『玖』 linux與windows的區別是什麼

對剛剛接觸Linux的人來說,很容易從windows的觀念去理解Linux系統。今天扒一扒Win和Linux之間常見的8個區別。

一、Linux終端輸入吵配密碼不回顯字元

用戶的密碼在Linux系統中非常重要,所以在終端等程序中輸入密碼是不會回顯任何符號的,這樣的設計是為了避免旁人記住你的密碼位數從而破解你的密碼,所以在終端輸入密碼的時候請盲打密碼後輕敲回車即可!

二、Linux的C盤是什麼?

Linux系統下的文件系統結構和Windows完全不同,如果真的要說Linux下的C盤,那麼只能說是/,如果說Linux的用戶文件鏈沒夾,那就是 /home,更為詳細的說明,你可以查看Deepin網路,此外把Linux系統的文件系統結構想像成一棵大樹,能夠迅速幫你理解Linux系統下的文件 系統結構。

三、Linux的軟體安裝目錄

這個與Linux的文件系統有關。雖然Linux系統的C:Program Files是/usr,但是並不是安裝的軟體所有文件都在/usr下,Linux系統下的軟體的文件一般都是散落在Linux下的多個目錄下。

四、Linux需要優化和清理軟體?

Linux系統天生優良,基本不需要什麼優化軟體。如果需要優化,可以嘗試以下工作:

1、優化內核,精簡內核功能和大小

2、關閉不需要或不常用的服務

至於清理系統,Linux系統下沒有什麼垃圾文件,一般只有緩存文件,集中存放在/tmp目錄下,並且該目錄會定期自動清理,無需用戶操心。

五、Linux需要殺毒軟體?

Linux系統下嚴密的許可權機制,導致Linux系統下少有威脅性的病毒,並且Linux也不能運行windows系統下的病毒,所以Linux系統天生很安全,但是,不要泄露Root密碼和個人用戶密碼,並且不隨意運行不知道來源和功能的腳本程序,

六、Linux的軟體安裝和來源

深度商店就是為這個而生的,你只需要打開深度商店就可以完全用滑鼠操作,安裝任何你喜歡的軟體,至於網上的編譯安裝和使用PPA等安裝方式,建議你先對系統的包管理器工具有一定的了解後才去嘗試。

七、系統更新和軟體更新

Linux系統是一個系統和軟體都很緊密的棚碰納系統,很難區分什麼是系統和軟體的更新,議是當系統提示你更新,請全部更新。

八、Linux同時安裝多個軟體?

這個和Linux系統下的軟體依賴問題,因此Linux系統安裝軟體不能並行多個安裝。

閱讀全文

與winvslinux相關的資料

熱點內容
如何卸載兩步路app 瀏覽:97
lol壓縮文件 瀏覽:555
小蘋果安淇爾寫真集 瀏覽:16
word設置修改文件密碼 瀏覽:465
ug編程怎麼攻螺紋 瀏覽:631
飄零網路驗證40模塊源碼 瀏覽:635
怎麼把微信裡面app顯示到桌面 瀏覽:590
我想在桌面新建一個文件夾 瀏覽:756
videojs蘋果無法播放 瀏覽:496
vivo手機怎麼桌面建文件夾 瀏覽:429
液壓控制模塊怎麼編程 瀏覽:249
word加下劃線顏色 瀏覽:425
g71的編程應用怎麼操作 瀏覽:100
切換文件目錄linux 瀏覽:286
同步壓縮文件內容 瀏覽:866
諸城中考查詢網站的密碼是什麼 瀏覽:615
怎麼自動讀取usb數據 瀏覽:944
自如app如何看戶型圖 瀏覽:511
一般程序編程對機子配置要求如何 瀏覽:43
拉伸實驗數據出現水平是什麼原因 瀏覽:615

友情鏈接