스레드 , 프로세스

종종2·2023년 8월 21일
0

#프로세스, 스레드, 프로그램

프로그램(program)

컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일
저장 장치에는 있는 상태지만, 메모리에는 적재되지 않은 정적인 상태를 의미함.

프로세스(process)

컴퓨터에서 실행되고 있는 프로그램을 말한다. cpu 스케줄링의 대상이 되는 작업이라고도 의미한다.
프로그램으로부터 인스턴스화된 것을 의미한다.

스레드(thread)

프로세스 내 작업의 흐름(흐름의 단위)

프로세스와 스레드의 메모리 구조

출처: https://dextutor.com/ :

  • 코드 영역 : CPU가 해석 가능한 기계어의 형태로 저장이 됨
  • 데이터 영역 : 전역 변수 혹은 함수 등 각종 데이터들이 저장되어있는 장소
  • 스택 영역 : 지역변수, 매개변수, 함수 등이 저장되고 컴파일 시 크기가 결정되며, "동적"인 특징을 갖는 영역 (함수를 재귀적으로 호출하면, 동적으로 크기가 늘어나는데, 힙과의 영역이 겹치면 안되기 때문에 힙과 스택사이의 공간이 존재한다.)
  • 힙 영역 : 생성자, 인스턴스와 같은 동적으로 할당되는 데이터를 위한 공간

출처: https://dextutor.com/ :

  • 스레드는 프로세스와 달리 코드 ,데이터 ,힙은 스레드끼리 공유한다. 그 외의 영역은 각각 생성이 된다.

멀티 스레딩

  • 멀티 스레딩은 프로세스 내 작업을 여러 개의 스레드, 멀티스레드로 처리하는 기법이다.
  • 한 스레드가 중단되어도 다른 스레드를 실행할 수 있기 때문에 중단되지 않고 빠른 처리가 가능하며, 동시성에 큰 장점이 있다. 하지만, 자원을 공유하기 때문에 문제가 생기면 다른 스레드에 영향을 끼칠 수가 있다.

멀티 프로세싱

  • 프로세스를 여러 개 두어 동시에 두 가지 이상의 일을 수행할 수 있는 것을 의미한다.

프로세스가 다른 프로세스의 정보에 접근하는 방법?

  • IPC(Inter Process Communication) : 프로세스끼리 데이터를 주고 받고 공유 데이터를 관리하는 메커니즘
    1. 공유 메모리
    1. 파일
    2. 소켓
    3. 파이프
    4. 메시지 큐

공유 메모리

  • 동일한 메모리 블록을 만들어, 해당 메모리 블록에 접근 권한을 부여하여 프로세스가 서로 통신하도록 공유 버퍼를 생성하는 것

파일

  • 디스크에 저장된 데이터 혹은 파일 서버에서 제공한 데이터를 말한다. 이러한 저장된 데이터를 다른 프로세스에서 가져가서 사용하는 방법

소켓

  • 네트워크 통신을 위한 기술 동일한 컴퓨터의 프로세스나 네트워크의 다른 컴퓨터로 네트워크 인터페이스를 통해 전송하는 데이터를 의미한다 (TCP, UDP)

파이프

  • 임시 공간인 파이프를 기반으로 데이터를 주고받는 방식

메시지 큐

  • 메시지를 큐 데이터 구조 형태로 관리하는 것을 의미한다.

출처

  • 면접을 위한 CS 전공 지식 노트
  • StackOverflow
profile
나 이현종

0개의 댓글