Knowledge/이론

스레드 (Thread)

똑똑한망치 2024. 1. 15. 21:48
728x90
반응형

1. 스레드 (Thread)


  • 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 단위, 즉, 프로세스 내에서 실제로 작업을 수행하는 주체
  • 스레드는 하나의 프로세스에 여러 개의 스레드 생성이 가능하고, 동시에 실행 가능하며 하나의 프로세스 안에 있기 때문에 프로세스의 공유 데이터를 모두 접근 가능하다. 하지만, 공유한 데이터를 읽고 쓰는 과정에서 동기화 이슈(병목현상, 데드락 등)가 발생하며, 비정상 동작이 일어날 수 있다.
  • 스레드 사이 작업량이 적어 Context Switching 이 빠르다.
  • 하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받는다.

 

 

 

 

 

2. 멀티 프로세스


  • 프로세스 간에는 각 프로세스의 데이터에 접근하지 못하고 통신하기 위해 IPC 기술이 필요하다.
  • 멀티 프로세스는 두 개 이상의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)를 동시에 처리하는 것이다. (병렬처리)
  • 멀티 스레드와 멀티 프로세스의 가장 큰 차이점은 "메모리를 공유하는가?" 이다.

 

 

 

 

 

 

 

 

 

 

3. 언제 어떤 것을 사용해야 할까


  • 스레드 간 공유 데이터를 읽기만 하는 경우에는 동기화 이슈를 막기 위해 동기화 기술을 사용하지 않아도 된다. 따라서 데이터 통신을 위한 추가적인 기능 구현이 필요 없으므로, 멀티 스레드를 사용 하는 것이 좋다.
  • 데이터를 읽고 쓰는 작업이 빈번하다면, 뮤텍스, 세마포어 등 동기화 기술을 많이 사용해야 하고, 데드락과 같은 예기치 않은 비정상동작이 발생할 수 있으므로 멀티 프로세스를 사용하는 것이 좋다.
  • 독립된 구조로 안정성이 높다.
  • 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않는다.
반응형

'Knowledge > 이론' 카테고리의 다른 글

객체지향 설계 5대 원칙 (SOLID 원칙)  (0) 2024.01.17
프로세스와 스레드의 차이  (0) 2024.01.16
프로세스 간 통신 (IPC)  (0) 2024.01.16
프로세스 구조  (0) 2024.01.16
컨택스트 스위칭 (Context Switching)  (0) 2024.01.15