[CS]프로세스와 쓰레드, 멀티프로세스와 멀티쓰레드(+멀티코어)

건너별·2021년 12월 25일
0

Computer Science

목록 보기
10/13

💡키워드 정리

- 실행 단위

- cpu core에서 실행하는 하나의 단위
- **프로세스**와 **스레드**를 포괄하는 개념

- 프로세스

- 하나의 스레드만 갖고 있는 단일 스레드 프로세스

- 동시성

- 한 순간에 여러 가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것 처럼 보이는 것

프로그램과 프로세스의 차이

  • 프로그램 : 피자의 레시피와 같은 개념. 코드 파일로 구현되었고 실행되기 전엔 효력이 없다.
  • 프로세스 : 만들어진 피자와 같은 개념. 프로그램이 실행될때 생성됨.


** 보조기억장치에 있던 프로그램이 실행되면서 메모리 공간에 할당됨.

프로세스(Process)

  • 프로그램을 실행하면 파일은 운영체제에 의해 메모리 공간에 할당됨. 이 때, 자원을 할당받은 작업의 단위
  • 운영체제는 프로세스마다 각각 독립된 메모리 영역을 Code/Data/Stack/Heap 형식으로 할당

  • Data : 전역변수들이 저장
  • Stack : 함수의 매개변수, return 주소, local 변수 등을 저장
  • heap : 프로그램 실행 중 동적으로 할당되는 값들이 저장
  • 각 프로세스는 별도의 메모리 공간을 차지하므로 IPC(Inter Process Communication)을 사용해야 함

멀티프로세스

  • 원래 하나의 프로세스가 CPU를 점유하고 있으면 다른 프로세스가 실행상태에 있을 수 없음
  • 다수의 프로세스를 동시에 실행하기 위해서 여러 개의 프로세스를 시분할로 전환해서 실행하도록 함

특징

-> 그러나 여러 프로세스를 전환(Context Switching)해가는 것은 어려운 일임(큰 Cost)

  • 각 프로세스는 독립적인 메모리를 차지함
  • IPC를 사용한 통신이 필수적
  • Context Switching 비용이 큼
  • 동기화 작업이 필요하지 않음

단점

  • Context Switching이 발생하면 데이터를 모두 리셋해야 하므로 오버헤드가 매우 큼

한 앱에 대한 작업을 동시에 하기 위해서는 2가지 처리 방식(멀티프로세스, 멀티스레드)가 있습니다.

쓰레드(Thread)

  • 한 프로세스 내에서 나뉘어진 하나 이상의 실행 단위
  • 경량화된 프로세스
  • 기본적으로 프로세스는 최소 1개의 쓰레드를 갖고 있음. 이를 메인 쓰레드라고 함.

멀티스레드

[하나의 process 내에서 일어나는 일을 가정했을 때]

[https://m.blog.naver.com/three_letter/220333796848]

  • 하나의 프로세스 내에서 분리되어 실행되는 것
  • 각 Thread 끼리는 긴밀하게 연결되어 있음

특징

  • 공유된 자원으로 통신 비용 절감/메모리가 효율적
  • Context Switching이 용이함(Low Cost)
  • 공유 자원(Code, Data, heap)을 관리해야 함
  • 각 쓰레드는 각자의 스택과 PC 레지스터 값을 갖고 있음

왜 스택 및 레지스터 값을 따로 갖고있어야 할까요? 위에서 설명한 Stack 및 레지스터의 역할로부터 추론하여 봅시다.

단점

  • 각 스레드가 긴밀하게 연결되어 있기 때문에, 한 쓰레드에 문제가 생기면 전체에 영향을 미침
  • 구글 크롬 : 멀티프로세서를 이용하기 때문에 멀티탭 간의 영향을 덜 받음

멀티코어(MultiCore)

  • 실행 단위를 병렬적으로 처리할 수 있도록 여러 프로세서가 있는 것
  • 멀티프로세스와 멀티쓰레드처리 방식의 일종이라고 할 수 있음
    -> 이에 반해, 멀티코어는 하드웨어 측면에 가까움

동시성(Concurrency) : 하나의 Core 에서 일어나는 것

  • 실행 단위를 처리할 때 동시에 여러가지 진행을 위해 짧은 텀으로 전환되면서 실행되는 것
  • 실제로 동시는 아니고 마치 동시에 일어나는 것처럼 느껴지게 함

병렬처리(Parallelism) : 여러 Core에서 일어나는 것

  • 둘 이상의 코어에서 동시에(이건 말 그대로 동시에) 하나 이상의 프로세스가 한꺼번에 진행되는 것

정리🧐

Reference

profile
romantic ai developer

0개의 댓글