본문 바로가기

Computer Science

운영체제 - 스레드

 

 

 

 

 

스레드란?

   - Light Weight Process 라고도 합니다.

   - 모든 영역을 독립적으로 갖는 프로세스와는 달리, 스택영역을제외한 부분을 공유합니다.

   - 하나의 프로세스에 여러 스레드를 사용 가능하며, 프로세스의 데이터를 스레드가 공유합니다.

 

 

 

 

멀티 프로세싱과 멀티 스레딩

   - 두 작업 모두 CPU의 성능 개선을 위해 사용합니다.

 

   - 멀티 프로세싱

      1) 여러 개의 CPU를 병렬 처리하여 여러 프로세스를 처리하는 방법입니다.

      2) 멀티 프로세싱은 처음 구조를 잡을때 만들어야 합니다.

 

   - 멀티 스레딩

      1) 하나의 CPU 내에서 여러가지 작업을 동시에 처리하는 방법입니다.

      2) 멀티 스레딩은 프로그램의 일부 코드만 수정 하여 구현 가능합니다.

 

 

 

 

스레드의 장점

   1. 사용자에 대한 응답성 향상

      - 사용자 커뮤니케이션 부분을 별도로 분리하여 사용자 접근성을 높입니다.

      - 응답을 접수하는 부분과 처리부분을 나눠 빠르게 응답받을 수 있습니다. 

 

   2. 자원 공유 효율 증가

      - IPC 기법 등 별도의 작업이 필요가 없습니다.

      - 이는 별도의 작업을 위한 공간할당이나 작업을 하지 않아도 되므로 자원 효율이 증가합니다. 

 

 

 

 

스레드의 단점

   1. 하나의 스레드가 문제가 있을경우, 전체 프로세스가 영향을 받습니다.

      - 하나의 프로세스 내에 다수의 스레드를 포함하고 있기 때문에, 다른 스레드에 영향을 받습니다.

 

   2. 다수의 스레드 생성시 성능저하

      - 다수의 스레드 생성시 문맥교환( context switching )이 많이 일어나 성능이 저하됩니다.

 

   3. 동기화 이슈로 인해 비정상적인 동작을 할 수 있습니다.

      - 데이터를 공유하기 때문에, 동시에 접근할 수도 있습니다.

      - 하나의 스레드에서 작업을 하던 중 다른 스레드의 영향으로 인해 비정상적인 값이 나올 수 있습니다.

      - 이를 막기 위해 동기화 코드를 추가해서 오류를 방지해야 합니다.