CS 지식/운영체제

프로세스와 스레드

Zin0_0 2020. 8. 17. 11:33
반응형

프로세스와 스레드

  • 프로세스

    • 사전적 의미
      • 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
      • OS에서 메모리 영역을 할당받아 실행되는 독립적인 프로그램의 인스턴스
      • OS로부터 시스템 자원을 할당받는 작업의 단위
      • 동적 개념으로는 실행된 프로그램을 의미
    • 할당받는 시스템 자원
      • CPU 시간, 주소 공간, Code, Data, Stack, Heap 구조로 되어있는 독립된 메모리 영역
    • 프로세스는 각각 독립된 메모리 영역을 할당 받는다.
    • 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다.
    • 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 직접 접근 불가.
    • 다른 프로세스의 자원에 접근하려면 프로세스 간 통신(IPC)을 사용해야함
      • ex) 파이프, 파일, 소켓 등
    • 메모리 구조
      • 스택
        • 함수나 프로시저를 호출하고 리턴할 때 복귀 주소나 지역 변수와 같은 일시적 데이터를 기억
        • 프로그램 실행 중에 동적으로 메모리를 할당할 수 있는 자유로운 영역
      • 데이터 (BSS, GVAR)
        • 초기화한 데이터 구조에 따라서 읽고 쓰기가 가능한 영역
      • 텍스트
        • 프로세서가 실행할 바이너리 코드를 저장해 놓은 영역
  • 스레드

    • 사전적 의미
      • 프로세스 내에서 실행되는 여러 흐름의 단위
      • 프로세스의 특정 수행 경로
      • 프로세스가 할당받은 자원을 이용하는 실행 단위
    • 스레드는 프로세스 내에서 각각 Stack만 따로 할당받아 실행되는 독립적인 단위
    • 멀티쓰레드는 Code, Data, Heap 영역 공유 (Stack은 각각 할당받음)
    • 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들(힙 공간 등)을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.
    • 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유한다.
    • 각각의 스레드는 별도의 레지스터와 스택을 가지고 있지만, 힙 메모리는 서로 읽고 씀
    • 한 스레드가 프로세스 자원을 변경 ~> 다른 이웃 스레드도 그 변경 결과를 즉시 볼 수 있다.
  • 스레드 풀

    • 스레드를 매번 만들지 않고 재사용하는 것이 효율적 ( 재사용 )
    • 동작 방식
      • task queue에 task가 추가 됨
      • thread pool이 task를 가져와서 thread에 작업 할당
      • 각 thread는 작업 진행
      • 완료된 thread는 완료 상태로 존재
  • 프로세스 스케쥴링

    • 프로세스 상태
      • 생성 -> 준비 -> 실행 <-> 대기 -> 종료 단계
        • new -> ready -> running -> waiting -> terminated로 각각 표시됨
      • 프로세스를 생성해서 계속해서 실행하지 않고, 다른 프로세스를 실행하는 동안 대기했다가 다시 실행하는 순서를 반복
    • 알고리즘 선택 기준
      • 프로세서 사용률
        • 항상 실행 상태 유지 === 유휴 상태가 되지 않도록(CPU가 쉬는 시간)
          ~> 입출력 중심 작업보단 프로세서 중심 작업 실행
      • 처리율
        • 단위 시간당 완료하는 작업 수가 많도록 짧은 작업 우선 처리 or 인터럽트 없도록 작업
      • 반환시간
        • 작업이 메모리에 들어가기까지 걸린 시간, Ready Queue에 머무는 시간, 실행 시간, I/O 시간 등 작업을 완료하는데 걸리는 시간을 최소화(끝난시간 - 도착시간)
      • 대기시간
        • Ready Queue에서 기다리는 시간을 최소화(시작시간 - 도착시간)
      • 반응시간
        • 작업을 요청한 시간부터 반응을 시작하는 시간까지의 간격.
        • 대화형 시스템에서 중요함.
          • 다중 작업용 운영 체제의 경우 여러 프로그램들을 같이 수행시켜도
            사용자 입장에서는 각 프로그램에 대한 키보드 입력의 결과를
            곧바로 화면에 보여 주기 때문에 이러한 시스템을 대화형 시스템이라 함
반응형