原创 Linux內核併發和競態(1)

分析案例:要求LED設備同一時刻只能被一個應用軟件打開(open)訪問操作; 實施:   1.不管有多少個應用程序,只要訪問LED設備,必須先open,最終都會調用到底層驅動的open函數;只需再底層驅動的open做相關的代碼限定即可;

原创 Linux定時器

1.硬件定時器 一.硬件定時器 特點: 1.一旦上電,硬件定時器週期性的給CPU產生定時器中斷信號; 2.給CPU產生中斷信號的週期和頻率可以通過軟件來設置; 3.對應的linux內核定時器中斷處理函數也將會被週期性的被內核調用; 此函

原创 C++異常機制,一篇文章讓你瞭解異常

C異常機制 異常語法 代碼流程 異常說明 構造函數與異常 析構函數與異常 標準異常 C++異常機制 異常語法 一.異常拋出 •throw 異常對象; •可以拋出基本類型的對象 –throw -1; –thr

原创 Python 爬取yahoo天氣

一.使用urllib和xml 這兩個Python內建庫實現 from xml.parsers.expat import ParserCreate from urllib import request def fetch_xmldata(

原创 LinuxI2C總線驅動

一.概念 I2C總線:1.回顧相關的概念 串行傳輸: 一個時鐘週期傳輸1bit 並行傳輸: 一個時鐘週期傳輸多字節 "一個時鐘週期":CPU在時鐘的高電平或者下降沿將數據發送到數據線上,那麼設備在同週期的低電平或者上升沿從數

原创 Linux等待隊列機制

一.概念 1.linux內核等待隊列機制 1.1.概念 明確:等待分爲忙等待和休眠等待 "等待":期望某個事件發生 “事件”:比如按鍵有操作,串口有數據,網絡有數據; 明確:阻塞一般是指休眠等待 明確:進程的狀態 1.進程的準備就緒狀態T

原创 Goland IDE 常用快捷鍵

文件相關快捷鍵: CTRL+E,打開最近瀏覽過的文件。 CTRL+SHIFT+E,打開最近更改的文件。 CTRL+N,可以快速打開struct結構體。 CTRL+SHIFT+N,可以快速打開文件。 代碼格式化: CTRL+

原创 Linux內核mmap機制

1. 問:如何將物理地址映射到用戶空間的虛擬地址上?2.linux內核mmap機制 2.1.回顧LED驅動數據流的操作過程 通過分析LED驅動,得出以下結論: 如果利用read,write,ioctl三個系統調用函數實現對LED硬件進行操

原创 Linux內核併發和競態(3)

一.解決競態的方法 1.中斷屏蔽 避免競態方法之中斷屏蔽 特點: 1.能夠解決進程與進程的搶佔引起的競態問題 2.能夠解決中斷與進程的搶佔引起的競爭問題 3.能夠解決中斷與中斷引起的競態問題 4.中斷屏蔽保護的臨界區不能做休眠操作,並且