프로세스와 스레드

[운영체제 - 프로세스와 스레드]

프로세스

  • 프로그램의 인스턴스로 운영 체제에서 가장 기본적인 실행 단위이다.
  • 각 프로세스는 메모리를 차지하고, 일정 상태 주기를 가진다.
  • 보통 지역 변수나 함수 호출로 인한 것은 스택 영역에 메모리가 할당되고, 동적 메모리 할당은 힙 영역에서 메모리가 할당된다.

프로세스 제어 블록(PCB)

  • 특정 프로세스에 대한 중요한 정보를 저장

  • 운영체제가 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB를 생성한다.

  • 프로세스는 CPU를 할당받아 작업하다가도 프로세스 전환이 발생하면 진행중인 상황을 PCB에 모두 저장한 후 CPU를 반납한다. 이후 다시 CPU를 할당받게 되면 PCB에 저장되어 있던 내용을 불러와 이전에 종료됬던 시점부터 다시 작업을 수행한다.

  • PCB에 저장되는 정보

    PID(식별자)

    프로세스 상태

    PC(Program counter) : 프로세스가 다음에 실행할 명령어의 주소

    스케쥴링 정보 : 프로세스의 우선순위, 스케쥴 큐에 대한 포인터

    CPU 레지스터

    메모리 관리 정보 : 페이지 테이블 or 세그먼트 테이블 등의 정보

    입출력 상태 정보 : 프로세스에 할당된 입출력 장치들과 열린 파일 목록

    어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등

스레드(Thread)

  • 한 프로세스 내에서 동작되는 여러 실행 흐름으로 같은 프로세스 내의 다른 스레드와 주소 공간이나 자원을 공유한다.
  • 스레드는 스레드 ID, PC, 레지스터 집합, 스택으로 구성

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

멀티 스레드

  • 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다.(캐시 메모리를 비울 필요가 없음)
  • 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드에서 사용중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있다.
  • 그렇기 때문에 동기화를 통해 작업 처리 순서를 컨트롤 하고 공유 자원에 대한 접근을 컨트롤한다.(Lock)
  • 하지만 이로인해 병목현상이 발생하여 성능이 저하될 수 있기 때문에 이를 줄여야 한다.

멀티 프로세스

  • 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 끼치지 않고 정상적으로 수행된다.
  • 프로세스 간 공유하는 자원이 없기 때문에 동일한 자원과 동시에 접근하는 일이 없다.
  • 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지

© 2019. All rights reserved.

Powered by Hydejack v8.5.2