-
[OS] MultithreadCS/Operating System 2021. 9. 20. 19:02
이 포스팅은 세미나를 위해 https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/OS를 참고하여 작성하였습니다.
멀티스레딩 (Multithreading)
하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것
멀티스레딩의 장점
- 자원 공유 (Resource sharing)
- 멀티프로세스로 구현하는 것에 비해 멀티스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어든다.
→ 스레드는 프로세스의 코드, 데이터, 힙 영역을 공유하기 때문 - 프로세스 간의 통신 (IPC)에 비해 스레드 간의 통신이 훨씬 간단하다.
→ 데이터, 힙 영역을 이용하여 데이터를 통신할 수 있기 때문
- 멀티프로세스로 구현하는 것에 비해 멀티스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어든다.
- 가벼움 (Light weight)
- 프로세스의 생성, 제거에 비해 스레드 생성, 제거가 더 빠르다.
- 프로세스의 contetxt switching에 비해 스레드의 context switching이 더 빠르다.
→ 스레드의 context switching은 캐시 메모리를 초기화할 필요가 없기 때문
https://hoony-gunputer.tistory.com/entry/Thread-Context-Switching-vs-Process-Context-Switching
→ 따라서 시스템의 throughput이 향상되고 자원 소모가 줄어들며 프로그램의 응답 시간이 단축된다.
멀티스레딩의 문제점
- 멀티스레딩 기반으로 프로그래밍할 경우 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용 중인 변수나 자료구조에 접근하여 잘못된 값을 읽어오거나 수정할 수 있다.
- 이러한 문제를 해결하기 위해 동기화 작업이 필요함
→ 동기화를 통해 작업 처리 순서를 컨트롤하고 공유 자원에 대한 접근을 제한하는 것 - 하지만 동기화 작업으로 인해 병목현상 (Deadlock)이 발생하여 성능이 저하될 가능성이 있음.
→ 과도한 락으로 인한 병목현상을 줄여야 함.
멀티프로세스 vs 멀티스레드
- 멀티프로세스 장점: 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 정상적으로 수행할 수 있음
- 멀티프로세스 단점: 멀티스레드보다 많은 메모리 공간을 차지하고 context switching 느림
- 멀티스레드 장점: 멀티프로세스보다 적은 메모리 공간을 차지하고 context switching이 빠름
- 멀티스레드 단점: 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수 있음, 동기화 문제
→ 시스템의 특징에 따라 적합한 동작 방식을 선택해야 함
'CS > Operating System' 카테고리의 다른 글
[OS] Synchronization과 Critical-Section Problem (0) 2021.12.01 [OS] Synchronization과 Asynchronization (0) 2021.09.20 [OS] CPU Scheduler (0) 2021.09.20 [OS] Scheduler (0) 2021.09.20 [OS] Process와 Thread (0) 2021.09.20 - 자원 공유 (Resource sharing)