본문 바로가기
CS/Operating System

[OS] 스레드

by 안녕나는현서 2021. 11. 2.
728x90

프로세스와 스레드

프로세스 스레드
운영체제 입장에서 작업 단위 CPU 입장에서 작업 단위
서로 독립적
프로세스A가 비정상 종료되어도 프로세스B는 정상 작동
서로 강하게 연결
프로세스가 종료되면 프로세스 내의 스레드도 강제종료
데이터를 주고 받을 때, 프로세스 간 통신(IPC) 이용 변수, 파일을 공유하고 전역 변수나 함수 호출을 통해 통신

 

 

스레드

  • CPU 스케줄러가 CPU에 전달하는 일 하나
  • 하나의 프로세스에는 여러 개의 스래드가 존재할 수 있음

 

- 관련 용어

  • 멀티 스레드 : 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법
  • 멀티 태스킹 : 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법 (시분할 시스템)
  • 멀티 프로세싱 : CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경
  • CPU 멀티스레드 : 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법

 

 

멀티 스레드

  • fork() 시스템 호출로 프로세스를 복사하면 코드/데이터 영역 일부가 메모리에 중복하여 존재 → 낭비
  • 위와 같은 멀티 태스킹의 낭비 요소를 제거하기 위해 멀티 스레드 사용

 

- 멀티 스레드 장점

  • 응답성 향상 : 한 스레드가 입출력으로 인해 작업이 진행되지 않더라도 다른 스레드가 작업을 계속하여 사용자의 작업 요구에 빨리 응답할 수 있음
  • 자원 공유 : 한 프로세스 내에서 독립적인 스레드를 생성하면 프로세스의 자원을 모든 스레드가 공유하여 작업을 원활히 수행 가능
  • 효율성 향상 : 불필요한 자원의 중복을 막음으로써 시스템 효율 향상
  • 다중 CPU 지원 : 2개 이상의 CPU를 가진 컴퓨터에서 멀티 스레드를 사용하면, 다중 CPU 멀티스레드를 동시에 처리하여 CPU 사용량이 증가하고 프로세스 처리 시간이 단축됨

 

- 멀티 스레드 단점

  • 모든 스레드가 자원을 공유하기 때문에 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미침

 

- 멀티 스레드 모델

  • 사용자 스레드 : 사용자 레벨에서 관련 라이브러리를 사용하여 구현, 라이브러리는 커널이 지원하는 스케줄링, 동기화 같은 기능 대신 구현해줌 (1 to N)
  • 커널 스레드 : 커널이 직접 생성하고 관리하는 스레드 (1 to 1)
  • 멀티레벨 스레드 : 사용자 스레드와 커널 스레드를 혼합한 방식 (M to N)
728x90

'CS > Operating System' 카테고리의 다른 글

[OS] 프로세스 간 통신  (0) 2021.12.05
[OS]CPU 스케줄링 알고리즘  (0) 2021.12.02
[OS] CPU 스케줄링  (0) 2021.12.02
[OS] 프로세스  (0) 2021.11.02
[OS] 운영체제 개요  (0) 2021.11.02

댓글