대학교 다닐때는 놀다가,  지금에서야  여러 블러그 보면서 커널이 궁금해서 이곳까지 왔네요..


다음 스터디모집때는 참가해서 제대로 좀 공부 해봐야 겠다는 각오를 다지고 있구요...


각설하고, 제가 가진 의문은 이렇습니다.   시스템콜이 인터럽터인가????



일반적으로 시스템콜에 대해서 찾아보면 보통은 아래와 같이 설명이 나옵니다..


시스템콜 => S/W 인터럽터루틴내에서  시스템콜 테이블에서 호출됨...


이렇게 보면, 시스템콜은 일종의 인터럽터의 일종으로 봐도 무방할듯 합니다.



근데, 또, 어떤글을보니,  시스템콜은 인터럽터 루틴이 끝난후 호출된다고 합니다..( 출처는 기억이 안남. )


이럴때는 시스템콜은 인터럽터가 아니게 될꺼라고 생각이 들거든요..   




시스템콜이 인터럽터가 맞냐? 아니냐?  이 차이가 굉장이 중요할거 같은데요.....


일반적인 쓰레드와 다르게 인터럽터는 자주발생할수 있기 때문에 스케줄러의 Context Switching대상이 아닌거 같고, 

( 자주호출되는 말이 좀 이상하긴한데, 어쨌든, 클록 인터럽터라는 놈도 있고  ... )

 

때문에 인터럽터가 도중에는 스케줄러가 호출이 절대 안되는 거로 알고 있는데요.. ( 이게 비선점Kernel이라고 부르는거 같은데 )


시스템콜함수를 인터럽터로 보면 시스템콜을 심하게  잘못짜서 심하게  코드가 길거나 Block되면


실시간 반응성이 무자게 떨어지는 문제가 생길거 같거든요 (  이때문에 선점형Kernel이 나오게 된거 같다고 생각이 듭니다. )


곧 인터럽터핸들을 짧고 간결하게 짜듯이   시스템콜 함수는 최대한 심플하게 짜야한다는 결론이....


반면에 시스템콜이 인터럽터가 아니라면,  시스템콜함수를 길게 짜거나 반응성이 느리게 짜도  별 문제가 되지 않을거 같아서,


좀더 복잡한 시스템콜을 만들수 있지 않을까 생각이 듭니다...




마지막으로,  선점형kernel 역시 백프로 개념을 못잡고 있는데요..  


선점형커널은  인터럽터 도중에 인터럽터가 올수 있는데,   인터럽터가 몇번 nesting된 상황에서 


클럭 인터럽터가 끝난후 스케줄러가 호출되었다고 치면,   인터럽터인 도중 상태에서 스케줄러가 Context Switching, 


다시 복귀할때도 스케줄러 Context Switching에 의해서 원래 위치로 돌아온다는 말인데,,  


이러면 일반루틴과 인터럽터루틴을 구지 구별해서 코딩할  필요가 없어질거 같거든요.. 


개념이 잘 안잡혀서 좀 혼란스럽네요.. 블러그 검색으로 알아보는것도 한계가 온거같고,,...




이런기초적인 지식도 없이 리눅스 소스코드 열어서 볼 용기도 나지않고, 


주위에 커널 하는 사람이 아무도 없어서 물어볼 사람도 없고 답답한 마음에 글 남겨봅니다.







  



번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22246
438 raw device에 random write를 보내고 싶습니다. ysh 2015.01.29 6268
437 커널 이미지가 올라가는 물리 메모리의 시작주소는 어디일까요? shepherd44 2015.01.07 1935
436 메모리 페이지 테이블에 관란 질문입니다.(TTBR0, TTBR1) 김영민 2014.12.16 2433
435 리눅스 커널 내부구조 소스 키보드 LED예제중 에러문제 천하무적주석 2014.12.11 1827
434 TX timestamp 관련 질문 정재훈 2014.11.04 2218
433 ioremap 관련해서 질문드립니다. [1] ysh 2014.10.29 2516
432 안녕하세요. 쓰레드에 관련하여 질문이 있습니다. 송창인 2014.10.22 1618
431 리눅스에서 지원하는 priority inheritance futex 에 대해서 질문입니다. CVE 2014.10.13 2327
430 mmap하여 read,write에 관한 질문입니다. [1] ysh 2014.10.08 2215
429 NAND ERASE 할 때 BLOCK 단위로 지우지 않는 방법 있을까요 ? [1] 최고운 2014.10.02 1813
428 atomic_read, atomic_add 시 interrupt disable, restore 가 필요한지.. [4] YYS 2014.10.02 3847
427 32bit 운영체제 resistor가 double형 변수처리하는 방법 구자경 2014.09.25 1576
426 안드로이드 포팅 질문드려요. [1] shepherd44 2014.09.18 2019
425 compressed/head.s 에서 LC0: 코드 관련 [1] erasmooth 2014.09.17 1853
424 "코드로 알아보는 ARM 리눅스 커널" 책에서...(초판 2쇄) erasmooth 2014.09.17 2314
423 boot.bin 파일을 부팅하는 usb를 만들고 싶습니다. 마고 2014.09.16 1835
422 리눅스에서 local APIC 타이머 레지스터 사용 질문드립니다. it876 2014.09.15 2108
421 __mmap_switched 레이블 전후로 PIC 에서 절대주소로 전환되는 원리 [1] erasmooth 2014.09.12 1880
420 qemu에 커널을 올릴 때 에러가 발생합니다. [3] ysh 2014.09.10 2170
» 시스템콜 대해서 질문좀 드려봅니다. [6] 장비익덕 2014.08.14 3973
XE Login