[TIL] [CS지식] 프로세스와 스레드

이나현·2021년 10월 20일
0

개발지식

목록 보기
12/14

프로그램

XXX.exe가 붙어있는 파일

프로세스

프로그램이 실행되어서 돌아가고 있는 상태
즉, 컴퓨터가 어떤 일을 하고 있는 상태

  • 동시성: 프로세스 하나가 여러작업을 돌아가며 일부분씩 작동
  • 병렬성: 프로세스 하나에 코어가 여러개가 달려서 각각 여러개가 돌아감

스레드

한 프로세스 안에서 여러개의 작업들을 동시에 진행할 수 있는 것

  • 프로세스에서 분할된 전체 자원을 함께 씀
    ( ex. 크롬창에서 여러개의 기능이 돌아감 - 게임다운, 동영상 재생, 검색 등)
  • 각각의 스레드는 독립적인 작업을 수행해야 하기 때문에 각자의 스택과 PC 레지스터 값을 가지고 있다.
    1) 스택을 독립적으로 할당하는 이유?
    - 스택? 함수 호출 시, 사용되는 메모리 공간
    - 스택이 독립적이라는 것은 독립적인 함수 호출이 가능
    - 독립적인 실행 흐름이 추가되는 것
    2) PC Register를 스레드마다 독립적으로 할당하는 이유?
    • pc 값은 명령어가 수행된 부분을 기억한다.
    • 스레드는 cpu를 할당받았다가 스케줄러에 의해 다시 선점을 당하는데, 그렇기 때문에 명령어가 연속적으로 수행되지 못하고, 어느 부분까지 수행되었는지 기억할 필요가 있다.

멀티스레드

장점과 단점을 파악하기 위한 메모리 구조

장점

  • 메모리 공간과 시스템 자원 소모가 줄어든다.
  • 스레드 간의 통신이 필요한 경우에도 전역 변수의 공간이나 동적으로 할당된 공간이 Heap 영역을 이용하여 데이터를 주고 받기 때문에 통신 방법이 간단하다.

문제점

  • 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 한 스레드가 다른 스레드의 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정할 수 있다.
  • 멀티스레딩 환경에서는 동기화 작업이 필요하다.

멀티 스레드 vs 멀티 프로세스

1)멀티스레드

  • 장점: 적은 메모리 공간 차지, 빠른 문맥 전환
  • 문제점: 하나의 스레드가 종료되면 다른 스레드도 종료가 되는 동기화 문제가 있다.

2) 멀티 프로세스

  • 장점: 다른 프로세스에 영향을 미치지 않는다.
  • 단점: 메모리 공간, cpu 시간을 차지한다.
profile
technology blog

0개의 댓글