Time of Update: 2017-02-28
談到linux的發行版本,太多了,可能誰也不能給出一個準確的數字,但是有一點是可以肯定的,linux正在變得越來越流行, 面對這麼多的Linux 發行版,打算從其他系統轉到linux系統來的初學者可能會感到困惑,即便是忠實的 Linux 使用者也沒有時間和精力去挨個嘗試,因此初學者在學習linux的之前,需要有一個明確的方向,選擇一個適合自己的系統開始學習linux至關重要!下面我們就分類介紹。1.1.1
Time of Update: 2017-02-28
1. 禁止系統響應任何從外部/內部來的ping請求攻擊者一般首先通過ping命令檢測此主機或者IP是否處於活動狀態,如果能夠ping通 某個主機或者IP,那麼攻擊者就認為此系統處於活動狀態,繼而進行攻擊或破壞。如果沒有人能ping通機器並收到響應,那麼就可以大大增強伺服器的安全性,linux下可以執行如下設定,禁止ping請求:[root@localhost ~]#echo “1”>
Time of Update: 2017-02-28
一 系統運行級windows系統有安全運行模式和正常運行模式,這是兩個不同的運行級,同樣,linux也有系統運行層級,並且linux系統的運行層級更加靈活,更加多樣化。在講述運行層級前,先講述下linux下的init程式,因為init程式直接和系統運行層級相關聯,
Time of Update: 2017-02-28
前言Linux中對一個檔案進行操作的時候,一件很重要的事情是對檔案名稱進行解析處理,並且找到對應檔案的inode對象,然後建立表示檔案的file對象。在此,對檔案名稱解析過程,並且如何找到對應inode的過程進行源碼分析。分析代碼基於Linux-3.2版本。關鍵函數分析不管是通過應用程式層的API函數還是在核心中開啟一個檔案,最終都需要調用filp_open函數,該函數的主要職責就是解析檔案名稱,找到檔案對應的inode對象,然後分配記憶體建立file對象,最後執行該檔案對應的file->
Time of Update: 2017-02-28
1, Buffer cache的作用為了提高磁碟裝置的IO效能,我們採用記憶體作為磁碟裝置的cache。使用者操作磁碟裝置的時候,首先將資料寫入記憶體,然後再將記憶體中的髒資料定時重新整理到磁碟。這個用作磁碟資料緩衝的記憶體就是所謂的buffer cache。在以前的Linux系統中,有很完善的buffer cache軟體層,專門負責磁碟資料的緩衝。在磁碟裝置的上層往往會架構檔案系統,為了提高檔案系統的效能,VFS層同樣會提供檔案系統層級的page
Time of Update: 2017-02-28
Linux系統調用系統調用指作業系統提供給使用者程式調用的一組“特殊”介面,使用者程式可以通過 這組“特殊”介面來獲得作業系統核心提供的服務。為什麼使用者程式不能直接存取系統核心提供的服 務呢?這是由於在Linux中,為了更好地保護核心空間,將程式的Runspace分為使用者空間和核心空間(也就是 常稱的使用者態和核心態),它們分別運行在不同的層級上,邏輯上是相互分離的。因此,使用者進程通常情況下
Time of Update: 2017-02-28
Linux中字元裝置的註冊過程是比較簡單的。我們通常可以調用misc_register()函數來註冊一個字元裝置。Misc裝置是一種字元裝置,通過該裝置可以將fops請求轉寄給註冊的misc裝置,從而實現字元裝置的功能。使用者調用該介面註冊Misc字元裝置時,可以動態分配裝置Minor號,當擷取Minor號之後調用class_simple_device_add()或者device_create()函數完成字元裝置的建立。Misc字元裝置註冊函數如下所示:int
Time of Update: 2017-02-28
多工函數說明我們都知道fcntl()函數解決了檔案分享權限設定的問題,如果不知道請看: http://blog.csdn.net/mybelief321/article/details/8993138。接下來該處理I/O複用的情況了。那麼,什 麼是I/O複用呢?這個咱得先弄清楚,所謂的I/O複用無非就是多個進程共同使用一個I/O輸入輸出資料流。在經典的《Unix網路編程第1卷》Chapter 6中作者詳細介紹了五種I/O模型,分別為:① blocking I/O② nonblocking
Time of Update: 2017-02-28
上一節:http://blog.csdn.net/mybelief321/article/details/8989755講述的5個基本函數函數open()、 read()、write()、lseek()和close()實現的檔案的開啟、讀/寫等操作,本節將討論在檔案已經共用的情況下 如何操作,也就是當多個使用者共同使用、操作一個檔案的情況。這時,Linux通常採用的方法是給檔案上鎖, 來避免共用的資源產生競爭的狀態。檔案鎖包括建議性鎖和強制性鎖。建議性鎖要求每個上鎖檔案的 進程檢查是否有鎖存在,
Time of Update: 2017-02-28
Linux檔案I/O系統概述虛擬檔案系統(VFS)Linux系統成功的關鍵因素之一就是具有與其 他作業系統和諧共存的能力。Linux系統的檔案系統由兩層結構構建:第一層是虛擬檔案系統(VFS),第二層 是各種不同的具體的檔案系統。VFS就是把各種具體的檔案系統的公用部分抽取出來,形成一個抽象層 ,是系統核心的一部分,它位於使用者程式和具體的檔案系統之間。它對使用者提供了標準的檔案系統調用介面,
Time of Update: 2017-02-28
守護進程概述守護進程,又叫daemon進程(不知怎的,我突然想起來吸血鬼日記中的達蒙了,很好 看的美劇),是Linux中的後台服務進程。他是一個生存期較長的進程,通常獨立於控制終端並且周期性地執行 某種任務或者等待處理某些發生的事件。守護進程常常在系統引導載入時啟動,在系統關閉時終止。Linux有 很多系統哦服務,大多數服務都是通過守護進程實現的。同時,守護進程還能完成許多系統任務,例如,作業 規划進程cronf、列印進程lqd等(這裡的結尾字母 d 就是 daemon的意思)。在Linux中,
Time of Update: 2017-02-28
實驗目的通過編寫多進程程式,熟練掌握fork()、exec()、wait()和waitpid()等函數的使用,進一步 理解在Linux中多進程編程的步驟。實驗內容該實驗有3個進程,其中一個為父進程,其餘兩個 是該父進程建立的子進程,其中一個子進程運行“ls -l”指令,另一個子進程在暫停5s後異常退出。父進程 先用阻塞方式等待第一個進程的結束,然後用非阻塞方式等待另一個子進程的退出,待收集到第2個子進程結
Time of Update: 2017-02-28
wait()和waitpid()函數說明wait()函數用於使父進程(也就是調用wait()的進程)阻塞,直到 一個子進程結束或者該進程接收到了一個指定的訊號為止。如果該父進程沒有子進程或者它的子進程已經結束 ,則wait()函數就會立即返回。waitpid()的作用和wait()一樣,但它並不一定要等待第一個終止的子 進程(它可以指定需要等待終止的子進程),它還有若干選項,如可提供一個非阻塞版本的 wait()功能,也 能支援作業控制。實際上,wait()函數只是
Time of Update: 2017-02-28
exit()和_exit()函數函數說明建立進程使用fork()函數,執行進程使用exec函數族,終止 進程則使用exit()和_exit()函數。當進程執行到exit()或_exit()函數時,進程會無條件的停止剩下的所有操 作,清除各種資料結構,並終止本進程的運行。但是,這兩個函數還是有區別的,其調用過程如圖1所示:從圖1可以看出,_exit()函數的作用是:直接使進程停止運行,清除其使用的記憶體空間,並清除其
Time of Update: 2017-02-28
exec函數族函數族說明fork() 函數用於建立一個新的子進程,該子進程幾乎複製了父進程的全 部內容,但是,這個新建立的子進程如何執行呢?exec 函數族就提供了一個在進程中啟動另一個程式執行的 方法。它可以根據指定的檔案名稱或目錄名找到可執行檔,並用它來取代原調用進程的資料區段、程式碼片段和堆棧 段,在執行完之後,原調用進程的內容除了進程號外,其他全部被新的進程替換了。另外,這裡的可執行檔 既可以是二進位檔案,也可以是Linux下任何可執行檔指令檔。在 Linux
Time of Update: 2017-02-28
fork()函數在 Linux 中建立一個新進程的唯一方法是使用fork()函數。fork()函數是 Linux 系統中 一個非常重要的函數,和咱們以前遇到過的函數由一些區別,因為它看起來執行一次卻返回兩個值,這又作何 解釋?不著急,慢慢看。函數說明fork()函數用於從已存在的一個進程中建立一個新的進程 ,新進程稱為子進程,而原進程稱為父進程。使用fork()函數得到的子進程是父進程的一個複製品,它從父進
Time of Update: 2017-02-28
訊號量通訊之semget()、semctl()、semop()及其基礎實驗這個訊號量理解起來是有點不容易啊,我看書看了好幾遍才知道怎麼回事。在講這一節訊號量之前,我還 是想先說幾個小知識點,這也是我在學習完後最終理解的“精華”,哈哈!訊號量是幹啥的?訊號量就是用來解決進程間的同步與互斥問題的一種處理序間通訊機制。同步與互斥的通俗理解這兩個名詞咱們從字面上就能理解。舉個例子吧,在建立子進程時,你是怎麼保證父子進程執行的先後順序呢
Time of Update: 2017-02-28
上一節介紹處理序間通訊方式之一訊號通訊中的訊號產生和捕捉函數,這一節介紹訊號處理函數signal()函 數和訊號集合函式組,接上一節http://blog.csdn.net/mybelief321/article/details/9078193強烈建 議做最後一個實驗!訊號處理方法訊號處理的方法主要有以下兩種:① 使用 signal() 函數;② 使用訊號集合函式組。使用signal()函數函數說明使
Time of Update: 2017-02-28
為什麼會有處理序間通訊?我們應該都知道了,進程是一個程式的一次執行,是系統資源分派的最 小單元。這裡所說的進程一般是指運行在使用者態的進程,而由於處於使用者態的不同進程間是彼此隔離的,但是 它們很可能需要相互發送一些資訊,好讓對方知道自己的進度等情況,像這樣進程間傳遞資訊就叫處理序間通訊 。處理序間通訊方式有幾種?就像處於不同城市的人之間的通訊方式有手機、電腦等方式一樣, 處理序間通訊的方式有幾種,就用下面的圖來表示把,這樣直觀,並且我一直相信這時一個知識點,必須記下來
Time of Update: 2017-02-28
訊號通訊之訊號發送捕捉kill()、raise()、alarm()、pause()及其基礎實驗訊號概述訊號是在軟體層次上對中斷機制的一種類比。在原理上,一個進程收到一個訊號與處理器 收到一個插斷要求可以說是一樣的。訊號是非同步,一個進程不必通過任何操作來等待訊號的到達, 事實上進程也不知道訊號到底什麼時候到達。訊號可以直接進行使用者空間進程和核心進程之間的互動 ,核心進程也可以利用它來通知使用者空間進程發生了哪些系統事件。它可以在任何時候發給某一個進程,而無