작성
·
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