programming/etc

[etc] 프로세스와 스레드

LEIBNIZ 2017. 2. 1. 12:43


* 프로세스

- OS로 부터 주소공간, 메모리, 파일등을 할당받는 실행의 단위.

- 쉽게 말해, 우리가 어떤 프로그램을(롤, 워드, 엑셀과 같은) 실행 했을때 메모리에 올라가는 단위라 생각하자

- 각각의 프로세스는 완벽히 독립적( Code, Data, Heap, Stack )이다. (워드를 여러 개 실행 했다고 생각해보자)


* 스레드

- 한 프로세스내에서 동작하는 여러 실행의 흐름.

- 프로세스 내의 쓰레드들은 스택공간을 제외한 나머지 공간과 시스템 자원( Code, Data, Heap )을 공유한다.


 스레드는 시스템자원(데이터 영역 메모리)를 공유하기 때문에, 실제로 전역변수를 사용하여 데이터를 공유할 수 있다. 또한 코드를 공유하기 때문에 같은 함수에 접근이 가능하다.  이러한 장점은 스레드간 충돌문제를 일으킬 수 있으므로, 동기화 문제를 고려하여 설계하여야 한다.