작성
·
217
2
안녕하세요 교수님 양질의 강의 잘 듣고 있습니다. 감사합니다!
멀티스레딩에 대해 궁금한 점이 있어 질문남깁니다.
1. 멀티프로세싱 대비 멀티스레딩의 장점 중 하나가, context switching의 비용이 적다는 것이라고 알고 있습니다. 그런데 context switching이란 명령어를 실행하기 위한 pc, stack pointer 등을 바꾸는 과정으로 알고 있는데, 스레드의 경우에도 pc, stack pointer는 각각 다르지 않습니까?? 그럼 어차피 스레드도 pc, stack pointer를 바꿀텐데 왜 context switching의 비용이 싼 건지 궁금합니다!
2. 서버는 멀티프로세스를 쓰는게 좋은지 멀티스레딩을 쓰는게 좋은지도 궁금합니다!
다시 한번 좋은 강의 감사드립니다.
답변 1
1
안녕하세요?
1.
pc, stack pointer 등의 TCB 블록은 다른 정보들을 담고 있는 PCB보다 훨씬 크기가 작지요?
그래서 context switching 비용이 훨씬 적게 들어간다고 이해하시면 수월하실 것 같습니다.
또한, Code 블럭을 공유하기 때문에, 같은 코드 블럭이 여러 개 중복될 필요도 없지요.
2.
서버냐, 클라이언트냐와 무관하게, 어떤 어플리케이션이냐에 따라 다릅니다.
대표적으로 Chrome 브라우저는 예전에 IE가 탭별로 쓰레드를 생성하는 것을
탭별로 Process를 생성하는 것으로 바꿔서 엄청난 속도 향상을 이끌어 냈습니다.
개념적으로는 각 탭별로 코드를 공유하는 것이 유리할 것 같은데, 역발상이 통한 것이죠.
서버 문제도 마찬가지로, 구현하고자 하는 서비스의 성격별로 멀티프로세스냐, 멀티쓰레드냐를 결정해야 합니다.
어떤 하드웨어 서버를 이용하느냐, 어떤 DBMS를 이용하느냐, 혹은,
어떤 로드 밸런서를 이용하느냐, 어떤 클라우드 서비스를 이용하느냐, 등에 따라서
천차만별이기 때문에, 여기에는 정답이 있다기 보다, 수많은 경험과 노하우가 필요한 것이죠.