今天以乙個小例項談談作業系統時間的問題,只是簡單談一下時間,並不完整敘述整個作業系統的時間。
例項1. 試想你公司在做一款服務軟體,一天你的boss 交代乙個任務,對於沒有購買許可證的客戶可以連續執行軟體3天,超過3天軟體將自動退出。這個需求怎麼做?
方案1: 在服務啟動時讀取系統時間加3天並儲存為執行截至時間,接下來定時獲取系統時間並判斷是否超過了執行截至時間,超過了則觸發停止服務的操作。
很多人第乙個想到的就是這個方案,仔細想想。。。如果使用者修改系統時間會發生什麼事情???
例如:現在是2023年7月1日 使用者在啟動軟體前將時間修改為 2023年7月1日 ,軟體啟動計算過期時間是 2023年7月4日,接著使用者修改時間到2023年。於是,乙個很簡單的操作就將你的限制繞過去了...
要解決這個問題,或許你會在每次獲取完系統時間後判斷當前時間與 執行截至時間的差,如果大於3天,則修正執行截至時間...
so, 有沒有更簡單的方法,當然,這就要說到系統滴答時間了,在windows上可以利用 gettickcount64 函式獲得系統的滴答,即:系統啟動以來經過的毫秒,由於使用者無法修改,所以可以利用系統滴答來實現上面的功能:
方案2:在服務啟動時使用gettickcount64讀取系統的滴答(毫秒)加3天(3*24*60*1000)並儲存為執行截至時間,接下來定時獲取系統滴答並判斷是否超過了執行截至時間,超過了則觸發停止服務的操作。
利用系統滴答時間計算實際程式執行時間
1 前言 測試乙個程式的執行時間,時間包括使用者cpu時間 系統cpu時間 時鐘時間。之前獲取之前時間都是在程式的main函式用time函式實現,這個只能粗略的計算程式的執行時間,不能準確的獲取其他時間。在看 apue 時,書中有關程式時間測試程式,非常正規,提供這三個時間。如是,上網搜了一下,進行...
8 Systick系統滴答實現
之前為了學習嵌入式,寫了有1m多的word文件的學習筆記,但是因為是邊學邊寫的,總是難免有不清楚的地方或者疏漏的地方,因此在這裡重新將學習筆記重新整理,以章節的形式寫出部落格,這也是前面關於整個stm32資料夾內部落格的由來。說起來,systick系統滴答實現很簡單,說起來就是資料裝載,自減,資料為...
stm32 系統滴答定時器Systick
systick定時器簡介 systick定時器就是系統滴答定時器,systick定時器,是乙個簡單的定時器,對於st的cm3,cm4,cm7核心晶元,都有systick定時器。systick定時器常用來作延時,或者實時系統的心跳時鐘,這樣可以節省mcu資源,不用浪費乙個定時器。systick定時器是...