프로세스와 쓰레드

dorazi·2021년 9월 26일
0

science

목록 보기
4/4
post-thumbnail

프로세스

운영체제 위에서 연속적으로 실행되고 있는 프로그램을 말한다.
프로세스는 여러개가 동시에 돌 수 있고 프로세스에 문제가 발생하면 문제가 발생한 프로세스만 죽게된다.
=> 프로세스는 운영체제 위에서 독립적으로 메모리에서 실행되고 있는 프로그램을 말한다.

각각의 프로세스는 사용할 수 있는 메모리나 데이터가 지정되어있다.

프로세스 안에는 프로그램을 실행하기 위한 CODE가 들어 있고 CODE의 함수들이 어떤 순서로 실행되어야 하는지 그리고 이 함수가 끝나면 어디로 다시 돌아가야 되는지에 대한 정보를 저장하고 있는 STACK도 들어 있고 오브젝트를 생성하거나 데이터를 만들 때 그 데이터들이 저장되는 공간인 HEAP도 있고 마지막으로 HEAP 에는 동적으로 할당된 변수들이 저장되는 반면 전역 변수나 스태틱 변수들이 할당되는 DATA가 있다.

쓰레드

쓰레드는 한 프로세스 안에서 여러 개가 동작할 수 있다.
쓰레드는 각각 해야 되는 업무를 배정 받는다.
그래서 일꾼이라고도 불린다.
쓰레드는 자기들이 수행해야 되는 함수의 호출을 기억해야 되기 때문에 쓰레드마다 스택이 할당되어져 있다.
쓰레드는 동시다발적으로 발생할 수 있기 때문에 프로세스가 더 효울적으로 일을 할 수 있도록 도움을 준다.

  • 쓰레드는 자신들이 일을 수행할 때 어디에서부터 어디까지 일을 했고 그 다음은 어디로 가야 되는지 이런 일에 흐름을 기억할 수 있는 고유의 스택이 지정되어져 있지만 CODE, HEAP, DATA 와 같은 공통 자원은 프로세스에 있기 때문에 쓰레드들은 이 프로세스에 공통적으로 할당된 자원에 동시다발적으로 접속해서 동시다발적으로 업데이트 해야 돼서 서로 공유하면서 사용한다.
  • 그래서 멀티쓰레딩이 조금 어려운 이유는 공통적으로 업데이트하면서 순서에 맞지 않는 경우에 발생할 수 있는 문제가 조금 있다.
profile
프론트엔드 개발자

0개의 댓글