辛星淺析/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
相關文章
- 關於 /dev/urandom 的流言終結devrandom
- 2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null的區別devNull
- BEA dev2dev 線上dev
- /dev/null和標準*使用devNull
- DEV dxTabbedMDIManagerdev
- npm install -save 和 -save-devNPMdev
- Python Web DevPythonWebdev
- 洗牌演算法及 random 中 shuffle 方法和 sample 方法淺析演算法random
- Elastic_Dev_ToolsASTdev
- Insider Dev Tour(2018.06.28)IDEdev
- npm run dev 和 npm run serve 區別NPMdev
- Google、Twitter 和 Spotify 如何建立文件文化 - DEVGodev
- dotnet dev-certs httpsdevHTTP
- 【Postopia Dev Log】Day 2dev
- 【Postopia Dev Blog】day 1dev
- DEV c++ 的配置devC++
- 從Node到Deno - DEVdev
- NPM run dev 報錯NPMdev
- application.yml&dev&redisAPPdevRedis
- Sublime Text 4 Dev中文破解版+Sublime Text 4 Dev啟用碼dev
- DEV cxgrid 自繪相關dev
- Waring: /dev/centos/swap does not existdevCentOS
- UX設計指南 - DEV社群UXdev
- WEB.DEV – Google SEO 工具WebdevGo
- android dev概念快速入門Androiddev
- Chrome Dev Tools---[效能篇]Chromedev
- 如何打破Sec、 Dev和Ops之間的孤島?dev
- 孫勇男:實時視訊 SDK 黑盒測試架構丨Dev for Dev 專欄架構dev
- python3 dev是什麼Pythondev
- Spring Boot + MYSQL + Docker的配置 - DEVSpring BootMySqlDockerdev
- Java位操作快速指南 (Dev Genius)Javadev
- Dev-C++5.11安裝教程devC++
- java web dev知識積累JavaWebdev
- dev-server失蹤問題devServer
- Android Studio: /dev/kvm device permission deniedAndroiddev
- 使用Rust的Tauri和Yew建立桌面應用程式 - DEVRustdev
- npm install -g 和npm install --save-dev的關係NPMdev
- 聲網自研傳輸層協議 AUT 的落地實踐丨Dev for Dev 專欄協議dev
- 淺析IOC 和 DI