突破感官---從人生、歷史到單片機(jī):聊一聊時(shí)間的話題
朱有田 2017/11/5
這篇文章寫給對(duì)技術(shù)感興趣、喜歡思考的人、也寫給初學(xué)計(jì)算機(jī)、單片機(jī)的人讓我們突破自己的生理感官,重新認(rèn)識(shí)時(shí)間這個(gè)東西。
時(shí)間這個(gè)詞和愛情一樣,是我們經(jīng)常所要提及,以及永遠(yuǎn)不會(huì)過時(shí)的話題。
“曾經(jīng)有一份真誠(chéng)的愛情放在我面前,我沒有珍惜等我失去的時(shí)候我才后悔莫及,人世間最痛苦的事莫過于此。如果上天能夠給我一個(gè)再來一次的機(jī)會(huì), 我會(huì)對(duì)那個(gè)女孩子說三個(gè)字:我愛你。如果非要在這份愛上加上一個(gè)期限,我希 望是……一萬(wàn)年!”
《大話西游》 中周星馳扮演的孫悟空對(duì)紫霞說的那段臺(tái)詞已然成為經(jīng)典。今 天我們先不討論愛情,而來討論一下:一萬(wàn)年真的很久嗎?
從感官上來說,答案是肯定的大家都會(huì)覺得一萬(wàn)年很久。因?yàn)闊o(wú)論時(shí)間、空間,對(duì)于人的神經(jīng)感官系統(tǒng)來說,都有一個(gè)可感受的范圍,而往往超過感受范 圍的事物,總是很難被人理解和接受,這是普遍現(xiàn)象。我們不理解某個(gè)事物,是 因?yàn)樗茈y被直接感受到,人類之所以偉大,是因?yàn)榭傆幸恍〔糠秩四軌蛘J(rèn)識(shí)到 自己感受范圍之外的東西,推動(dòng)科學(xué)文明向前發(fā)展。對(duì)于時(shí)間的感官,我們能夠察覺到最小單位為秒,最大單位為年。我們常常用秒來表達(dá)較小的時(shí)間因?yàn)槊腌娛侵苯涌蓴?shù)的,秒就是嘀嗒之間,一件事情很快往往說一秒鐘搞定!一件事隨時(shí)隨刻能做到,叫分分鐘的事。另一面,人類個(gè)體壽命普遍小于 100 年,10 年對(duì)我們來說就已經(jīng)夠久的了,人生有幾個(gè)十年 呀?一萬(wàn)年理所當(dāng)然就遙不可及了。本文要討論的是超越我們的感官,先從數(shù)字說起。從數(shù)學(xué)角度去理解時(shí)間的刻度時(shí)間在宏觀上是可以無(wú)限延展的,從宇宙誕生那第一秒開始,1 秒,10 秒,100 秒,100000…00 秒一直往前計(jì)時(shí),直到無(wú)窮, 沒有盡頭。微觀上,時(shí)間又是可以無(wú)限微分的,0.1秒,0.01 秒,0.001 秒,0.0001秒,0.0000000…001 秒,小數(shù)點(diǎn)后延伸無(wú)數(shù)個(gè) 0,看不到盡頭,無(wú)限靠近 0,卻 永遠(yuǎn)達(dá)不到 0。
一萬(wàn)年真的很久嗎?“久”本身就是一種感官描述,對(duì)于一年而言,一萬(wàn)年 確實(shí)很久,而對(duì)于一億年來說,一萬(wàn)年就是剎那間了。在這里我們無(wú)法形容全部 的時(shí)間刻度,只能建立在已知的事物上有限的談?wù)撘幌聲r(shí)間的范圍。
人的生命期(100 年),人類進(jìn)化歷史(1000 萬(wàn)年),地球的壽命(46 億年), 用同一個(gè)圖來表示,是否有相似之處?不出意外的話,我們的人生是這樣的:
過紀(jì)錄片或者去過博物館的都應(yīng)該知道,我們?nèi)祟愡M(jìn)化是這樣的:
我們以及所有祖先的人生在這個(gè)圖里面就是分布在各自位置的一條極細(xì)的豎 線。而整個(gè)人類進(jìn)化史對(duì)于地球時(shí)間而言,又是在那個(gè)圖表里面的一條豎線。
再來看看微觀時(shí)間的圖表,是否也似曾相識(shí)?
電視機(jī)看起來那么神奇,其實(shí)它只是一個(gè)圖片顯示器,進(jìn)一步說,它僅僅是 一個(gè)像素顯示器,它不停的切換靜態(tài)圖像,當(dāng)速度超過肉眼能夠感知的范圍,我 們就覺得電視機(jī)的畫面在連續(xù)不斷的運(yùn)動(dòng)。也就是說,我們看著電視,我們的眼 睛一直在被電視欺騙。若把時(shí)間調(diào)慢,電視機(jī)就像一臺(tái)自動(dòng)切換的圖片瀏覽器, 再把時(shí)間調(diào)慢,電視機(jī)只是在按次序的點(diǎn)亮屏幕上的一個(gè)點(diǎn)。
來看一下人們?cè)阪I盤上敲擊一個(gè)按鍵時(shí)發(fā)生的時(shí)間圖表:
對(duì)于鍵盤掃描程序而言,人類的手指敲擊動(dòng)作實(shí)在太慢了。我們使出最快的 鋼琴手,迅速敲擊按鍵使得按鍵底部的開關(guān)閉合約 200 到300 毫秒 ms,那已經(jīng) 非常快了!而這個(gè)時(shí)間對(duì)于計(jì)算機(jī)而言,相當(dāng)于你按下按鍵經(jīng)過了一個(gè)月才釋放。這與我們以自己的人生去度量人類歷史進(jìn)程的道理是一樣的。
再來看一 個(gè)栗子:
滬昆高速鐵路由 滬杭客運(yùn)專線、杭長(zhǎng)客運(yùn)專線以及 長(zhǎng)昆客運(yùn)專線組成,途 經(jīng) 上海、杭州、南昌、長(zhǎng)沙、貴陽(yáng)、昆明6座 省會(huì)城市及直轄市,線路全長(zhǎng) 2252 公里,設(shè)計(jì)速度 350km/h,是 中國(guó)東西向線路里程最長(zhǎng)、經(jīng)過 省份最多的 高速 鐵路。
如果,我們沿著滬昆高鐵布置一根連續(xù)的電纜,在昆明設(shè)置一個(gè)開關(guān),在上 海設(shè)置一個(gè)電壓表,我們?cè)噲D在按下開關(guān)的時(shí)刻啟動(dòng)計(jì)時(shí),在電壓表針動(dòng)作時(shí)關(guān) 閉計(jì)時(shí),你們考慮一下這個(gè)時(shí)間是多久?受哪些因素影響?本文不深入討論這個(gè) 栗子的具體結(jié)果,而是讓讀者感受到時(shí)間的存在,并不是僅僅只考慮開關(guān)合上, 電壓上升的純粹邏輯。
接下來看看繼電器的情況:
如圖,當(dāng)開關(guān)按下時(shí)開始啟動(dòng)計(jì)時(shí),繼電器線圈得電產(chǎn)生磁力,將銜鐵往下 吸合,使得繼電器的3腳經(jīng)過一段物理距離之后,與5腳接觸,計(jì)時(shí)停止,測(cè)得 該繼電器的吸合時(shí)間。同樣,當(dāng)開關(guān)斷開時(shí)開始計(jì)時(shí),繼電器線圈失電失去磁力, 銜鐵在彈簧的拉力下復(fù)位,使得3腳與5腳分離,計(jì)時(shí)停止,測(cè)得該繼電器的釋 放時(shí)間。
通過觀察,不難發(fā)現(xiàn):3腳與5腳吸合需要的時(shí)間比3腳與5腳斷開的時(shí)間 要長(zhǎng),即吸合時(shí)間比釋放時(shí)間要長(zhǎng)。
讀者一定疑惑,為什么總是要去考慮時(shí)間,不是只要知道繼電器得電吸合, 失電釋放就行了么!其實(shí)不然,在一些應(yīng)用場(chǎng)景里,你無(wú)法避免時(shí)間因素給項(xiàng)目 造成的困擾和影響。正如繼電器,它的吸合時(shí)間決定了繼電器的動(dòng)作速度,也決 定了繼電器傳遞信號(hào)的延時(shí),假如在繼電器的輸入端加載一個(gè)寬度小于吸合時(shí)間 的脈沖信號(hào),那么該繼電器將沒有任何輸出,因?yàn)檫€沒有達(dá)到吸合位置,線圈就 已經(jīng)失電了。
接著這個(gè)話題繼續(xù)舉栗子,請(qǐng)看圖:
假如單個(gè)繼電器的吸合時(shí)間約50毫秒 ms,釋放時(shí)間約25毫秒 ms,那么圖中5個(gè)繼電器級(jí)聯(lián)控制,從開關(guān)按下到最后一個(gè)繼電器吸合時(shí)間為 50×5=250ms,從開關(guān)釋放到最后一個(gè)繼電器釋放的時(shí)間為 25×5=125ms,那么問題來了:假如 第一個(gè)開關(guān)只吸合100毫秒就斷開,此刻信號(hào)還沒有傳遞到最后一個(gè)繼電器,那么結(jié)果將如何?請(qǐng)燃燒你的大腦..。
我們來看單片機(jī) 的例子,讀者可能會(huì)擔(dān)心單片機(jī)(又稱MCU,或微控制器) 過于專業(yè)而無(wú)法理解。完全沒必要!在這里我們僅借它談?wù)撘幌掠嘘P(guān)時(shí)間的話題,順帶提一下單片機(jī)系統(tǒng)的概念。
單片機(jī)顧名思義是集成到一個(gè)芯片里面的計(jì)算機(jī)系統(tǒng),計(jì)算機(jī)系統(tǒng)就意味著 它要跑程序,也就意味著要有人去編寫這個(gè)程序。這同時(shí)意味著單片機(jī)本身并沒有具體的功能,它是一個(gè)通用件,具體要實(shí)現(xiàn)什么功能取決于你編寫的程序。
光是一塊芯片可什么也干不了,首先要有一個(gè)目標(biāo)程序文件,它可以是你親 自編寫的,也可以是朋友編寫的,總之它在PC機(jī)里面是一個(gè)文件。然后我們通過連接到電腦的程序燒錄器,打開配套的燒錄軟件,將這個(gè)文件導(dǎo)入到單片機(jī)內(nèi)。(就像把文件復(fù)制到U盤一樣)
單片機(jī)內(nèi)已經(jīng)有了程序,接下來要怎么讓它工作起來呢?這非常簡(jiǎn)單,首先, 要給單片機(jī)加上一個(gè)晶振(晶振產(chǎn)生的脈沖信號(hào)將驅(qū)動(dòng)單片機(jī)按時(shí)序工作);其次,當(dāng)然要給單片機(jī)加電;最后給一個(gè)復(fù)位信號(hào)到復(fù)位管腳;它就開始運(yùn)行程序了。這幾個(gè)最基本的要素,集合在一起,也叫最小系統(tǒng),如果不想自己親手做,在網(wǎng)上能夠輕松淘到。
言歸正傳我們切入正題,單片機(jī)系統(tǒng)往往要處理按鍵輸入、數(shù)碼管的顯示、以及其他開關(guān)量信號(hào)的輸入和輸出處理。普通的8位單片機(jī)一般具備 24到32個(gè)IO(輸入輸出)引腳,每個(gè)引腳可以作為輸入,也能作為輸出。假設(shè)單片機(jī)供電電壓為 5V,那么5V 即代表著程序中的1地)。而程序中的0相當(dāng)于電壓為0V(接最簡(jiǎn)單的輸出應(yīng)用:在P3.7管腳上面連接一個(gè)發(fā)光管的負(fù)極,發(fā)光管的正極通過限流電阻接電源。如果程序給P3.7賦值為 1,那么發(fā)光管兩端電壓都是5V電壓差為0,處于熄滅狀態(tài)。若程序給 P3.7賦值為0,那么發(fā)光管正極電壓為5V,負(fù)極電壓為0V(接地),電壓差使發(fā)光管點(diǎn)亮。這樣程序就可以控制發(fā)光 管的亮與滅了!最簡(jiǎn)單的輸入應(yīng)用:在P1.7管腳上面通過一個(gè)電阻接電源(上拉電阻),使它默認(rèn)為5V 然后再將這個(gè)管腳通過一個(gè)按鈕接地,當(dāng)按鈕按下時(shí),管腳電壓變?yōu)?V。程序只要從P1.7管腳讀取數(shù)值為0時(shí),表示該按鍵被按下。
單片機(jī)的輸入和輸出:S1-S4 按鍵輸入,d1-d8 發(fā)光管輸出
回到時(shí)間的話題,先來看一下 搖搖棒的例子:
搖搖棒有一排 LED 發(fā)光管
這又是什么原理?這是一個(gè)眼睛被時(shí)間欺騙的經(jīng)典案例!眼見為實(shí)嗎?事實(shí) 告訴你,眼見并非為實(shí),很多東西你看到了卻并非你想的那樣真實(shí)。同樣還有很 多東西是你肉眼看不到的,但看不到并不證明不存在!我們先撇開搖搖棒的實(shí)現(xiàn) 原理,來看看我們眼睛的特性。
關(guān)于人類的視覺延時(shí) ,百度百科這么說:視覺暫留(Persistence of vision)
現(xiàn)象是光對(duì)視網(wǎng)膜所產(chǎn)生的視覺在光停止作用后,仍保留一段時(shí)間的現(xiàn)象,其具體應(yīng)用是電影的拍攝和放映。原因是由 視神經(jīng)的 反應(yīng)速度造成的。是動(dòng)畫、電影等視覺媒體形成和傳播的根據(jù)。視覺實(shí)際上是靠眼睛的晶狀體成像,感光細(xì) 胞感光,并且將光信號(hào)轉(zhuǎn)換為神經(jīng)電流,傳回大腦引起人體視覺。感光細(xì)胞的感 光是靠一些感光色素,感光色素的形成是需要一定時(shí)間的,這就形成了視覺暫停 的機(jī)理。
物體在快速運(yùn)動(dòng)時(shí),當(dāng)人眼所看到的 影像消失后,人眼仍能繼續(xù)保留其影像0.1-0.4秒左右的圖像,這種現(xiàn)象被稱為視覺暫留現(xiàn)象。是人眼具有的一種性質(zhì)。人眼觀看物體時(shí),成像于視網(wǎng)膜上,并由視神經(jīng)輸入人腦,感覺到物體的像。但當(dāng)物體移去時(shí),視神經(jīng)對(duì)物體的印象不會(huì)立即消失,而要延續(xù) 0.1 -0.4秒的時(shí)間。人眼的這種性質(zhì)被稱為“眼睛的視覺暫留”。
讀到這里,我想也就不用再解釋搖搖棒的原理了!只要你切換的時(shí)間小于人 眼延時(shí),我們的眼睛就會(huì)被欺騙。接下來再看一個(gè)異曲同工的小玩意:電動(dòng)版搖 搖棒。
數(shù)碼管是廉價(jià)、簡(jiǎn)便、易于實(shí)現(xiàn)的顯示元件,沒錯(cuò),其實(shí)就是7個(gè)(帶上小 數(shù)點(diǎn)就是8個(gè))被做成 條狀和點(diǎn)狀的發(fā)光管。它能夠通過不同段位的組合顯示 出基本的數(shù)字和字母,真是一項(xiàng)了不起的發(fā)明!
數(shù)碼管的高明之處是碼段的復(fù)用,通過 7 個(gè)段的排列組合,描繪出數(shù)量超過7種的數(shù)字和字母的象形符號(hào)。如將數(shù)碼管的BC點(diǎn)亮,就是數(shù)字1,如果把ABGED點(diǎn)亮,就是數(shù)字2,非常形象,四歲的孩子都能讀懂。數(shù)碼管和單片機(jī)天然搭配,前面講到單片機(jī)的I 口(輸入輸出口)能夠直接控制發(fā)光管的亮滅,而一個(gè)數(shù) 碼管只是8個(gè)發(fā)光管裝在一個(gè)殼子里,數(shù)碼管與單片機(jī)連接是醬紫的:
圖中每個(gè)引腳上都加了電阻,是因?yàn)榘l(fā)光管本身是個(gè)二極管,二極管是不能 直接加電源的,千萬(wàn)別把發(fā)光管當(dāng)燈泡一樣接到電源,那樣會(huì)因?yàn)?a href="http://www.1cnz.cn/tags/電流/" target="_blank">電流過大而燒 毀。因此要串聯(lián)一個(gè)電阻,以限制通過發(fā)光管的電流,單個(gè)發(fā)光管的電流在1-5mA之間。
現(xiàn)在問題來了,估計(jì)讀者也意識(shí)到這個(gè)問題了:一個(gè)數(shù)碼管至少需要7 個(gè)獨(dú) 立的控制腳,如果一個(gè)系統(tǒng)需要8個(gè)甚至更多數(shù)碼管排列進(jìn)行顯示時(shí),那么至少要56個(gè)控制腳,而單片機(jī)管腳十分有限,難道一個(gè)單片機(jī)最多只能接2個(gè)數(shù)碼管?
辦法當(dāng)然有,那就是在時(shí)間上做文章,終于回到時(shí)間的話題上來了:) 一般來說一個(gè)系統(tǒng)要實(shí)現(xiàn)的初級(jí)形態(tài)總是最復(fù)雜的,人們通過線路復(fù)用、空間復(fù)用、時(shí)間復(fù)用,總之是資源的復(fù)用來簡(jiǎn)化我們的系統(tǒng)。數(shù)碼管用了7個(gè)段,顯示的內(nèi)容卻遠(yuǎn)遠(yuǎn)超過 7 種,這是對(duì)發(fā)光管的復(fù)用。一個(gè)發(fā)光管需要2根引線, 意味著一個(gè)數(shù)碼管至少有14根引線,由于發(fā)光管的一端總是要接電源正極或地(負(fù)極),把這些線合并成一根線,以減少管腳數(shù)量,是線路的復(fù)用。
把 4 個(gè)數(shù)碼管的控制腳并聯(lián)在一起,形成總線的模式,所有數(shù)碼管都用同一 組單片機(jī)IO口來驅(qū)動(dòng)。讀者的第一反應(yīng)是不是:那好像行不通,豈不是所有數(shù) 碼管都顯示相同的內(nèi)容了?
D0 到 D4 能夠控制單個(gè)數(shù)碼管的供電,如果單片機(jī)的程序這樣做:先在 IO口上輸出 1 的碼型,然后只點(diǎn)亮第1個(gè)數(shù)碼管,其他數(shù)碼管都關(guān)閉;第二步,在IO口上輸出 2 的碼型,然后只點(diǎn)亮第2個(gè)數(shù)碼管;第三步,IO口上輸出3的碼型,然后只點(diǎn)亮第3個(gè)數(shù)碼管;第四步,IO口上輸出4 的碼型,然后只點(diǎn)亮第4個(gè)數(shù)碼管。接著又回到第一步重復(fù)這些步驟。
沒錯(cuò)!就是一個(gè)跑馬燈,4個(gè)數(shù)碼管依次被點(diǎn)亮。如果把時(shí)間因素考慮進(jìn)去, 這個(gè)跑馬燈跑一圈的時(shí)間小于人眼的視覺延時(shí)時(shí)間,嘿嘿,沒錯(cuò),眼睛就這樣被 欺騙了。你就會(huì)神奇的感覺到:4個(gè)數(shù)碼管同時(shí)亮了!而且還顯示著各自獨(dú)立的內(nèi)容。
說完數(shù)碼管,再來談一談陣列顯示:
數(shù)碼管雖好,但其變化實(shí)在有限,如果要顯示一個(gè)圖形、圖標(biāo),那非要陣列 莫屬。就拿圖中的最基本的陣列單元來看,我的哥!八八六十四個(gè) LED 發(fā)光管, 如果要使每個(gè)點(diǎn)都能獨(dú)立顯示,至少需要 65 個(gè)引腳!那還有簡(jiǎn)化的空間嗎?當(dāng)然,繼續(xù)尋找線路復(fù)用的方法唄!
通過行列形式進(jìn)行組織無(wú)疑是一種直觀、簡(jiǎn)化的辦法:用 8 根行線與 8 根列 線交叉,每一個(gè)交叉點(diǎn)上連接一個(gè)發(fā)光管,將指定的行線和列線加電,那么它們 所交匯的那個(gè)發(fā)光管就被點(diǎn)亮。那豈不是同時(shí)只能點(diǎn)亮一個(gè),或者一排發(fā)光管?回憶一下前面的例子,現(xiàn)在輪到欺騙眼睛的伎倆登場(chǎng)(壞笑)!
單片機(jī) 16 個(gè)引腳驅(qū)動(dòng) 64 個(gè) LED 的陣列
以上那么多例子,說明一個(gè)事情:平時(shí)我們所感覺到事情發(fā)生“同時(shí)”性并 不完全是真的。時(shí)間能夠在你眼皮底下變戲法而讓你無(wú)法察覺!如果你是一個(gè)設(shè) 計(jì)者,要通過區(qū)區(qū) 16 根線讓 64 個(gè)發(fā)光管“同時(shí)”受控制,拋棄時(shí)間因素話,就 不可避免會(huì)鉆到牛角尖里去。“那怎么可能!”
從時(shí)間的微觀角度去看,很難有什么事情是真正同時(shí)發(fā)生的,你在電腦上看 著文檔,同時(shí)電腦又播放著迷人的音樂,音樂和顯示器上的內(nèi)容變化都是“同時(shí)” 發(fā)生著,如果真的要同時(shí),那么電腦就要有成千個(gè)處理器,每開啟一個(gè)程序,就 要增加使用一個(gè)獨(dú)立的處理器。而事實(shí)上并非如此,個(gè)人電腦一般只有一個(gè)處理器而且足以應(yīng)付你“同時(shí)”看文檔和聽歌這類事。
站在程序的視角,在陣列上顯示一個(gè) B,總共分 8 步:
陣列組織方式,除了在顯示上面派用場(chǎng),在內(nèi)存中、鍵盤中同樣可以采用類 似的方法。比如說鍵盤:
不難理解,當(dāng)按鍵查詢程序運(yùn)行一個(gè)周期所需要的時(shí)間小于你的手指按下一個(gè)按鍵的時(shí)間時(shí),無(wú)論你怎么去按下按鍵,都能被程序檢測(cè)到!假如你是超人:手指按鍵速度超過程序速度,那當(dāng)然按鍵就不能再響應(yīng)你了:)這種玩弄時(shí)間的 伎倆終于被識(shí)破了(壞笑)。
最后上一個(gè)案例給讀者自己琢磨:
手握一支筆尖帶有一個(gè)感光器 的光筆,當(dāng)光強(qiáng)大于一個(gè)設(shè)定的幅度時(shí),光筆 輸出信號(hào)1,否則輸出信號(hào)0。現(xiàn)在要實(shí)現(xiàn)光筆在LED陣列上繪畫的功能,站在程 序的角度,程序該怎么做?總共分幾步?別忘了利用時(shí)間變戲法哦,別問我為什 么不需要觸摸屏,奧秘全在于對(duì)時(shí)間的理解。
舉了那么多栗子夠累的,下面我們來玩一玩概念。學(xué)概念是最占便宜的行當(dāng), 既能快速理解,又不需要花太大成本,然后搖身一變,就能裝個(gè)專家了!這里當(dāng) 然還是說與時(shí)間有關(guān)的事,來談一談實(shí)時(shí)系統(tǒng)。
實(shí)時(shí)系統(tǒng)是什么?實(shí)時(shí)是啥意思?立即、馬上的意思?可能差不多吧。但是 立即又是多長(zhǎng)時(shí)間呢?馬上又是多長(zhǎng)時(shí)間呢?了解分時(shí)系統(tǒng)的讀者可能會(huì)本能的理解字面意思:把系統(tǒng)分為分時(shí)系統(tǒng)和實(shí)時(shí)系統(tǒng)兩大類,分時(shí)系統(tǒng)是過時(shí)的老技術(shù),實(shí)時(shí)系統(tǒng)比較高大上。真是這樣嗎?這些理解會(huì)把人帶到溝里去的。
看看百度怎么說:一個(gè)實(shí)時(shí)系統(tǒng)是指計(jì)算的正確性不僅取決于程序的邏輯正 確性,也取決于結(jié)果產(chǎn)生的時(shí)間,如果系統(tǒng)的時(shí)間約束條件得不到滿足,將會(huì)發(fā) 生系統(tǒng)出錯(cuò)。所謂“實(shí)時(shí)”,是表示“及時(shí)”,而實(shí)時(shí)系統(tǒng)是指系統(tǒng)能及時(shí)響應(yīng) 外部事件的請(qǐng)求,在規(guī)定的時(shí)間內(nèi)完成對(duì)該事件的處理,并控制所有實(shí)時(shí)任務(wù)協(xié) 調(diào)一致的運(yùn)行。
首先實(shí)時(shí)系統(tǒng)并非一定是計(jì)算機(jī)系統(tǒng),比如執(zhí)行攔截任務(wù)導(dǎo)彈的發(fā)射電路, 要求從按鈕按下到導(dǎo)彈發(fā)射的時(shí)間間隔必須小于一個(gè)值,否則將錯(cuò)過攔截目標(biāo)而 導(dǎo)致任務(wù)失敗。也就是說,實(shí)時(shí)系統(tǒng)除了對(duì)功能有要求外,對(duì)時(shí)間也有要求。按鈕按下能夠使火箭發(fā)射是功能,按下按鈕之后在要求的時(shí)間限制內(nèi)使火箭發(fā)射是時(shí)間!
既然是“實(shí)時(shí)”表示“及時(shí)”的意思,那難道分時(shí)系統(tǒng)就不及時(shí)了嗎?問到 點(diǎn)子上了,事實(shí)上,實(shí)時(shí)系統(tǒng)與分時(shí)系統(tǒng)并非并列相對(duì)的,它們根本就是兩個(gè)不 同的概念。分時(shí)系統(tǒng)主要是指計(jì)算機(jī)操作系統(tǒng),而實(shí)時(shí)系統(tǒng)是一個(gè)大概念,它也 包括操作系統(tǒng)。如果在分時(shí)系統(tǒng)上增加對(duì)時(shí)間的約束管理,使得任務(wù)的執(zhí)行時(shí)間 能夠預(yù)知和可控,那么這個(gè)分時(shí)系統(tǒng)同時(shí)又是一個(gè)實(shí)時(shí)系統(tǒng)。
為了加深認(rèn)識(shí),舉一個(gè)極端的例子:
在一艘游輪安裝有一個(gè)礁石避讓系統(tǒng),這個(gè)系統(tǒng)由聲吶裝置和舵機(jī)控制兩大 部分組成,聲吶裝置探測(cè)半徑為2海里,游輪的最高速度20節(jié)(海里每小時(shí)), 那么從探測(cè)到障礙到游輪觸礁的時(shí)間最快是6分鐘,而舵機(jī)轉(zhuǎn)向之后到游輪改變 航道需要4分鐘。那就要求礁石避讓系統(tǒng)從接收到障礙信號(hào)到輸出控制舵機(jī)轉(zhuǎn)向 的時(shí)間必須小于2分鐘。只要這個(gè)2分鐘的要求能夠滿足,那么這個(gè)礁石避讓系 統(tǒng)就是一個(gè)實(shí)時(shí)系統(tǒng)!
實(shí)時(shí)系統(tǒng)在概念上又有強(qiáng)實(shí)時(shí)和弱實(shí)時(shí)之分,或叫硬實(shí)時(shí)和軟實(shí)時(shí)之分:強(qiáng) 實(shí)時(shí)系統(tǒng)(Hard Real-Time):在航空航天、軍事、核工業(yè)等一些關(guān)鍵領(lǐng)域中, 應(yīng)用時(shí)間需求應(yīng)能夠得到完全滿足,否則就造成如飛機(jī)失事等重大地安全事故,造成重大生命財(cái)產(chǎn)損失和生態(tài)破壞。因此,在這類系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過程中,應(yīng) 采用各種分析、模擬及形式化驗(yàn)證方法對(duì)系統(tǒng)進(jìn)行嚴(yán)格的檢驗(yàn),以保證在各種情 況下應(yīng)用的時(shí)間需求和功能需求都能夠得到滿足。
弱實(shí)時(shí)系統(tǒng)(Soft Real-Time):某些應(yīng)用雖然提出了時(shí)間需求,但實(shí)時(shí)任 務(wù)偶爾違反這種需求對(duì)系統(tǒng)的運(yùn)行以及環(huán)境不會(huì)造成嚴(yán)重影響,如 視頻點(diǎn)播(Video-On-Demand,VOD)系統(tǒng)、信息采集與檢索系統(tǒng)就是典型的弱實(shí)時(shí)系統(tǒng)。在VOD系統(tǒng)中,系統(tǒng)只需保證絕大多數(shù)情況下視頻數(shù)據(jù)能夠及時(shí)傳輸給用戶即可, 偶爾的數(shù)據(jù)傳輸延遲對(duì)用戶不會(huì)造成很大影響,也不會(huì)造成像飛機(jī)失事一樣嚴(yán)重的后果。
寫在 最后:其實(shí),在時(shí)間的世界里,沒有“久”、“立即”、“馬上”、“瞬間”,時(shí)間就是一個(gè)可以用數(shù)字衡量的東西,我們的直覺和感官范圍太小,所有的感覺都建立在 相對(duì)的基礎(chǔ)上。有句諺語(yǔ)說:飯是要一口一口吃的,事情是一件一件做的,路是 一步一步走的!就是要我們認(rèn)識(shí)到時(shí)間的特性,為什么一些人可以從容面對(duì)和處 理非常多的事,而大部分人總是只能做一件事,事情多了就煩躁,失去頭緒,因 為他潛意識(shí)想所有的事情同時(shí)得到解決,然后就亂了方寸。從微觀的角度,站在 程序的視角也是如此,程序是一個(gè)指令一個(gè)指令的往下執(zhí)行的,語(yǔ)句是一句一句 往下走的,不是所有的功能和信號(hào)都是同時(shí)發(fā)生的!即使你感覺到它們是同時(shí)發(fā) 生的,那極有可能你被“欺騙”了。
假使一個(gè)程序周期就是一次生命的話,你的人生就是一部進(jìn)化史。當(dāng)一個(gè)鍵 盤掃描程序全部代碼的意義發(fā)生在某個(gè)方波的下降沿附近的某個(gè)位置時(shí),它掃到 了一個(gè)按鍵。當(dāng)你的人生發(fā)生在人類進(jìn)化史上的某個(gè)細(xì)微的角落時(shí),你干了一些 有意義的事情。李白的人生、成吉思汗的人生、耶穌的人生、爺爺?shù)娜松职?的人生、你自己的人生,相對(duì)于地球時(shí)間而言,就如同一個(gè)程序周期發(fā)生在一連 串信號(hào)中某個(gè)方波的溝溝里面,性質(zhì)是一樣的。無(wú)論你怎樣生活,無(wú)論是秉承金 錢至上還是頓悟出道的理念,無(wú)論你有或沒有偉大的目標(biāo),無(wú)論你信不信上帝, 時(shí)間就這樣一如既往,讓每個(gè)人的人生成為它的一個(gè)瞬間。
人的聰明,就在于你能夠突破感官,意識(shí)到眼見并非為實(shí),去理解那些你身 體感官永遠(yuǎn)感受不到的事實(shí)。希望本文能夠?qū)ψx者有所啟發(fā)。
審核編輯:黃飛
-
led
+關(guān)注
關(guān)注
242文章
23252瀏覽量
660577 -
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634652 -
顯示器
+關(guān)注
關(guān)注
21文章
4970瀏覽量
139926 -
晶振
+關(guān)注
關(guān)注
34文章
2859瀏覽量
68004 -
脈沖信號(hào)
+關(guān)注
關(guān)注
6文章
398瀏覽量
36956
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論