?????????о??????????? ??????linux?????ж????? ????????????????”??????????????? ??????????????”???????????. ???????????~

?????????Σ???????ж??
???????CPU????????ж???????? ???CPU????ж???????????????. ?????????????????ж???????.
??????????ж?????????? CPU????????????CPU????ж?????? ???CPU???????ж???????????????.
?????ж???????????????????????:
????1. ???ж????????; (????ж????ж?????????ж??????????)
????2. ???????????????????; (????ж????????)
????????? ??????????????????(?????????????????ж???? ?????????????????????????д??? ???????????)?? ????????????CPU?????ж????????????????ж?.
?????????????????????????? ????do_IRQ????.
?????????Σ????ж???л?
????????do_IRQ?????? ??????????ж????л?????? ?????CPU???????????ж???д??л?. ?????????????ж????”???”??(?????????CPU?????????????ж?)?? ??????????????”????”???? ???????????. ??????????ж?????CPU?????δ???? ????μ??”????”???? ???????? ????δ??????????.
????????? ?ж?????????????????? ??????????handle_IRQ_event???????ж?.
??????????Σ??????ж??????μ??ж????
????????handle_IRQ_event?????? ?????????????????????request_irq?????????ж???????.
?????????ж????????и??ж????????? ???????£? ?ж???????????????ж?????????е?. ??????request_irq????ж???????????????????ж???????????ж?????????У? ??????????????? ?????????ж??????????????????. (???? ??????????ж?? ????????????ж??????????????. ??????????????ж????? ????ж?????????????ж??δ??ack?? ????????????????????ж?.)
?????ж???????????????????? ????????????????ж?????????У? ??????????ж????????????????.
????????? ????soft_irq. ??????????????????ж?????????(???ж?)????? ??????raise_softirq??????????ж?? ?ж??????????. ??????????????soft_irq???????.
?????????Σ??????ж??????μ????ж?
???????????????????????б????????ж????????? do_softirq??????????? ???????????ж?.
?????????ж?????У? ????CPU???????????λ???????? ?λ???????????ж??. ???????ε??ж????????У? ????raise_softirq?????????????ж?? ???????? ???ж?????????????????(?????????open_softirq?????????).
????????????? ???ж????ж??????????? ???CPU??????ж??? ?ж???????????????? ???CPU??????????????ж?. ?????????ж?????ж?.
????????? ????ж???????????????????? ??????????ж?????????????ж????У? ????????????ж??????????濪?ж?????.
???????????????????ж?????????е??????????????μ??ж???ж?????????????ж??????ж??????????????μ??????~??????Ρ????μ????????????У???????????μ????ж??????????μ??ж???????????????????Σ??????????????????????ж???????????????????????????????е?????ж???????????????Σ??????????ж??????????е???????Ρ?
????????????????ж??????????????????ж???????????ж????????????????????????????????????????????????????????ж??????????????????????????????ж????????????????Щ???ж??????????????ж????????????????
????????????£????????????ж??????????????????????????????????????????????????????????ж???????δ????????ж?????????ksoftirqd??????????????????????????ж????????
?????????Σ??????ж??????μ?tasklet
?????????? ???ж???????????. ???????????ж?????μ???е??????????????tasklet??????????.
????tasklet???????ж???????? ???????????????ж?????HI_SOFTIRQ??TASKLET_SOFTIRQ(????????????)?? ?????????????????ж?????????????? ????tasklet???????.
????????? ???????ε??ж????????У? ?????ж?????? ??????tasklet_schedule/tasklet_hi_schedule??????tasklet?? ????ж??????????. ??????????HI_SOFTIRQ/TASKLET_SOFTIRQ????????ж?????????????????tasklet(???tasklet???????????????????????).
??????????? tasklet?????????softirq????????????????? ????????????? ???????? softirq????CPU??????? ???CPU?????????softirq. ??Щsoftirq??????????????????????? ??????????????CPU????????. ??tasklet????????CPU?????л???е?? ????????????????????????.
????????? softirq??????????tasklet???????·?? ????????????????????????????????????????? ??????softirq??. ????: ????ж???????? ???緢??/??????????.
??????β???
????CPU??????ж???? ?????????????Σ? ?ж???????. ???????????????б??????????????????. ?ж???????.
???????????
??????????????У? ??????????????? ???????????????????CPU??(??????ж???????????μ??ж???????). ????? ?ж?????????????У? ????????ó?CPU!
??????????????????????? ?ж???????????????task??(?????????????????????????)?? ?????????????????. ????????????ó?CPU?? ????????????????????? ???????????task????????? ????????????.
?????????????????????????:
????1. ?????????????ж??????????CPU?? ??????????Щ????????????CPU;
????2. ?ж?????????????в???????????????????(???????????);
???????????????? ???μ?linux?????????ksoftirqd??????? ????????????softirq????????????? ??????ж???????? ?????ksoftirqd?? ??????????????. ???softirq????????ksoftirqd???????????? ????????????softirq????????????? ?????????softirq?????ksoftirqd???????б?????.
?????????montavista(?????????linux)?У? ???????ж???????????. (?Щ?ж??)?ж??????????????task???? ???????????. ?????????????????. (montavista???????????? ?????????????????????????????.)
????????????
????linux????汾???????????????????? ????workqueue????.
???????????work??(????????????)?? ????????????ж??????????ε??????е???schedule_work?????? work??????workqueue?У? ???????.
???????????????????????????? ??Щwork????????Щ??????????. ???????????????????Щ????????У? ??????????????.
?????????????????????????У? ?????鶴?????events/n(n????????????? ???????????n??). ??????????????????????????????????. ?Щ????????????????????????????????????.