中斷向量為什麼叫中斷向量?
實名反對@vczh~
(話說會不會被打(逃中斷向量應該是硬體方面的術語吧,自認為和數組沒有半毛錢關係。中斷向量其實也可以算是一個指針,就是接收到一個特定的中斷指令以後執行某些代碼。舉個栗子:你在一塊單片機的/INTn腳上拉了電平,然後就可以執行外部中斷觸發的任務而不是繼續執行正在執行的任務。中斷可以有很多種,還有種是Timer中斷也很常用。比如說告訴Timer每隔1000毫秒叫我一聲,然後就每1000毫秒得到一個中斷信號,就可以通過中斷來做一個精準的計時器,這種比空跑CPU來delay的精度不知道高到哪裡去了(空跑CPU大概一天能跑飛十幾分鐘,中斷的話也就幾秒誤差,當然如果時鐘晶元的話就忽略不計了)我認為中斷向量叫中斷向量而不叫中斷指針的原因是指針是單向的,指到另一段代碼以後運行好沒法返回來,所以用了向量這個詞,可以清晰的知道向量的頭和尾。
還有種東西叫中斷向量表,就是中斷的集合,我覺得那個玩意看成一維數組是可以的。補一張8086的中斷介紹感興趣的話可以查一下8086中斷向量表(其實單片機都是有中斷的,想實踐一下就來一塊arduino開發板玩玩,寫起來幾行代碼的事情,比stm32簡單多辣)。歡迎補充和糾錯,謝謝。多說無益,讓處理器廠家的手冊來說話吧。
ARM版本(摘自《ARM? Architecture Reference Manual (ARMv7-A and ARMv7-R edition)》的Glossary篇):Intel版本(摘自《Intel? 64 and IA-32 ArchitecturesSoftware Developer』s Manual》):Exception vector
A fixed address that contains the address of the first instruction of the corresponding exception handler.
To aid in handling exceptions and interrupts, each architecturally defined exception and each interrupt condition requiring special handling by the processor is assigned a unique identification number, called a vector number. The processor uses the vector number assigned to an exception or interrupt as an index into the interrupt descriptor table (IDT). The table provides the entry point to an exception or interrupt handler (see Section 6.10, 「Interrupt
Descriptor Table (IDT)」).
下圖是實模式的表格式:
不知道為什麼這麼叫,以下純屬猜測:
參考:Vectored Interrupt
中斷有兩種,一種是一堆handler硬體根據中斷原因調用對應的,一種是只有一個handler軟體要查詢原因的,前一種叫向量化中斷,所以這種的handler指針就被叫成中斷向量了……
因為它爹給它起的名字就叫interrupt vector,中文直接翻譯過來就叫中斷向量,沒毛病。
一個東西叫什麼名字,和它是幹什麼的,完全可以是正交的關係(逃
「中斷向量」(interrupt vector)這麼一個詞彙,當然是因應網際網路的發展而創造出來的。雖然說是一個中斷服務程序的入口住址,但是「中斷」(interrupt)這麼一個概念卻非新創,而科技上的詞彙其實在詩詞的應用上,行之有年,是曰「語言中斷處」、「意識中斷處」,甚至「詩行中斷處」,只不過,這些概念與「向量」(vector)的關係就甚難理解。
如果以「中斷向量」是「中斷向量表」(interrupt vector table)裏的數組元素來了解,這些詩詞上的應用就一目瞭然了,因為一個指向中斷服務程序的指針,之所以把這個「指針」叫作「向量」是因為「向量」可以看成是「有方向的量」,所以具有「指向」的功能,更可用來表明「向量」為「可變長數組」;這個詮釋套入「文字敘述」與「文字詞彙」,就是指在「語言中斷處」、「意識中斷處」或「詩行中斷處」,「中斷向量」可以在其「中斷向量表」,遙指一個文字所表達不出來的思維方向以及一個可變可長的思想狀態。
可能這裡的向量就是指向某個東西的量,東西就是跳轉地址,量就是具體是多少!
分情況
如果題主沒學過高數/線性代數/大學物理:行,你說啥是啥,我們都按你說的叫
如果學過高數/線性代數/大學物理:你該補考了
中斷向量跟C++沒有半毛錢關係,跟處理器也沒啥關係。它跟BIOS以及操作系統有關。
1.什麼是中斷向量?
中斷向量是由BIOS程序(彙編語言寫的)在計算機開機加電的時候暫時性寫入內存的數據,它記錄著相應中斷服務程序的地址。作用不言而喻,就是指向中斷服務程序。注意:這個時候操作系統還處於實模式。在轉變為保護模式之前中斷向量就會被廢棄掉,而後在保護模式下操作系統用中斷描述符替代它。2.什麼是中斷向量表?
一系列的中斷向量放一起就構成了這張表。3.它為什麼叫中斷「向量」?
這裡的「向量」,並不是指C++裡面的標準容器「vector」,而是為了強調中斷向量的「指向」這一功能而給它起的名字。注意:它只是一個名字,只是一個名字,只是一個名字。4.再說說中斷向量和中斷描述符的關係:實模式下的中斷向量的作用,就相當於保護模式下的中斷描述符,都是用來指明相應中斷服務程序的位置。同樣的,中斷向量表就相當於中斷描述符表。這兩套中斷方案對應著操作系統的兩種不同模式。注意:前面說過在開啟保護模式之前中斷向量就會被廢棄掉,而中斷描述符是開啟保護模式之後才起作用,那麼這段空白期操作系統怎麼響應中斷呢? 答案是:關中斷interrupt vector table
vector也可以翻譯成航向,所以我都是理解為中斷航向表中斷:打斷主程序執行的行為或事件。
中斷優先順序:當前運行程序與打斷申請,誰優先的判斷依據(級別),或,一堆同時申請打斷主程序執行的中斷服務程序的優先順序。很多打斷,被篩選決定並選擇後,選中執行的中斷服務程序,存在哪裡,從哪裡開始執行,也就是程序的入口地址是多少。
中斷向量:中斷服務程序的入口地址。 有很多中斷及中斷服務程序。
中斷向量表:存放一堆中斷服務程序入口地址的一維表(數組)。嘗試回答一下。
一開始我也是贊同 @vczh輪子哥的,但是去維基一查An "interrupt vector table" (IVT) is a data structure that associates a list of interrupt handlers with a list of interrupt requests in a table of interrupt vectors. An entry in the interrupt vector is the address of the interrupt handler.
中斷向量表是什麼?是將一列中斷處理程序與一列中斷請求(?)在一表的中斷向量中聯繫起來的數據結構。實際上中斷向量只是表格中的一行,其中的一個條目就是對應的中斷處理程序的地址。
所以我認為中斷向量的向量這個詞還是應該指的是矢量代表著一個有方向有大小的指針,翻譯成向量算是誤翻?翻成中斷矢量和中斷矢量表才符合wiki的解釋。不過翻譯都是歷史遺留問題了...短答案。我覺得中斷向量的「向量」應該是個動詞,名作動~ 其他自行腦補
最早遇到vector這個詞,是在物理裡面,說是位移用向量(vector)表示。
後來是在C++裡面,就是那個std::vector&
然後結果我去查了一下vector這個詞語(wiktionary 裡面查的 vector - Wiktionary):
我發現像這種查單詞意思,光看用英語解釋的,好像不夠。。
比如像這種。。就已經是詞語的本身意思,由於引申,意思變化了之後的了。
好像要看詞源(Etymology)才可以:
詞源的話,這段話說,vector這個詞,來源是拉丁語什麼什麼。我也看不懂拉丁語,但是括弧裡面的能看懂。
第一個括弧裡面,他給了兩個意思:一個是carrier。。這個應該就引申出數組的意思了吧?vector is a collection of numbers = vector is the carrier of numbers.其實感覺要很精確對應,好像也比難說。。就是那種,carrier是表示載體啊,裝很多東西所用到的東西,這種感覺,和數組裝一堆數,比較像。
還有一個是transporter,這個感覺和指針(pointer)就差不多了。。通過指針,訪問一個地址,感覺就好像是通過transporter(地址的轉移),帶你到另外一個地方。
其實carrier,transporter意思好像也差不多。。這樣分開說,他們引申出什麼什麼意思,也只是我自己想的。就是說,看到這兩個詞,只是在我腦中,把他們和array,pointer對應起來。。
中斷向量是處理程序入口地址。中斷向量表是中斷向量的列表。
因為存在一個中斷向量表,當cpu偵測到中斷事件,會根據事件類型來訪問這個向量表,然後通過表內的函數指針,來調用相應的中斷函數。
中斷程序入口的查找是個查表的過程,入口地址統一存在一個數組中,所以叫中斷向量
向量的概念請翻線性代數書中斷的概念請翻單片機原理
指向中斷服務程序,有方向,也有大小,怎麼就不能叫向量了
推薦閱讀:
※計算機編程中經常提到的副作用,具體指的是什麼?有什麼定義嗎?
※後XP 時代的一些思考
※哪款經修改的安卓系統適合中老年人使用?
※學堂在線和網易雲課堂的操作系統課程比較?
※為什麼清華北大中科院的人那麼出色,但是中國還是不能很順利的造出一個可使用的CPU,或者操作系統?