辛星淺析/dev/random和/dev/urandom

辛星發表於2015-09-16

     通常來說很多時候我們需要隨機數值,而Linux就給我們提供了兩個隨機偽裝置,一個是/dev/random,一個是/dev/urandom,他們就是提供永不為空的隨機位元組資料流。

      這個隨機數是利用當前系統的熵池計算得到的一定數量的隨機位元,然後把它們作為位元組流來返回。所謂熵池也就是當前系統的環境噪音,而熵指的是一個系統的混亂程度,而系統噪音則是用很多引數來評估的,比如記憶體的使用,檔案的使用量,不同型別的程式數等等。

      而/dev/random在不能產生新的隨機數的時候會阻塞程式,但是/dev/urandom不會阻塞,其中/dev/random的random  pool會依賴於系統中斷,因此在系統中斷數不足的時候,/dev/random裝置會一直封鎖,嘗試讀取的程式就會進入等待狀態,直到系統的中斷數夠用位置,而/dev/urandom不依賴系統的中斷,也就不會造成程式忙等待,但是資料的隨機性不夠高。

   我們可以用cat  /dev/random  | od -x 來把它轉化為十六進位制之後再檢視,當然我們會發現cat  /dev/urandom  |  od -x 的速度會快的多得多。


    參考文章:

     1.http://blog.csdn.net/ohmygirl/article/details/40385083

     2.http://www.linuxidc.com/Linux/2012-05/60476.htm



相關文章