우리 눈에는 여러가지 프로그램은 동시에 실행시키는 것으로 보이지만, 사실 여러개의 프로세스를 짧은 시간 번갈아 실행시키면서 동시에 실행하는 것처럼 보이는 것입니다. 이는 CPU는 한번에 하나씩의 일을 처리하기 때문입니다. 따라서, 다른 프로세스를 실행시키기 위해서는 실행 중인 프로세스를 중단하는 인터럽트라는 것이 필요합니다. (인터럽트 설명)
인터럽트가 발생하게 되면, 중단 되기까지 진행되었던 모든 작업 정보를 저장해야지 다음에 이어서 실행을 시킬 수 있습니다. 따라서 인터럽트 발생 후, 중단된 프로세스의 context를 PCB에 업데이트 한 후, 실행할 다음 프로세스의 context를 메모리에 올려서 CPU가 실행할 수 있도록 하는 작업을 과정을 Context Switching이라고 합니다.
이를 통해 여러 프로세스가 하나의 CPU를 공유한다는 것을 알 수 있습니다.
인터럽트가 발생하면, 프로세스를 종료하고 다음 프로세스를 수행
이때 종료될 프로세스의 context를 PCB에 업데이트하고, 실행할 다음 프로세스의 context를 메모리에 올려서 CPU가 실행할 수 있도록 합니다.
하지만 Context Switching일 때, 해당 CPU는 아무 일을 할 수 없어서 오버헤드가 발생합니다. → 성능 떨어져서 적당히 해야합니다.
입출력 요청이 왔을 때
cpu 사용시간이 만료되었을 때
자식 프로세스를 만들 때
인터럽트 처리를 기다릴 때
멀티 프로세스,멀티스레드를 Context swithing과 연관지어서 설명해주세요.
그러면 멀티 프로세스는 오버헤드가 나타나지 않나요?
컨텍스트 스위칭이 일어날때 오버헤드가 일어나지 않을 수도 있나요? 있다면 어떤 경우가 있는지?
인터럽트가 발생하게 되면, context switching 과정에 대해서 설명해주세요
Context switching이 발생하는 인터럽트의 경우가 어떤게 있을까요?
프로세스 간의 통신을 해주는 IPC에 대해서 간략하게 설명부탁드릴게요
무조건 context switching하면 오버헤드가 발생하나?
자주 일어나면 오버헤드가 발생하는건가?
context switching 자체는 오버헤드가 아닌데 빈번하게 발생하게 되면 오버헤드가 발생하는건지에 대해서 한번 찾아보기