프로세스(Process)

  • 실행 중인 프로그램
  • 커널에 등록된 실행 단위
  • 각종 자원들을 요청하고 할당받을 수 있는 개체
  • 프로세스 관리 블록(PCB)를 할당받은 개체
  • 능동적인 개체(active entity)
    • 실행 중에 각종 자원을 요구, 할당, 반납하며 진행
  • 전통적인 프로세스는 단일 스레드 프로세스
  • 각 프로세스는 독자적인 자원을 보유


스레드

  • Light Weight Process(LWP)
    • 프로세서(CPU) 활용의 기본 단위
  • 자원을 제어하는 역할
  • 제어는 여러 개가 있을 수 있다. (멀티 스레드)
  • 구성 요소
    • Thread ID
    • Register set(PC, SP 등)
    • Stack
  • 프로세스 내 각 스레드는 프로세스가 할당 받은 자원(코드, 전역 데이터, 힙)을 공유
  • 프로세스 내 각 스레드는 독자적인 지역 데이터, 스택, 제어 정보(SP, PC, 상태 등)를 보유


멀티 프로세스

  • 하나의 응용 프로그램을 여러 개의 프로세스로 구성해 각 프로세스가 하나의 작업을 처리하도록 한 것
  • 장점
    • 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스 이외 영향이 확산되지 않는다.
  • 단점
    • Context Switching의 오버헤드
      • 캐시 메모리 초기화 등 무거운 작업이 진행, 많은 시간 소모
      • 프로세스는 각각 독립된 메모리 영역을 할당받았기 때문에, Context Switching 발생 시 캐시에 있는 모든 데이터를 리셋하고 다시 캐시 정보를 불러와야 한다.
      • 프로세스 사이의 어렵고 복잡한 통신 기법(IPC)
        • 프로세스들 사이 변수 공유 불가


멀티 스레드

  • 하나의 응용 프로그램을 여러 개의 스레드로 구성해 각 스레드가 하나의 작업을 처리하도록 한 것
  • 장점
    • 사용자 응답성
      • 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
    • 자원 공유
      • 자원을 공유해서 효율성 증가
      • 커널의 개입을 피할 수 있음
        • 생성 및 관리의 부하가 적음, 유연한 관리 가능, 이식성이 높음
      • 동일 address space에서 스레드 여러 개
    • 경제성
      • 프로세스의 생성, context switch에 비해 효율적
    • 멀티 프로세서(multi-processor) 활용
      • 병렬처리를 통해 성능 향상
  • 단점
    • 디버깅이 까다롭다.
    • 단일 프로세스 시스템의 경우 효과를 기대하기 어렵다.
    • 자원 공유의 문제, 즉 동기화 문제가 발생한다.
    • 하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다. (사용자 수준 스레드)


사용자 수준 스레드(User Thread)

  • 사용자 영역의 스레드 라이브러리로 구현됨
    • 스레드의 생성, 스케줄링 등
  • 커널은 스레드의 존재를 모름
    • 커널의 관리(개입)을 받지 않음
      • 생성 및 관리의 부하가 적음, 유연한 관리 가능
      • 이식성(portability)이 높음
    • 커널은 프로세스 단위로 자원 할당
      • 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기 (single-threaded kernel의 경우)


커널 수준 스레드(Kernel Thread)

  • OS(Kernel)가 직접 관리
  • 커널 영역에서 스레드의 생성, 관리 수행
    • Context switching 등 부하(Overhead)가 큼
      • 단, 프로세스 간 Context switching보단 적음
  • 커널이 각 스레드를 개별적으로 관리
    • 프로세스 내 스레드들이 병행 수행 가능
      • 하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능


기타 용어


커널(Kernal)

  • OS(운영체제)의 핵심 부분(메모리 상주)
    • 가장 빈번하게 사용되는 기능들 담당
      • 시스템 관리(Processor, memory 등)


Context

  • 프로세스와 관련된 정보들의 집합
  • CPU register context => in CPU
  • Code & data, Stack, PCB => in memory


Context Switching

  • 실행 중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일
    • 커널의 개입으로 이루어짐
  • OS의 성능에 큰 영향을 줌


Process Control Block(PCB)

  • 각 프로세스들에 대한 정보를 관리
    • 상태가 전이되면, 진행하던 작업 내용을 정리하고 CPU를 반환하는데, 이때 진행하던 작업들을 모두 저장해야 한다. 이 역할
  • 커널 공간(kernal space) 내에 존재


참고링크

유튜브 강의

블로그

태그:

카테고리:

업데이트:

댓글남기기