Closed taxol1203 closed 3 years ago
좀 더 자세한 내용은 task_struct 구조체를 참고하시면 좋습니다.
코어에 할당되는 프로세스도 최소한 하나의 스레드를 가지고 있으니 별 차이가 없겠네요! 이해 잘 되었습니다👍
이해를 돕기 위해 한 번 정리해 봤습니다.
멀티 스레드 환경 코어 1 <- 프로세스 A 스레드 A 코어 2 <- 프로세스 A 스레드 B
멀티 프로세스 환경 코어 1 <- 프로세스 A 스레드 A 코어 2<- 프로세스 B 스레드 A
=> 스레드의 작업을 task_struct로 캡슐화
지난 세미나의 질문 중에서
우선 질문에 대한 대답은, 멀티 프로세싱은 한 코어마다 한 프로세스가 할당 되어 동작합니다.
따라서, 프로세스 하나당 cpu에 할당되어 작업을 수행하되, 그 작업 내에서 스레드들이 서로 switching 되어 thread context switch가 일어나게 됩니다.
그런데, 위 내용을 찾아보다 보니 리눅스 소스에 의하면 프로세스나 스레드나 다 같은 구조체로 인식하고 동작한다고 합니다.
따라서, os 스케쥴러 따라서 프로세스든 스레드든 정해진 스케쥴링 따라서 컨텍스트 스위칭이 일어납니다.
이것이 가능한 이유는 상위 레이어에서는 추상화를 잘 해놓아 스레드든 프로세스든 구분하지 않고 쓸 수 있게 되어 관계 없이 스위칭이 일어나게 됩니다.
무책임한 답변일 것이라 예상됩니다. 현재 운영체제에 대한 지식이 짧아 정확한 답변을 못드린 것이 죄송하네요 ㅠㅠ 나중에 계속적으로 이에 관련된 내용을 공부하면 추가로 기제하겠습니다