곰팡2
10
2021-10-28 15:11:16
2
162

운영체제 질문드립니다.


CPU는 한번에 프로그램 카운터에 올려져있는 하나의 명령어를 처리하는 것으로 알고있습니다.  


컨텍스트 스위칭 과정에서는 하나의 프로세스를 CPU가 처리하다가 운영체제에서 인터럽트를 발생시키면 해당 프로세스가 중단되고 다른 프로세스로 CPU가 넘어가는 방식으로 알고있는데요.

그럼 CPU가 해당 프로세스를 명령어 한줄씩 실행하는 도중 똑같이 CPU에 의해 실행되어야할 운영체제에서 어떻게 인터럽트를 발생시키는지 궁금합니다.

답변 또는 제가 이해를 잘못하고 있는 부분이 있다면 바로잡아주시면 감사하겠습니다.
0
  • 답변 2

  • 후하하핫
    1k
    2021-10-28 15:20:22
    굉장히 좋은 질문입니다. 이런 이유로 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 구분되고, 하드웨어 인터럽트가 I/O device에 의해 발생되면 비동기적으로 CPU에게 인터럽트가 발생했음을 알립니다. 그 이후의 동작은 인터럽트 종류에 따라 미리 정해진 인터럽트 핸들러가 호출되고, 핸들러의 동작이 끝난 후 다시 이전에 하던 동작을 수행합니다.
  • esrse
    1k
    2021-10-28 16:58:50

    한프로세스가 수행중이다가 다른 프로세스로 제어권이 넘어가는 것을 컨텍스트 스위칭이라 합니다.

    그리고 어떤 프로세스를 언제 실행시킬까를 정하는 걸 스케줄링이라고 하고요.

    적시에 적절한 프로세스를 수행시키는 것은 운영체제의 중요한 역할 중 하나죠.


    스케줄링이 수행되는 경우는 몇가지가 있습니다.

    1. 뮤텍스, 세마포 등

    2. 타이머 인터럽트 핸들러에서 리스케줄 플래그 세팅됐고, 인터럽트 핸들러에서 유저스페이스로 복귀할 시점

    3. 시스템콜 호출이 끝나고 다시 유저스페이스로 복귀할 시점

    4. 운영체제의 예외처리 핸들러에서 유저스페이스로 복귀할 시점

    5. 명시적인 schedule 시스템콜 호출


    질문에 명시한 상황은 2에 해당되는 것입니다.

    타이머 인터럽트는 주기적으로 인터럽트를 발생시킵니다. 인터럽트는 프로세서가 무언가 명령을 처리하고 있는 와중에 언제든지 끼어들 수 있는 메커니즘을 제공합니다. 인터럽트가 발생하면 인터럽트 핸들러가 수행되고, 인터럽트 핸들러에서는 당장에 하고 싶은 간단한 작업을 할 수 있는 거죠. 이때 다른 프로세스로 컨텍스트 스위칭을 수행시키도록 하는 것입니다.


  • 로그인을 하시면 답변을 등록할 수 있습니다.