① linux系統硬體時間和系統時間
在Linux中有硬體時鍾與系統時鍾兩種時鍾。硬體時鍾是指主機板上的時鍾設備,也就是通常可在BIOS畫面設定的時鍾。系統時鍾則是指kernel中的時鍾。所有Linux相關指令與函數都是讀取系統時鍾的設定。因為存在兩種不同的時鍾,那麼它們之間就會存在差異。當Linux啟動時,系統時鍾會去讀取硬體時鍾的設定,之後系統時鍾即獨立運作。
用date命令對系統時間進行設置後,並不會去修改硬體時鍾,所以系統重啟後,系統時間還算會去讀取硬體時間,這就是為何date設置失效到原因。
因此,需要在設置系統時間後,將系統時間同步到硬體時鍾。
clock/hwclock:
顯示與設定硬體時鍾(query and set the hardware clock (RTC)),兩個命令相同。RTC=Real Time Clock,也就是硬體時鍾。
命令參數:
-r, --show 讀取並列印硬體時鍾(read hardware clock and print result)-s, --hctosys 將硬體時鍾同步到系統時鍾(set the system time from the hardware clock)-w, --systohc 將系統時鍾同步到硬體時鍾(set the hardware clock to the current system time)
命令示例:
1. 查看硬體時鍾
2014年03月27日 星期四 11時03分50秒 -0.328520 seconds
[root@localhost ~]# hwclock -r
2014年03月27日 星期四 11時03分53秒 -0.797264 seconds
[root@localhost ~]# hwclock --show
2014年03月27日 星期四 11時04分01秒 -0.672267 seconds
2. clock與hwclock相同
同步網路時間到系統時間
[root@localhost ~]# ntpdate 210.72.145.4427 Mar 11:11:24 ntpdate[4766]: adjust time server 210.72.145.44 offset 0.011401 sec
210.72.145.44(中國西安授時中心的官方時間同步伺服器IP域名)
同步網路時間到系統時間後,就可以用hwclock -w將系統時間同步到硬體時間。
修改時區
可能部分系統在執行以上兩步後,在重啟後仍然失效,所以需要進行時區修改。
[root@localhost ~]# tzselect #按照提示進行選擇時區
[root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改系統時間配置文件
[root@localhost ~]# /etc/sysconfig/clock
#打開clock文件,將相關內容改成以下內容
UTC=false
ARC=false
ZONE="Asia/Shanghai"
重啟系統
[root@localhost ~]# reboot
② linux常用命令time怎麼使用
Linux中time命令,我們經常用來計算某個程序的運行耗時(real),用戶態cpu耗時(user),系統態cpu耗時(sys)
time命令最常用的使用方式就是在其後面直接跟上命令和參數:
time <command> [<arguments...>]
舉個栗子1:
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ time sleep 2
real 0m2.005s
user 0m0.001s
sys 0m0.002s
小解其意:
real 0m2.005s :sleep這個程序運行耗時為0m2.005s
user 0m0.001s : 這個時間代表的是sleep運行在用戶態的cpu時間
sys 0m0.002s : 這個時間代表的是sleep運行在核心態的cpu時間。
用戶態(User Mode):
在用戶態,代碼不具備直接訪問硬體或者訪問內存的能力,而必須藉助操作系統提供的可靠的,底層的APIs來訪問硬體或者內存。由於這種隔離帶來的保護作用,用戶態的代碼崩潰(Crash),系統是可以恢復的。我們大多數的代碼都是運行在用戶態的。
核心態(Kernel Mode):
在內核態,代碼擁有完全的,不受任何限制的訪問底層硬體的能力。可以執行任意的CPU指令,訪問任意的內存地址。內核態通常情況下,都是為那些最底層的,由操作系統提供的,可信可靠的代碼來運行的。內核態的代碼崩潰將是災難性的,它會影響到整個系統。
為什麼要區分Kernel Mode 和 User Mode:
隔離保護,使得系統更穩定。
好,講完用戶態和核心態之後,我們來看user time,說過了,這個指的是程序foo運行在用戶態的cpu時間,cpu時間不是牆上的鍾走過的時間,而是指CPU工作時間。
舉個栗子2:
#time -p 不顯示單位
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ time -p sleep 2
real 2.00
user 0.00
sys 0.00
③ linux下的幾種時鍾和定時器機制
1. RTC(Real Time Clock)
所有PC都有RTC. 它和CPU和其他晶元獨立。它在電腦關機之後還可以正常運行。RTC可以在IRQ8上產生周期性中斷. 頻率在2Hz--8192HZ.
Linux只是把RTC用來獲取時間和日期. 當然它允許進程通過對/dev/rtc設備來對它進行編程。Kernel通過0x70和0x71 I/O埠來訪問RTC。
2. TSC(Time Stamp Counter)
80x86上的微處理器都有CLK輸入針腳. 從奔騰系列開始. 微處理器支持一個計數器. 每當一個時鍾信號來的時候. 計數器加1. 可以通過匯編指令rdtsc來得到計數器的值。通過calibrate_tsc可以獲得CPU的頻率. 它是通過計算大約5毫秒里tsc寄存器裡面的增加值來確認的。或者可以通過cat /proc/cpuinfo來獲取cpu頻率。tsc可以提供比PIT更精確的時間度量。
3. PIT(Programmable internval timer)
除了RTC和TSC. IBM兼容機提供了PIT。PIT類似微波爐的鬧鍾機制. 當時間到的時候. 提供鈴聲. PIT不是產生鈴聲. 而是產生一種特殊中斷. 叫定時器中斷或者時鍾中斷。它用來告訴內核一個間隔過去了。這個時間間隔也叫做一個滴答數。可以通過編譯內核是選擇內核頻率來確定。如內核頻率設為1000HZ,則時間間隔或滴答為1/1000=1微秒。滴答月短. 定時精度更高. 但是用戶模式的時間更短. 也就是說用戶模式下程序執行會越慢。滴答的長度以納秒形式存在tick_nsec變數裡面。PIT通過8254的0x40--0x43埠來訪問。它產生中斷號為IRQ 0.
下面是關於pIT裡面的一些宏定義:
HZ:每秒中斷數。
CLOCK_TICK_RATE:值是1,193,182. 它是8254晶元內部振盪器頻率。
LATCH:代表CLOCK_TICK_RATE和HZ的比率. 被用來編程PIT。
setup_pit_timer()如下:
spin_lock_irqsave(&i8253_lock, flags);
outb_p(0x34,0x43);
udelay(10);
outb_p(LATCH & 0xff, 0x40);
udelay(10);
outb (LATCH >> 8, 0x40);
spin_unlock_irqrestore(&i8253_lock, flags);
4. CPU Local Timer
最近的80x86架構的微處理器上的local apic提供了cpu local timer.他和pit區別在於它提供了one-shot和periodic中斷。它可以使中斷發送到特定cpu。one-shot中斷常用在實時系統裡面。
④ linux下如何讀proc
用time命令運行程序,結束後就能得到運行時間。
timeprocName
最終會得到以下三類時間:
1)實際時間(realtime):從command命令行開始執行到運行終止的消逝時間;
2)用戶CPU時間(userCPUtime):命令執行完成花費的用戶CPU時間,即命令在用戶態中執行時間總和;
3)系統CPU時間(systemCPUtime):命令執行完成花費的系統CPU時間,即命令在核心態中執行時間總和。
其中,用戶CPU時間和系統CPU時間之和為CPU時間,即命令佔用CPU執行的時間總和。
實際時間要大於CPU時間,因為Linux是多任務操作系統,往往在執行一條命令時,系統還要處理其它任務。
內存可以通過/proc/${pid}/mem文件查看。
寫到腳本里:
timeprocName&
pid=`ps|grepprocName|grep-vgrep|awk'{print$1}'`
cat/proc/${pid}/mem
不知道腳本執行的速度能不能趕上在procName程序執行完前做完這一系列動作。
⑤ Linux系統命令time給出的用戶時間,系統時間,實際時間分別是什麼含義
用戶CPU時間(user CPU time): 命令執行完成花費的用戶CPU時間,即命令在用戶態中執行時間總和;
實際時間(real time): 從command命令行開始執行到運行終止的消逝時間;
系統CPU時間(system CPU time): 命令執行完成花費的系統CPU時間,即命令在核心態中執行時間總和。
Linux命令的使用時linux運維中的核心基礎,因此你需要知道常見的命令的功能選項,這樣你才能夠更好的處理遇到的問題。關於Linux命令學習這塊,你學習劉遄老師的書籍《linux就該這么學》,相信你會把linux命令掌握得非常的透徹。
⑥ linux是實時還是分時操作系統,什麼是實時操作系統,什麼是分時操作系統他們的區別是什麼
Linux是分時操作系統。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。
實時操作系統(RTOS)是指當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統做出快速響應,調度一切可利用的資源完成實時任務,並控制所有實時任務協調一致運行的操作系統。提供及時響應和高可靠性是其主要特點。
分時操作系統是使一台計算機採用時間片輪轉的方式同時為幾個、幾十個甚至幾百個用戶服務的一種操作系統。
區別:
1、交互性不同。
實時信息處理系統具有交互性,但僅限於訪問系統中某些特定的專用服務程序。
分時系統能向終端用戶提供數據處理服務、資源共享等服務。
2、可靠性要求不同。
分時系統要求系統可靠。
實時系統則要求系統高度可靠。因為任何差錯都可能帶來巨大的經濟損失甚至無法預料的災難性後果。
3、多路性表現不同。
實時控制系統,其多路性主要表現在經常對多路的現場信息進行採集以及對多個對象或多個執行機構進行控制。
分時系統具有多路性,系統按分時原則為多個終端用戶服務;
(6)linuxrealtime擴展閱讀:
基本思想
Linux的基本思想有兩點:
1、一切都是文件;
2、每個軟體都有確定的用途。
其中第一條詳細來講就是系統中的所有都歸結為一個文件,包括命令、硬體和軟體設備、操作系統、進程等等對於操作系統內核而言,都被視為擁有各自特性或類型的文件。至於說Linux是基於Unix的,很大程度上也是因為這兩者的基本思想十分相近。
⑦ 2037年後linux時間怎麼算
如果是32位的系統或者應用程序,
2038年1月19日11時14分7秒超過後、會變成1901年12月14日04時45分52秒。
對64位的系統或者程序應該沒有影響
⑧ 關於linux下 real time 和 user time的問題。急求答案,謝謝各位~~
把程序改成較長的循環, 開兩個副本, 開四個副本,結果會怎樣?