1.Segmentation fault這個字串在shell中是誰列印的?這個字串實際上是bash(或者別的shell)列印的,而不是當前出錯的進程,也不是核心,參見bash原始碼的WAITPID (-1, &status, 0))語句。因此如果在一個自己寫的程式中不對子進程進程任何wait或者不捕捉子進程退出訊號的話,即使是段錯誤也不會列印資訊,正如下面的程式一樣,程式將默默終止:int main(int argc, char **argv){ if (fork() ==
這裡採用的httpserver版本是2.2.22,jdk與tomcat的安裝參見:http://blog.csdn.net/supercrsky/article/details/8283200 1.下載httpserver:http://archive.apache.org/dist/httpd/httpd-2.2.22.tar.gzTomcat:http://archive.apache.org/dist/tomcat/tomcat-7/mod_jk:http://archive.apac
Apache HttpServer與Tomcat的整合見上篇:http://blog.csdn.net/supercrsky/article/details/8295023 一.配置Tomcat這裡用兩個tomcat,直接在已安裝目錄再複製一個,命名為tomcat2。#cp -r /opt/tomcat/ tomcat2進入tomcat2目錄,編輯 conf/server.xml,修改預設連接埠。#vi conf/server.xml1. 將<Server port="8005"
DNAT主要是用於保護nat內側的伺服器,針對外部主動串連內部的情形,而SNAT恰恰相反,為了保護和限制內部的網路客戶機,針對的是內部主動串連外部的情形,在linux中,nat是基於串連跟蹤模組起作用的,串連跟蹤模組將每一個資料包試圖和一個串連關聯,結果就是要麼這個資料包屬於一個已經存在的串連,要麼這個資料包不屬於任何一個已經存在的串連,這種情況下串連跟蹤模組將要為此資料包建立一個串連,顯然該資料包是這個串連的第一個資料包。如果一個串連正好匹配一條nat規則,那麼該規則將附著在表示這個串連的結構
linux是windows的超集的意思是說linux完全可以類比成windows的系統介面,這個怎麼理解呢?眾所周知,linux的檔案系統和windows的有著很大的區別,linux是以/為根的樹形結構,而windows的卻是分為好幾個盤符,不過與其說這是它們的區別倒不如說windows的磁碟布局是linux的一個特殊情況,前面的文章說了,其實windows也擁有一個樹形的檔案系統,比如一個windows系統有3個盤符,分別為C,D,E,那麼我們完全可以將一塊磁碟分為3個ext3分區,然後在根建
很多人曾經說過,linux下的病毒沒有windows多的原因在於linux使用的人不多,人們不屑於開發linux下的病毒,看到這個言論我笑了,想必很多人都有過explorer被注入的經曆吧,explorer被替換然後怎麼也刪除不掉,或者一個system32下的一個頑固檔案怎麼也刪除不掉,更不幸的是,它就是一個木馬,此時,網上流行的一些工具就顯得有用了,比如icesword,這些工具不得不動用核心驅動來靠核心的超高特權來刪除那些檔案,windows的註冊表也是一個難纏的東西,一旦註冊表被篡改,後果
曾經說過,linux由於其內秉的檔案刪除機制導致一旦發現有惡意代碼很容易被清除掉,即使發現核心本身被感染也是很容易被清除掉,但是這並不能表示linux就是絕對安全的,這僅僅說明linux的補救措施很有效,因此如果想黑掉linux系統,那麼首要的不是想如何讓使用者刪不掉惡意程式,而是儘可能嚴謹的隱藏惡意程式,隱藏的含義有必要澄清一下。考慮一下使用者或者管理員通過什麼來探知系統的行為,無非就是一些當前的系統快照以及以往的記錄,快照我們可以舉出很多例子,比如進程,連接埠,檔案,使用者等等,而記錄則可以
記憶體不用白不用,何必在一開始就限制棧的大小,linux的機制是盡量多盡量緊湊的使用虛擬記憶體,原則就是你現在不用我就用,沒有預留的概念,當然你可以通過系統調用實現預留,就像glibc的堆管理那樣,這裡所說的完全是針對於作業系統核心的,使用者空間程式完全可以向作業系統通過brk或者mmap實現使用者空間的記憶體預留。windows的實現就不是這樣,windows要求程式在運行之前就限制好棧使用的記憶體的大小,一旦超過這個大小,哪怕向下伸展的棧下方的記憶體沒有實體使用,那麼也會觸發異常,windo
linux的單點驗證我已經說了不止一次了,linux的整體設計是機制和策略相分離的,單點驗證顯然是策略方面的東西,因此驗證本身並沒有核心的介入,那麼什麼是驗證本身呢?其實就是諸如最簡單的的密碼驗證和稍微複雜一點的指紋,聲音或者瞳孔驗證,不管怎麼說這些都是策略,核心不應該介入,因此核心當中你無法知道怎麼儲存和驗證使用者的密碼是否正確,這些都是使用者空間完成的,這個事實似乎會讓linux的初學者很驚訝,像安全驗證這麼重要的事情怎麼會沒有核心介入呢?這是因為linux的機制和策略分離的特性造成的。li
1.
在netfilter的nat模組中有一個alloc_null_binding函數,該函數在local_in這個hook點上會被調用,在nat沒有初始化的時候也會被調用,在這兩種情況會被調用,netfilter規定可在postrouting和local_in執行snat,但是local_in的時候tuplehash[IP_CT_DIR_REPLY]的目的地址是本機,轉換源地址沒有任何意義,因此只是分配一個null的映射,第二種情況中會在沒有找到nat規則的情況下調用,因為如果找到了nat規則,則會
——查看IP地址:ifconfig,類似XP的ipconfig——sudo是linux系統管理指令,是允許系統管理員讓普通使用者執行一些或者全部的root命令的一個工具,如halt,reboot,su等等。這樣不僅減少了root使用者的登陸 和行政時間,同樣也提高了安全性。——設定Ubuntu與xp之間共用檔案:http://www.linuxidc.com/Linux/2011-09/43574.htm映射網路磁碟機:盤符隨便設定,檔案夾設定為\\vnet8
這個問題其實沒有什麼意思,知道了問題的答案能表明一個人技術水平有多高嗎?不能!這個問題有答案以及有意義嗎?答案都是沒有!那我還為何一直對這個問題死死揪住不放?這類問題可以提高一個人的素質以及瞭解一段關於網路和unix的曆史,正是因為這些都很有趣,才如此值得關注。在unix中,一切io相關的實體都被抽象成了檔案,之所以抽象成檔案第一是為了介面統一,第二是為了操作統一,第三是為了策略隱藏,比如這樣可以向使用者屏蔽掉具體裝置的細節或者具體檔案系統的細節,檔案抽象有塊抽象和字元抽象,對於塊檔案,你只需要
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 /* Style Definitions */
linux的檔案系統是由若干個樹形以及鏈表的結構組成的,其中眾所周知,所有的目錄和檔案組成了視覺上“一棵”樹,在這“一棵”樹背後有一條掛載鏈表,如果說每一個檔案系統都是一棵樹的話(實際上就是如此),這個鏈表將很多棵樹連結成了那“一棵”樹,因此,linux的檔案系統是由很多棵樹組成的,這些樹通過掛載鏈表聯絡在了一起,比如/tmp/my是一個目錄,下面有檔案file1,而我們可以將一個磁碟分割D掛載在這個目錄下,此時/tmp下面的檔案就是磁碟分割D下面的檔案了,不僅僅如此,通過這個模型還可以實現非儲
NULL指標一般都是應用於有效性檢測的,其實這裡面有一個約定俗成的規則,就是說無效指標並不一定是
posix的共用記憶體是通過使用者空間掛在的tmpfs檔案系統實現的,而system V的共用記憶體是由核心本身的tmpfs實現的,這裡可以看出,二者其實是用同一種機制實現的,不同的是使用者介面不同,posix旨在提供一套統一的可用介面而不是實現,因此posix的上層根本就不會在意其機制是核心實現的還是使用者空間實現的,因此用檔案系統實現再好不過了,在linux上它實際上是通過使用者空間掛載的tmpfs實現,system
前面的文章分析了接收端如何發送ack給發送端,總結一下就是立即ack,捎帶ack和延遲ack,現在看一下tcp的發送端是如何處理ack的,本質上tcp所謂的有串連就是雙方對於seq和ack的處理,對於seq,發送方是主動的,而接收端是被動的,但是對於ack則相反,因此參照tcp的流控以及擁塞控制加之效能因素的需要,首先要設計接收端如何發送ack,其次再來設計發送端如何處理,linux採納了rfc的建議(好像沒有不採納的OS,除非它猛到自己定義標準)。對於發送ack,前面已經說過了,對於如何處理a
問題:
2.6.29核心我認為最重要的就是規整了核心結構,規整了代碼結構,使得核心看起來更加自然,更加清晰,正如第二代rcu做到的那樣,原先核心中的很多機制在2.6.29核心中都得到了規整,可以說得到了屬於自己的實現,而不必再依賴核心中其它機制的實現,其中我認為最吸引我的就是cred的實現,在簡述什麼是cred之前先看一下cred這個機制背後的思想,就是“使得主體和客體分離”。