[堆棧]Linux 中的各類棧:進程棧 線程棧 內核棧 中斷棧

轉自:http://www.javashuo.com/article/p-hlrfovsk-gs.html.net

問題1:不一樣線程/進程擁有着不一樣的棧,那系統全部的中斷用的是同一個棧嗎,那意味着不支持中斷嵌套,若是中斷能夠被打斷,那麼不一樣中斷必須使用不一樣棧,不然如何管控,怎麼理解這個問題?線程

M3的雙堆棧(PSP/MSP), ucos舉例,在不使用OS的時候,中斷和非中斷都是用PSP,而使用OS(ucos)則main和中斷使用MSP,線程使用PSP,這裏是經過CONTROL[1]爲0和1決定的,全部中斷擁有着一個主堆棧,blog

Push eight registers:xPSR,PC,LR,R12,R3,R2,R1,R0進程

問題2:M3,M4中斷嵌套和NVIC的Group怎麼理解?get

M3/M4的和A9核自己是支持中斷嵌套的,也就是NVIC(Nested Vectored Interrupt Controller)thread

可是系統未必支持co

  • Linux,早起的Linux是支持的,可是後面因爲可能存在堆棧溢出的風險,取消中斷嵌套
  • FreeRTOS是否支持?
  • UCOS是否支持?
  • RT-thread是否支持?
相關文章
相關標籤/搜索