Process(프로세스)란?

  • 실행중인 하나의 프로그램이며 OS로 부터 자원을 할당 받는 작업의 단위, 내부에 하나 이상의 쓰레드가 존재

 

Program(프로그램) vs Process(프로세스)

프로그램은 디스크에 저장되어 있는 실행 파일 (정적)

프로세스는 실행 중인 프로그램으로 프로그램 자체의 파일 뿐만 아니라 추가적인 메모리 공간 할당 받음 (동적)

 

프로그램 수행 시 디스크에 있던 프로그램이 메모리 공간으로 이동되며 추가적인 메모리 공간을 할당 받음

 

 

 

 

프로세스 메모리 영역

  • text : 실제 명령어들이 적재되는 메모리 영역 ( = code 영역)
  • data : 전역 변수와 static 변수 영역
  • heap : 동적 메모리 할당 영역
  • stack : 지역 변수 및 메서드 파라미터 할당 영역

 

 

 

 

 

멀티 프로세스 (Multi Process)

  • 두개 이상 다수의 프로세스가 협력적으로 하나 이상의 작업을 동시에 처리하는 것(병렬처리)
  • 각 프로세스 간의 메모리 구분이 필요하거나 독립적인 주소공간을 가져야 할 경우 사용

 

스레드(Thread)란?

  • 프로세스가 할당 받은 자원을 이용하는 실행의 단위
  • 각각의 스레드는 독립적인 스택영역과 pc레지스터를 가진다
    • 스택영역 : 스택 영역에는 함수 호출 시 돌아갈 주소, 함수 파라미터 값, 지역 변수 등 프로그램 수행을 위한 데이터를 임시로 저장해 두는 공간, 따라서 스택영역을 독립적으로 가진다는 것은 독립적인 함수 호출이 가능하여 별도의 실행 흐름이 추가된다
    • pc 레지스터 : pc레지스터는 스레드가 명령어의 어디까지를 수행하였는지를 저장한다. 스레드는 cpu를 할당 받았다가 스케줄러에 의해 다시 선점당하기 때문에 어디까지 수행되었는지를 저장할 레지스터를 필요로 하게 된다

 

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

 

  • 멀티 프로세스 : 두개 이상의 프로세스가 하나 이상의 작업을 협력적으로 동시에 처리하는 것
  • 멀티 스레드 : 하나의 프로세스에서 여러 스레드로 자원을 공유하며 다수의 작업을 처리하는 것

 

멀티 프로세스

장점 : 프로세스 중 하나에 문제가 발생 하여도 독립된 구조로 다른 프로세스에 영향을 주지 않아 안정성이 높다.

단점 : 프로세스 생성 및 프로세스간의 작업 전환(context switch) 시 오버헤드가 많이 발생하여 성능이 저하된다.

 

멀티 스레드

장점 : 스레드간 공유자원을 이용하기 때문에 통신에 대한 오버헤드가 적고 효율적이다. 프로세스를 생성하는 비용을 줄일 수 있어 비용적으로 효율적이다.

단점 : 멀티 스레드의 경우 하나의 프로세스에서 작업을 수행하기 때문에 하나의 스레드에서 문제발생시 프로세스 내의 모든 스레드가 영향을 받을 수 있으며 공유 메모리를 사용하기 때문에 동기화 작업을 고려하여야 한다.

 

 

 

 

 

 

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

Race Condition, Semaphore  (0) 2021.09.07

+ Recent posts