Process & Thread

NaHyun Kim·2020년 8월 14일
  • Program

    • 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태
      (운영체제가 프로그램에게 독립적인 메모리 공간을 할당 x, 아직 실행되지 않고 가만히 있음)
      프로그램을 실행하면 해당 파일은 컴퓨터 메모리에 올라가게 되고 이 상태를 동적인 상태라고 하며 이 상태의 프로그램을 프로세스라고 함
  • Process

    • 현재 실행 중인 프로그램, 운영체제가 관리하는 실행의 단위
    • 병행 실행이 가능하다 (프로세스 간 통신이 필요)
    • 하나의 프로그램이 여러 프로세스 생성이 가능하다
    • 각각 독립된 메모리 영역(코드, 데이터, 스택, 힙의 구조)과 주소 공간을 운영체제로부터 할당 받는다.
    • text(code) : 일반 코드가 존재
      data : 변수/초기화된 데이터가 존재
      stack : 임시 데이터(함수 호출, 로컬 변수 등)이 존재
      heap : 코드에서 동적으로 생성되는 데이터
  • Thread

    • 과거에는 프로그램을 실행할 때 실행 시작부터 실행 끝까지 프로세스 하나만을 사용해서 진행했다고 한다. 하지만 시간이 흐를수록 프로그램이 복잡해지고 프로세스 하나만을 사용해서 프로그램을 실행하기는 벅차게 되었다. 프로세스 특성의 한계를 해결하기 위해 만들어진 것이 스레드
  • Process와 Thread 차이점

    • 각각 독립된 메모리 영역을 할당해 주기 때문에 프로세스는 다른 프로세스의 변수나 자료에 접근할 수 없다.
    • 스레드는 프로세스가 할당받은 메모리 영역 내에서 Stack 형식으로 할당된 메모리 영역은 따로 할당받고, 나머지 Code/Data/Heap 형식으로 할당된 메모리 영역을 공유
      따라서 각각의 스레드는 별도의 스택을 가지고 있지만 힙 메모리는 서로 읽고 쓸 수 있음
    • 프로세스는 한 프로세스를 실행하다가 오류 발생해서 강제 종료 되어도 다른프로세스에 영향 x
      스레드는 code/data/heap 내용을 공유하기 때문에 하나에서 오류가 발생하면 같은 프로세스 내의 다른 스레드가 모두 강제 종료

0개의 댓글