스레드란?

다중 스레드 프로세스(Multi-thread Process)

다중 스레드 프로세스란 메모리에 적재된 프로그램의 시작 점이 여러 곳 있어서, 해당 프로세스를 바탕으로 진행하는 실행 줄기가 여러 개 존재한다는 의미이다. 이때 프로세스는 스레드를 담는 Resource Container역할을 한다.

int S;
void main1()
{
  int x, y, z;
  x = 1, y = 2;
  z = add(x, y);
  S = S + z;
}
void main2()
{
  int a, b, c;
  a = 3, b = 4;
  c = add(a, b);
  S = S + c;
}
int add(int p, int q)
{
  int s;
  s = p + q;
  return(s);
}

main1과 main2 스레드가 동시에 독립적으로 실행할 때 서로 다른 기계어 코드를 실행 하겠지만, add 함수 부분을 실행할 때에는 완전히 동일한 기계어 코드를 실행하게 된다. 그래도 스레드는 연산 과정이 고유하게 유지되는데, add함수와 그 안의 지역(자동)변수가 스택 메모리에 각각 저장되기 때문이다. 이때 기계 명령어는 SP(Stack Pointer) 상대주소를 이용한다. 전역 변수 S에는 원하고자 하는 값이 들어 가지 않는다.