안녕하세요 와롤러님. 어제 운영체제 강의에서 질문 못한게 있어서 더지에 남깁니다 (다음 시간에 다룰 내용이라고 하셔서 고민하다가 질문을 안했는데, 계속 궁금증이 남네요) - 프로세스 a, b, c 가 메모리에 올라가 있는 상황 - a의 작업이 오래걸려서 b로 갈아타고, b도 느려서 c로 갈아탄 상황 -> 위의 상황에서 a 프로세스의 컨텍스트 스택이 저장된 후 프로세스 b로 넘어가고, 프로세스 c로 넘어갈 때도 동일한 작업이 이루어지는 것으로 이해했습니다 -> 여기서 궁금한 점은 작업이 다시 전환되는 '순서'인데요 스택의 경우 후입선출의 작업 순서를 가지는 것으로 알고있습니다. 따라서 a -> b -> c 순서로 프로세스 실행이 전환된다면 프로세스 c의 작업을 마쳤을 경우 프로세스 b로 돌아갈 수 밖에 없는 건가요? 만약 a로 돌아간다면, 이전 a 작업데이터가 b 스택 이전에 존재하니까 이전에 저장했던 데이터를 사용할 수 없어서 처음부터 작업을 진행해야 하는건가요?
OS가 프로세스의 컨텍스트를 저장하는데 스택을 사용하고 있지는 않습니다. 대신에 테이블과 같은 다른 자료구조를 사용하고 있습니다. 잘 생각하셨습니다. 스택이라면 A 프로세스의 컨텍스트를 꺼내기 위해서 B까지 꺼내야 하는 상황이 벌어지겠죠. 작업이 전환되는 순서는 OS의 스케줄링 알고리즘에 의해 결정 됩니다. 따라서 A 프로세스로 갈지 B 프로세스로 갈지 예측하기는 어렵습니다. 그 때 그 때 메모리의 상황, CPU의 상태에 따라 달라집니다. 제가 강의에서 표현하기로는 '오래 걸리는 것 같으면' 컨텍스트 스위칭이 일어난다고 했는데 이처럼 너무 많은 시간을 혼자 점유하고 있으면 스위칭이 일어나기도 하고요. 좀 더 높은 우선순위의 작업이 생기면 '인터럽트'가 발생하면서 스위칭이 생길 수도 있습니다. 더 자세한 것을 공부하고 싶다면 운영체제의 '스케줄링 알고리즘'에 대해서 알아보시면 좋습니다.