프로세스와 스레드

KwonKusang·2021년 8월 2일
0

프로세스와 스레드

  • 프로세스 - 운영체제로부터 자원을 할당받은 작업의 단위.
  • 스레드 - 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위.

프로그램 > 프로세스 > 스레드

  1. 프로그램은 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 상태.
  2. 프로세스는 프로그램을 실행해서 메모리에 올린 상태.
  3. 스레드는 프로세스 내에서 실행되는 여러 흐름의 단위

그림을 보면 이해가 더 쉽다.

  • 여러 개의 프로그램을 동시에 실행하면서 각각의 프로세스를 갖는다.

  • 프로세스는 code 영역, data 영역, heap 영역, stack 영역을 각각 할당한다.

  • 프로세스 내부에 스레드가 할당된다.

  • 하나의 프로세스 내의 code 영역, data 영역, heap 영역을 스레드들이 공유하며 사용할 수 있다.

  • 하나의 스레드는 레지스터와 stack영역을 개별적으로 할당하여 사용한다.

  • 즉, 프로세스의 작업을 내부의 여러 개의 스레드가 나눠서 처리한다.

프로세스 상태

  • 프로세스는 다음과 같은 5가지 상태가 존재한다.
  • ready큐에서 대기 중인 프로세스를 dispatch하여 실행 상태로 전환한다.
  • 실행 중에 I/O 작업이 필요한 프로세스라면 대기(Waiting) 상태로 전환된다.
  • 이후 I/O 작업이 종료되면 CPU에게 종료 사실을 알려 준비(Ready) 상태로 전환된다.

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

멀티 프로세스 (다중 프로그래밍)

  • 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리한다.

멀티 스레드

  • 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것이다.

멀티 프로세스보다 멀티 스레드를 보통 사용한다. 이로써 얻는 장점이 무엇일까?

  1. 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.

    System Call - 프로세스를 생성하여 자원을 할당한다.

  2. 처리 비용 감소 및 응답 시간 단축

  • 스레드는 Stack 영역을 제외한 모든 메모리를 공유하기 때문에 비용이 적다.
  • 스레드 간의 전환 속도가 프로세스 간의 전환 속도보다 빠르다.

But, 멀티 스레드 환경에선 공유 자원이 존재하기 때문에 동기화 문제가 발생할 수 있다.

멀티 프로세스 스케줄링

  1. 선점형 스케줄링
    RR(Round Robin)
    SRTN(Shortest-Remaining Time Next)
    MLQ(Multi-level Queue)
    MFQ(Multi-level Feedback Queue)

  2. 비선점형 스케줄링
    FIFO(First In First Out)
    SJF(Shortest Job First)
    HRN(Highest Response-ratio Next)

우선순위 스케줄링

  • 선점, 비선점 둘 다 가능하다.

  • 우선순위 스케줄링은 각 프로세스의 우선순위를 선정 후 그에 맞는 위치의 ready큐에 삽입되는 스케줄링 방식이다.

  • 우선순위가 같은 경우 FIFO 방식으로 삽입된다.

    우선순위 결정 기준

    내부적 우선순위 결정

    • 제한 시간, 기억장소 요청량, 사용 파일 수, 평균 프로세서 버스트에 대한 평균 입출력 버스트의 비율
    • CPU Burst - 프로그램의 수행중에 연속적으로 CPU를 사용하는 단절된 구간
    • I/O Burst- 프로그램의 수행중에 I/O작업이 끝날때까지 block되는 구간

    외부적 우선순위 결정

    • 프로세스의 중요성, 사용료를 많이 낸 사용자, 작업을 지원하는 부서, 정책적 요인
  • CPU Burst가 짧은 프로세스를 우선순위를 높게 두기도 한다.

기아(starvation) 현상

  • 어떤한 우선 순위로 작업을 처리할 때 우선순위가 낮은 작업은 영원히 처리되지 않는 문제이다.
  • 예를 들어, 우선순위가 3인 작업이 있는데, 계속해서 우선순위가 4이상인 작업이 새롭게 들어온다면, 우선순위가 3인 작업은 오랫동안 기다렸는데도 불구하고 영영 처리되지 않는다.
  • 이 현상을 해결하기 위해 Aging기법을 적용했다.

Aging 기법

  • 대기시간에 비례하여 우선순위를 부여함으로써 기아 현상을 방지한다.
  1. 대상에 나이를 부여한다.
  2. 자원을 할당 받지 못하고 기다리는 동안 나이는 점점 증가한다.
  3. 우선순위에 나이를 일정비율 반영한다.
  4. 그럼 기존의 우선순위가 낮았던 대상도 나이가 많아짐에 따라 결국 자원을 할당 받는다.

멀티 스레드 스케줄링

스레드 스케줄링 방식에는 두 가지 방식이 있다.

  1. 우선순위(priority)
    • 우선순위가 높은 스레드가 실행 상태를 더 많이 가지도록 한다.
  1. 순환 할당(Round-Robin)
    • 시간 할당량(Time Slice)을 정해서 하나의 스레드를 정해진 시간만큼 실행하고 다시 다른 스레드를 실행하는 방식

자바스크립트의 타이머

  • 자바 스크립트 엔진은 싱글 스레드로 동작한다. 하나의 콜스택과 하나의 스레드로 처리한다.

    https://mygumi.tistory.com/316

profile
안녕하세요! 백엔드 개발자 권구상입니다.

0개의 댓글