본문 바로가기

CS

프로세스와 스레드의 차이

프로그램(Program)

  • 어떤 문제를 해결하기 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문의 집합체
  • 컴퓨터에서 실행 할 수 있는 파일을 말한다. 단, 보조기억장치에 저장된 정적인 상태를 의미

 

프로세스(Process)

  • 운영체제로부터 자원을 할당받은 작업의 단위

 

스레드(Threads)

  • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

 

프로그램 > 프로세스 > 스레드

  • 프로그램이 하나의 설명서라고 한다면 프로세스는 컴퓨터가 이를 통해 하는 행위라고 할 수 있다.
  • 즉 보조기억장치의 프로그램을 실행하면 메모리에 공간을 할당하여 동적인 상태가 된다.
  • 프로세스안에서 동시에 여러 작업들의 흐름이 진행되는데 이런것을 스레드라고 한다.

프로세스의 한계

  • 단일 프로세스의 프로그램의 경우 해당 프로그램이 실행이되면 다른 작업을 할 수 없다.
  • 그렇다고 여러 작업을 처리하기 위해 한 프로그램에 여러개의 프로세스를 할당한다면 메모리,cpu의 자원할당이 중복될 것이다.
  • 따라서 멀티스레드의 필요성이 제기되었다.

 

프로세스의 자원구조

 

  • 코드 영역
    • 프로그램 코드가 cpu가 해석 가능한 기계어 형태로 저장
  • 데이터 영역
    • 코드가 실행 되면서 사용하는 변수 및 데이터들이 저장되어잇음
  • 스택 영역
    • 지역 변수와 같이 함수가 종료되면 사라질 임시적인 자료를 저장하는 독립 공간
      • Stack은 함수 호출과 함꼐 할당되며, 함수 호출이 완료되면 소멸한다. 만약 stack영역을 초과하면 stack overflow 에러 발생
  • 힙 영역
    • 생성자, 인스턴스와 같은 동적으로 할당되는 데이터들을 위해 존재하는 공간
    • 사용자에 의해 메모리 공간이 동적으로 할당되고 해제됨

스레드의 자원공유

    • 프로세스 이미지를 공유 가능한 부분과 공유 가능하지 않는 부분으로 나누고 공유 가능한 부분을 Thread란 개념으로 사용하는 방식
    • 스택 영역의 메모리가 달라지기 때문에 스택 영역은 각 쓰레드가 개별적으로 가지는 것

 

프로세스의 자원공유

  • 프로세스 간 정보를 공유하는 방법
  • IPC(Inter-Process Communication) 사용
  • LPC(Local inter-Process Communication) 사용
  • 별도로 공유 메모리를 만들어서 정보를 주고받도록 설정
  • 프로세스 자원 공유는 단순히 CPU레지스터 교체뿐만이 아니라 RAM과 CPU 사이의 캐시 메모리까지 초기화되기 때문에 자원 부담이 크다는 단점이 있다. 그래서 다중 작업이 필요한경우 스레드를 이용하는 것이 훨씬 효율적이기 때문에 운영체제에선 다중 프로세싱을 지원하지만 다중 스레딩을 기본으로 하고있다.

'CS' 카테고리의 다른 글

동기와 비동기의 차이(블로킹, 넌블로킹)  (0) 2025.03.13
컨텍스트 스위칭(context Switching)  (0) 2025.03.12
CORS(교차 출처 리소스 공유)  (0) 2025.03.11
HTTP 메서드  (0) 2025.03.10
GET과 POST의 차이점  (0) 2025.03.08