인프런 커뮤니티 질문&답변

강욱님의 프로필 이미지
강욱

작성한 질문수

기출로 대비하는 개발자 전공면접 [CS 완전정복]

Q. multi thread에 대해서 설명해 주세요. (외 2문제)

thread의 PC register 질문

작성

·

607

1

안녕하세요! Thread 강의를 수강하다가 PC register에 대한 질문이 있어서 남깁니다!

Process & Thread 강의에서 제가 이해한 바로는,

  • Multi Process에서는, CPU 내부에 있는 PC register에는 다음에 진행해야 할 Process의 코드 주소값이 저장되어 있다.

  • Multi Process & Multi Thread에서는, 각 Thread가 PC register를 가진다.

입니다. 제가 궁금한 점은

  • "Multi Thread에서는 각 Thread가 독립적인 PC register를 갖고 있다" 하셨는데(TCB에 저장), CPU가 가지는 PC register와는 구체적으로 어떤 차이가 있나요?

  • CPU의 PC register는 각 TCB에 적힌 여러 PC register 중, CPU가 지금 처리해야 할 TCB의 PC register를 들고 있는 것인가요?

  • PCB, TCB에는 각 프로세스, 쓰레드의 Context가 저장되는 곳인 것 같은데, 이 안에 PC register(다음 실행할 코드의 주소값) 또한 포함되어 있는 건가요?

  • "Multi Process, Single Thread에서, CPU가 가지고 있는 PC register는 다음으로 처리해야 할 Process의 코드 주소값(PC register)을 가지고 있는 것이고,
    Multi Process, Multi Thread에서는, CPU가 가지고 있는 PC register는 다음으로 처리해야 할 Process 내부의 Thread의 코드 주소값(PC register)을 가지고 있다"
    고 이해해도 될까요?

입니다!

답변 2

2

개발남노씨님의 프로필 이미지
개발남노씨
지식공유자

주말에 열심히 공부하시는 욱님 응원합니다.

답변 드릴게요

 

  • "Multi Thread에서는 각 Thread가 독립적인 PC register를 갖고 있다" 하셨는데(TCB에 저장), CPU가 가지는 PC register와는 구체적으로 어떤 차이가 있나요?

    => 제가 말로 설명 하다보니 조금 오해의 소지가 있는 늬앙스의 단어 선택을 한 것 같아요. PC register는 CPU가 가지고 있는것입니다., 각 thread는 pc register를 갖고 있는건 아닙니다.

    CPU의 PC register가 thread1의 code영역에서 15번째 줄을(그냥 예시로) 가리키고 있었다고 해볼게요. 이 때, context switch가 발생하면, thread1의 15번째 줄을 가리키고 있다는 정보를 TCB에 저장 해둬야 다음에 돌아올 때 어디까지 진행됐는지 기억할 수 있잖아요.

    이와같이 thread1, thread2 thread3는 각각 돌아가야할 위치(pc register가 가리켜야 할 위치)가 각기 다를거에요! 이를 "각 Thread가 독립적인 PC register를 갖고 있다" 라고 표현한 것 뿐입니다

     

  • CPU의 PC register는 각 TCB에 적힌 여러 PC register 중, CPU가 지금 처리해야 할 TCB의 PC register를 들고 있는 것인가요?

    => 네 맞습니다. 여러 TCB중에서 하나의 TCB가 "활성화"되면 CPU는 해당 TCB(지금 처리해야 할 TCP)를 참조하여 CPU가 세팅 됩니다.(해당 TCB의 PC register를 들고 있다고 생각하시면 돼요.)

 

  • PCB, TCB에는 각 프로세스, 쓰레드의 Context가 저장되는 곳인 것 같은데, 이 안에 PC register(다음 실행할 코드의 주소값) 또한 포함되어 있는 건가요?

    => 네 맞습니다.

     

  • "Multi Process, Single Thread에서, CPU가 가지고 있는 PC register는 다음으로 처리해야 할 Process의 코드 주소값(PC register)을 가지고 있는 것이고,
    Multi Process, Multi Thread에서는, CPU가 가지고 있는 PC register는 다음으로 처리해야 할 Process 내부의 Thread의 코드 주소값(PC register)을 가지고 있다"
    고 이해해도 될까요?

    => 네 맞습니다. 잘 이해하셨네요!!

더 궁금하신 점 있으시면 올려주세요 ;) 화이팅

0

강욱님의 프로필 이미지
강욱
질문자

감사합니다 ㅎㅎ

강욱님의 프로필 이미지
강욱

작성한 질문수

질문하기