QuestionsAboutMultiProcessAndThread (rev. 1.5)
- Single CPU System에서 프로세서 A 가 Run 중일 때, I/O 작업을 해야 돼서 다른 프로세서 B로 스위칭을 하는 상황이다.
- 스위칭을 한다면, 프로세서 A에 Time Slice를 조금 남겨놓고 스위칭을 하는 것인가? 즉 I/O 작업을 계속 할 수 있도록 CPU가 조금씩 I/O 작업을 진행하면서 프로세서 B를 실행하는 것인가?
- 만약 그것이 아니라면, I/O 작업을 CPU가 담당하지 않는 것인가? CPU 내부 ALU와 I/O 작업 회로가 따로 있는 Independent 상황이기 때문에 그런 것인가?
- Single CPU & Single-processor & Multi-thread 환경이다.
- CPU가 할당한 Time Slice를 하나의 Processor내부에 있는 각각의 Thread가 쪼개서 사용 하는 것인가?
- 그렇다면 개념적으로 Single CPU에서 Processor Switching과 같은 것인가?
- 그럼 여러 개의 Thread가 존재하는 상황일 때, 하나의 Thread가 One Time Slice를 전부 사용하는 경우가 있는가??
- A) processor라고 쓰신 것이 아마도 process를 의미하는 것 같군요? scheduling 기법이나, time slice 정책, preemption 여부 등은 아키텍처와 운영체제 커널 구현 등 시스템에 따라 서로 다르게 최적화되어 설계합니다. thread 등의 개념도 운영체제와 개발 언어 런타임 등 플랫폼에 따라 다를 수 있습니다. 일반적으로 process의 context switching은 PCB 등 복잡한 context의 전환을 다루므로 단순한 thread 스케줄링보다 좀더 복잡할 수는 있으나 반드시 그런 것은 아닙니다. - 변형진
- 다음의 예가 적절한 예인가?
- 학교 내에 건물이 하나 밖에 없다고 가정
- Single Processor & Single Thread
- 그 건물엔 화장실이 하나 있네. 그리고 한 명 들어가면 더는 못 들어가네.
- Single Processor & Multi Thread
- 역시 화장실이 하나 있네. 그런데 여러 명 동시에 들어갈 수 있네.
- Multi Processor & Single Thread
- 화장실이 여러 개 있네. 각 화장실에는 한 명만 들어갈 수 있네.
- Multi Processor & Multi Thread
- 화장실이 여러 개 있네. 각 화장실에는 여러 명이 동시에 들어갈 수 있네.
- … 이 비유에 CPU Scheduler도 추가한다면 어떤 비유를 들 수 있을까?
- 공부하다 헷갈려서 질문 올려봅니다; - 박성현