241121 CS 스터디

apple-mint·2024년 11월 21일

CS study

목록 보기
10/15

프로세스와 스레드의 차이

1) 프로세스

  • 운영체제로부터 자원을 할당받은 작업의 단위
  • 실행 중인 프로그램을 지칭하며, 컴퓨터에서 연속적으로 실행되고 있는 프로그램을 의미함
  • 종종 스케줄링의 대상이 되는 작업(task) 용어와 거의 유사한 의미로 쓰임
  • 아래와 같이 작업 관리자 창을 열어보면 현재 실행 중인 프로그램이 프로세스에 뜨는 것을 확인할 수 있음
    프로세스 이미지
  • 하나의 프로세스만을 사용해서 프로그램 실행 시 해당 실행이 다 끝날 때까지 대기해야 함
  • 멀티프로세스로 하나의 프로그램에 동시에 여러 프로세스를 실행할 수 있으나 CPU, 메모리 자원을 중복해서 사용하는 문제가 있음

2) 스레드

  • 위와 같은 프로세스의 문제를 해결하기 위해 스레드 등장
  • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
  • 일반적으로 하나의 프로그램은 하나의 스레드를 가지고 있으나 둘 이상의 스레드를 동시에 실행할 수도 있음
  • 아래의 이미지처럼 하나의 프로그램을 실행하는 프로세스 안에 둘 이상의 스레드가 진행되는 것을 멀티스레드라고 함
    스레드 이미지
  • 이러한 스레드의 수가 많을수록 속도가 빨라지므로 성능이 향상됨

3) 멀티프로세스와 멀티스레드

멀티프로세스와 멀티스레드

(1) 멀티프로세스

  • 하나의 부모 프로세스가 여러 개의 자식 프로세스를 생성함으로써 다중 프로세스를 구성하는 구조
  • 자원을 공유하지 않고 독립적인 메모리 공간을 가짐
    • 안전성 확보
    • 서버 클러스터와 같은 시스템 규모 확장 가능
    • 자원을 공유하지 않으므로 메모리 사용량이 증가함
  • 문맥 교환 과정에서 CPU 캐시에 있는 모든 내용을 초기화하고 새로운 프로세스 정보를 CPU 캐시에 적재해야 하므로 성능 저하 및 높은 비용이 발생할 수 있음

(2) 멀티스레드

  • 하나의 프로세스 안에 여러 개의 스레드가 있는 구조

  • 하나의 프로그램에서 두가지 이상의 동작을 동시에 처리하도록 하는 행위가 가능함

  • 프로세스 내에서 생성되므로 실행 환경 설정이 간단하고 용량이 가벼움

  • 하나의 프로세스 내에서 동작하므로 자원 공유가 가능
    • 효율적인 자원 활용
    • 멀티프로세스에 비해 안정성이 떨어짐
    • 동기화로 인한 성능 저하 발생 가능성이 있음
  • 문맥 교환 과정에서 스레드 간 공유 자원을 제외한 스레드 정보만을 교체하면 되므로 비교적 성능 저하 우려가 낮고 상대적으로 적은 비용이 발생함

참고

0개의 댓글