Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

발전하는 개발자가 되자

프로세스(process)와 스레드(thread) 본문

개발공부/CS

프로세스(process)와 스레드(thread)

백경훈 2019. 2. 13. 15:49

프로세스와 스레드

프로세스 란?
스레드 란?
멀티 프로세스, 멀티 스레드


프로세스 란?

실행중인 프로그램의 인스턴스를 프로세스라 한다.

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

  • 프로그램은 저장소에서 동작을 기다리는 코드 뭉치
  • 프로그램은 생명이 없다. 프로그램이 생명을 부여받은게 프로세스

프로세스의 구조

2

Code

함수, 제어문, 상수

Data

초기화된 전역 변수

Bss

초기화 안된 전역 변수

Heap

동적할당 개발자가 인위적으로 할당한 값

Stack

지역변수, 매개변수

프로세스의 특징

  • Code, Data, Stack, Heap의 구조로 구현되어 있다.
  • cpu는 한번에 하나의 프로세스만 구동할 수 있다. 하지만 Context Switching을 통해 멀티프로세스가 가능하다.
  • 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.

스레드 란?

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

스레드의 특징

  • 프로세스의 하위 집합
  • 스레드는 프로세스에게 stack을 할당 받고 heap은 공유한다.
  • 따라서 heap영역의 있는 데이터를 Thread1이 변경하면 Thread2가 그 데이터를 이용하고 있으면 Thread2도 변화에 영향을 받는다.
  • java의 스레드는 JVM 에 의해 스케줄이 관리된다.

멀티 프로세스

멀티 프로세스는 Context Switching 통해 cpu 가 한번에 여러 동작을 하는것

  • ex) 윈도우나 스마트폰에서 여러 프로그램이 동시에 동작하고 있는 것
  • ex) 크롬은 멀티 프로세스 환경이다.

멀티 프로세스의 장점

여러개의 자식 프로세스가 동작중일 때 하나의 프로세스가 죽는다고 피해가 확산되지 않는다. 각각의 프로세스는 메모리를 공유 하지 않기 때문에 하나를 사용하는것 처럼 동작이 빠르다.

멀티 프로세스의 단점

  • Context Switching 과정에 캐쉬 메모리 초기화 와 같은 무거운 작업이 일어나기 때문에 오버해드가 발생할 수 있다.
  • 각 프로세스들이 무겁다
  • 프로세스 사이 변수를 직접 공유할 수 없다.

멀티 스레드

멀티 스레드란 하나의 프로세스로 여러개의 스레드를 구성하고 동작시키는것
윈도우나 리눅스등 많은 운영체제가 멀티 스레드로 동작하고 있다.

  • ex) 인터넷익스플로러 하나가 응답 없으면 다 꺼진다.

멀티 스레드의 장점

  • heap 영역과 Code영역을 공유하기 때문에 메모리를 효율적으로 사용할 수 있다.
  • 스레드 사이의 작업량이 작아 Context Switching이 빠르다.

멀티 스레드의 단점

  • 서로 데이터를 공유하기 때문에 충돌이 일어날 수 있다.
  • 디버깅이 까다롭다.
  • 설계가 어렵다.
  • 하나의 스레드의 문제가 전체 스레드로 파생된다.

멀티 스레드, 멀티 프로세스를 구현할 땐 데드락(교착 상태) 상태를 고려하고 있어야 한다.


참고

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

https://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a-thread

'개발공부 > CS' 카테고리의 다른 글

REST full, REST API 란 무엇 일까?  (1) 2019.05.27
Http 프로토콜 에서 get 과 post 의 차이  (1) 2019.04.12
JPA, ORM 그리고 영속성  (0) 2019.02.09
Comments