짹뚜 스튜디오

[컴퓨터공학] Process와 Thread 본문

개발 공부/컴퓨터공학

[컴퓨터공학] Process와 Thread

짹뚜 2022. 2. 21. 18:32

Process (프로세스)

실행 중인 하나의 애플리케이션을 프로세스라고 한다. 즉, 운영체제로부터 독립적인 메모리 영역을 할당 받아서 실행되고 있는 애플리케이션이 프로세스이다. 할당받은 메모리 영역에는 Code, Data, Stack, Heap이 있다. 하나의 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.

Thread (스레드)

스레드는 프로세스의 실행 단위를 얘기한다. 실제로 프로세스의 작업을 실행하는 주체 또는 흐름이 스레드이다. 각각의 스레드는 Stack만 할당받고 나머지 Code, Data, Heap은 서로 공유한다.

멀티 프로세스

하나의 애플리케이션을 여러 개의 프로세스로 나누어서 처리하는 것을 멀티 프로세스라고 한다.

장점

  • 프로세스는 독립적이서 안정성이 높다.
  • 하나의 프로세스에 문제가 생겨도 다른 프로세스에 영향을 끼치지 않아서 큰 문제가 발생하지 않는다.

단점

  • 프로세스는 독립적이기 때문에 Context Switching 과정에서 CPU 레지스터 교체, 캐시 메모리 초기화 등 무거운 작업이 진행되어서 오버헤드가 발생한다. (프로세스 사이에 공유하는 메모리 영역이 없기 때문이다.)
  • 프로세스 사이에서 통신을 하려면 IPC라는 통신 기법을 사용해야 한다.

멀티 스레드

하나의 애플리케이션을 여러 개의 스레드로 구성해서 처리하는 것을 멀티 스레드라고 한다.

장점

  • 메모리 공간과 시스템 자원 소모가 줄어든다.
  • 스레드 사이에 변수를 저장하는 Heap 메모리가 공유되기 때문에 별도의 자원이 필요하지 않다.
  • Context Switching 할 때 캐시 메모리를 삭제할 필요가 없기 때문에 빠르다.

단점

  • 여러 스레드들이 자원을 공유하기 때문에 설계할 때 동시에 접근하지 않게 해주어야한다.
  • 그래서 동기화 작업이 필요하지만 이는 병목 현상을 발생시킬 수 있다.
  • 하나의 스레드에 문제가 생기면 전체 프로세스에 문제가 생긴다.

Context Switching 이란?

Context Switching이란 프로세스나 스레드의 현재 상태를 저장하고 다음에 실행될 프로세스나 스레드의 저장된 상태를 불러오는 과정을 얘기한다. 그래서 Context Switching 과정을 거쳐서 하나의 CPU에서 여러 개의 프로세스가 실행될 수 있게 일정 시간마다 돌아가면서 (Time Slicing, 시분할) 여러개의 프로세스가 동시에 실행되는 거처럼 보이게한다.

'개발 공부 > 컴퓨터공학' 카테고리의 다른 글

[컴퓨터공학] 운영체제 (Operating System)  (0) 2022.02.21
Comments