프로세스와 스레드

hansol_Shin·2021년 5월 17일
1

운영체제

목록 보기
1/1

프로세스

1. 프로세스와 프로그램

  • 프로그램 : 아직 실행되지 않은 정적인 상태의 코드 덩어리
  • 프로세스 : 프로그램이 메모리에 올라가 실행중인 동적인 상태
  • 위와같이 프로그램과 프로세스를 이해하고 다음으로 넘어가자.

프로세스와 스레드

1. 프로세스

  • 프로세스는 운영체제로 부터 자원을 할당받는 작업의 단위로 Code/Data/Stack/Heap의 독립된 영역을 할당받는다.

    (이미지 출처 : Here)
  • 위 그림을 보면 독립된 영역이 더욱 확실하게 이해될 것이다.
  • 따라서 서로다른 프로세스는 일반적으로 서로에게 영향을 더 미치지 못하게 된다.
  • 시간이 흐르면서 프로그램이 더 복잡해지고 프로그램이 여러개의 프로세스로 동작되게 만들고 싶어졌다.
  • 하지만, 서로다른 프로세스는 서로의 데이터를 공유하는것이 운영체제 입장에서 보안적 문제가 있기에 이를 막아놓았다.
  • 때문에 프로세스보다 더 작은 단위의 스레드가 등장한다.

2. 스레드

  • 스레드는 CPU입장에서 작업의 단위이다.
  • 하나의 프로세스 안에서 스레드는 Code/Data/Heap을 다른 스레드와 공유한다.
  • 다른 스레드와 공유가 프로세스와 중요한 차이점이다.
    (이미지 출처 : Here)
  • 하나의 프로세스 안에는 1개 이상의 스레드가 있다.
  • 스레드는 프로세스 코드 안에 정의된 실행 절차에 맞게 수행되는 경로이다.
  • 스레드로 이전에 말한 하나의 프로그램 안에서 여러 프로세스 동작 불가 문제를 해결할 수 있게된다.
  • 공유되는 자원을 통해 여러 스레드로 프로그램을 동작 할 수 있게 되었기 때문이다!

3. 프로세스와 스레드

  • 프로세스와 스레드를 살펴보았다. 또한, 왜 프로세스와 스레드를 나눠놓았는지 간단하게 알아보았다.
  • 프로세스와 스레드의 공유자원차이로 인해 차이가 발생하는데
  • 프로세스는 하나의 프로세스가 오류가 나더라도 다른 프로세스에 영향을 주지 못한다.
  • 프로세스의 자원은 독립되어있기 때문이다.
  • 스레드는 하나의 스레드가 오류가 발생한다면 같은 프로세스 내의 다른 스레드에도 영향을 미친다.
  • 같은 프로세스 내의 스레드는 자원을 공유하기 때문이다.

+ alpha

  • 프로세스도 사실 자원의 공유가 가능하다. 다만, 이 과정은 번거로운 작업을 수행한다. 반면, 스레드는 자원의 공유 측면에서 프로세스보다 자원의 공유에 특화되어있다. 따라서 멀티테스킹보다 멀티스레드가 자원을 아낄 수 있게 된다.

  • 하지만, 멀티스레드는 운영체제 입장에서 하나의 작업단위 이므로 스케줄링을 제공하지 않는다.
    따라서, 개발자가 직접 동기화를 수행해줘야 한다.

profile
늘 완벽하고싶다.

0개의 댓글