개발조아

프로세스와 쓰레드 본문

CS/OS

프로세스와 쓰레드

개발조아 2021. 10. 18. 00:08
728x90
  • 프로세스 : 운영체제로 부터 자원을 할당받아 메모리상에서 실행중인 작업
    • 프로세스가 메모리에 올라갈때 운영체제로 부터 독립적인 메모리 영역을 할당 받는다.
    • 서로 다른 프로세스들의 메모리에 접근은 불가능
    • 이미지 출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

      • Code : 코드 자체를 구성하는 영역(프로그램 명령)
      • Data : 전역변수, 정적변수, 배열 등 초기화가 된 변수들 저장
      • Heap : 동적 할당 시 사용
      • Stack : 지역변수, 매개변수, 리턴값, 돌아올 주소 등 임시 저장 공간
  • 쓰레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
    • 프로세스 내에 각각의 Stack만 할당받고 나머지는 프로세스의 메모리를 공유한다. 
    • 이미지 출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
       
    •  
    • 메모리를 공유하기 때문에 동기화 문제가 발생한다.
    • 기본적으로 프로세스 하나당 하나의 쓰레드를 할당 받는다.
      • 쓰레드에 의해서 작업이 수행되기 때문에 작업을 수행할 최소 한 녀석은 있어야한다.

 

  • 멀티 프로세스와 멀티 쓰레드
    • 멀티 프로세스
      • 하나의 프로그램을 여러개의 프로세스가 나눠서 처리하는 것
      • 장점
        • 프로세스 별로 독립적인 메모리 영역을 할당 받기 때문에 하나가 문제가 생기더라도 다른 것에 영향을 미치지 않음
      • 단점
        • ContextSwitching과정에서 캐시 메모리 초기화등 무거운 작업에 많은 오버헤드가 발생함
          • ContextSwitching
            • CPU는 여러 프로세스를 돌아가면서 처리한다. 이때 현재 처리중인 프로세스의 상태(Context)를 저장하고 다음 순서의 프로세스의 상태를 복원한다. 이과정을 ContextSwitching 이라고 한다.
        • 통신이 까다롭고 어려움
    • 멀티 쓰레드
      • 하나의 프로세스가 여러개의 쓰레드를 가지고 동시에 작업을 처리하는 것
      • 장점
        • 쓰레드는 공유하는 메모리가 있기 때문에 ContextSwitching 과정에서 자원을 아낀다.
        • 공유하고 있는 메모리 영역이 있기 때문에 통신이 쉽고, 응답 시간이 빠르다.
      • 단점
        • 하나의 스레드가 죽게 되면 다른 스레도 모두 죽게 된다.
        • 동기화 문제가 필연적으로 발생한다.

'CS > OS' 카테고리의 다른 글

메모리 관리  (0) 2021.10.18
프로세스 스케줄링  (0) 2021.10.18
교착상태(DeadLock)  (0) 2021.10.18
프로세스 동기화  (0) 2021.10.18
운영체제란  (0) 2021.10.17
Comments