2024 Operating Systems

trap table의 system call 함수

Author
익명
Date
2024-04-28 19:34
Views
88
------------------------------------------수업게시판 규칙------------------------------------------------
커뮤니티가 아닌 공적인 수업 게시판으로 서로 간의 예의를 지켜야 합니다.
비밀 게시물의 경우 확인하지 않고 답변해드리지도 않습니다.
----------------------------------------------------------------------------------------------------------
system call을 호출하게 되면, trap table을 통해 privileged operation을 하는 것으로 알고 있습니다.
이 때, system call을 우선적으로 담당하는 trap table이라는 것이 어떠한 의미인지 잘 이해가 가지 않습니다.

혹시, system call 함수가 호출된다면 모든 system call 함수를 우선적으로 처리해주는 trap handler 함수를 실행한 후, 진짜 실행해야하는 system call 함수를 특정 레지스터에 번호를 저장하여 그에 맞는 trap handler 함수를 실행시키는건가요?
혹은 system call 함수가 실행되면 호출되는 trap handler에서 register에 몇 번인지 적어준다면, system call table을 따로 참고하여 정확히는 system call table에 있는 함수를 실행시키는건가요?
Total 2

  • 2024-04-28 20:15

    System call은 결국 Trap을 부르는 것과 똑같습니다. 예를 들어 메모리 할당을 위해 brk system call을 호출 한다면 Trap이 발생해 커널모드에 진입하게 되고, Trap Handler에 있는 brk작업을 하는 함수를 커널 스택영역에서 처리합니다.


  • 2024-04-28 20:52

    안녕하세요 조교입니다.

    trap table은 여러 trap handler들을 포함하고 있으며,
    여러 trap handler중 시스템 콜을 담당하는 핸들러가 존재합니다. (리눅스는 0x80번)

    이 0x80번 trap handler가 레지스터에 기록된 시스템 콜 번호를 확인하고,
    시스템 콜 테이블에서 해당하는 시스템 콜을 호출합니다.


Scroll to top