辛星淺析/dev/random和/dev/urandom
通常來說很多時候我們需要隨機數值,而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
相關文章
- centos5.4 kernel random number generator_/dev/urandom及/dev/randomCentOSrandomdev
- 關於 /dev/urandom 的流言終結devrandom
- /dev/zero和/dev/null的區別devNull
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- 辛星淺析windows下搭建rails框架的sqlite的一個問題WindowsAI框架SQLite
- 利用linux的/dev/urandom檔案產生較好的隨機數Linuxdevrandom隨機
- BEA dev2dev 線上dev
- 辛星淺析ruby下的mkmf.rb can't find header files for ruby atHeader
- Difference between 2>&-, 2>/dev/null, |&, &>/dev/null, >/dev/null, 2>&1devNull
- webpack-dev-server和webpack-dev-middleware的區別WebdevServer
- 關於/dev/null和/dev/zero兩個檔案裝置devNull
- /dev/shmdev
- /dev/null和標準*使用devNull
- 11g AMM和/dev/shmdev
- DEV SIT UATdev
- Git Dev FlowGitdev
- django mysql devDjangoMySqldev
- Dev BarManager用法dev
- PL/SQL DEVSQLdev
- 洗牌演算法及 random 中 shuffle 方法和 sample 方法淺析演算法random
- npm install -save 和 -save-devNPMdev
- [轉] linux下 /dev/null與/dev/zero的區別LinuxdevNull
- >/dev/null 2>&1devNull
- /dev 下的 MAKEDEVdev
- Google、Twitter 和 Spotify 如何建立文件文化 - DEVGodev
- npm run dev 和 npm run serve 區別NPMdev
- NPM run dev 報錯NPMdev
- 從Node到Deno - DEVdev
- webpack-dev-server版本WebdevServer
- 【例項】tmpfs /dev/shmdev
- /dev/shm大小修改dev
- 對/dev/shm認識dev
- 修改/dev/shm的大小dev
- android-dev-cnAndroiddev
- android-dev-comAndroiddev
- Linux /proc、/dev PrincipleLinuxdev
- linux /dev目錄Linuxdev
- 重建/dev/null檔案devNull