Updated:

1 minute read

프로그램

  • 실행되고 있지 않은(메모리에 올라가 있지 않은) 정적인 상태의 명령어 집합체


프로세스

  • 운영체제로부터 자원을 할당 받아 실행 중인 동적인 상태의 프로그램
  • 운영체제 작업의 최소 단위
  • 최소 1개 이상의 스레드로 구성
  • 메모리 구조
    • 코드 영역
      • 기계어 형태의 명령어 코드가 저장
      • CPU가 명령어를 하나씩 가져와서 처리
    • 데이터 역역
      • 전역 변수와 정적 변수가 저장
      • 프로그램 시작 시 할당되어 종료 시 소멸
      • 컴파일 타임에 크기가 결정
    • 스택 영역
      • 함수 복귀 주소, 지역변수, 매개변수, 리턴 값 등이 임시로 저장
      • 함수 호출 시 할당되고 반환 시 소멸
      • 컴파일 타임에 크기가 결정
    • 힙 영역
      • 동적 데이터 영역
      • 컴파일 타임에 크기가 결정
      • 상태
    • new
      • 생성 중
    • ready
      • 실행 준비가 끝난 상태에서 프로세서에 할당되기를 대기
    • running
      • 프로세스가 프로세서를 차지하여 명령어들을 실행 중
    • waiting
      • I/O, signal 등의 이벤트를 대기 중
    • terminated
      • 종료
  • 통신 방법
    • IPC(Inter Process Communication)
    • LPC(Local inter-Process Communication)
    • shared memory
  • 프로세스 제어 블록(PCB, Process Control Block)
    • 운영체제가 프로세스 관리하기 위해 필요한 정보를 지닌 운영체제 커널의 자료 구조
    • 작업 제어 블록(TCB, Task Control Block)라고도 불림
    • 정보
      • 식별자
      • 상태
      • 프로그램 계수기
      • 레지스터
      • 스케줄링 정보
      • 메모리 관리 정보
      • 프로세스 계정 정보
      • 입출력 상태 정보


스레드

  • 프로세스가 할당 받은 자원을 이용하는 CPU 작업의 최소 단위
  • 레지스터, 스택 영역외에는 프로세스와 공유


프로세스 VS 스레드

  • 생성 비용
    • 스택 영역만 새로 할당받으면 되는 스레드의 생성 비용이 낮음
  • 자원 비용
    • 스택 영역외의 메모리를 공유하는 스레드의 자원 비용이 낮음
  • 통신 비용
    • 프로세스간의 공유되는 메모리가 없으므로 통신 비용 증가
    • 스레드는 같은 이유로 인해 병목 현상, 데드락 등의 문제를 수반
  • 비정상 종료 시 영향 범위
    • 프로세스
      • 공유 파일 등의 손상을 제외하면 거의 없음
    • 스레드
      • 프로세스가 비정상 종료
        • 즉 모든 스레드가 비정상 종료
  • 컨텍스트 스위칭
    • 프로세스의 경우 공유하는 데이터가 없어서 레지스터, 캐시 메모리의 많은 부분이 스위칭되어야 하므로 느림
    • 스레드는 스택을 제외한 나머지를 공유하므로 스위칭 속도가 빠름


컨텍스트 스위칭

  • 인터럽트 요청에 의해 현재 실행 중인 프로세스의 컨텍스트(상태, 레지스터 값)와 실행해야 할 프로세스의 컨텍스트가 전환되는 과정