1. 쓰레드란?

사전적 의미) 실을 꿰다

운영체제 의미) 실행될 명령어들의 연속

  • 정량 프로세스(Light Weight)라고 한다

  • 하나의 프로세스를 수행하는 과저에서 여러 개의 인터럽트 루틴이나 함수를 순서적으로 수행하는 프로세스 = 단일 쓰레드

  • 하나의 프로세스에 여러 개의 쓰레드 존재 = 다중 쓰레드

  • 순차적 실행과 프로세스 상태 전이의 병렬성을 접속하기 위해 개발되었다

  • 다중 프로그래밍 기법에서 여러 개의 프로세스는 하나의 시스템 공유

  • 하나의 컴퓨터 시스템에서 여러 개의 프로세스가 상태 전이를 통해 실행되듯이 하나의 프로세스에서 여러 개의 쓰레드가 실행될 수 있도록 하는 기술

  • 프로세스 내 쓰레드 간 통신은 커널 개입을 필요로 하지 않기 때문에 프로세스 간 통신보다 더 효율적으로 이루어진다.

  • 멀티 프로세서(CPU가 여러 개)는 탑재 프로세서(CPU)마다 쓰레드를 실행시킬 수 있기 때문에 프로세스의 처리율을 향상시킬 수 있다.

1-2. 다중 쓰레드의 공유 메모리

  • 다중 프로세스에서 각 프로세스는 각각 독립된 메모리 영역(Code, Data, Heap, Stack의 구조)을 할당 받는다

  • 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.

  • 각 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신을 이용해야 한다

    										< 다중 프로세서의 독립적인 메모리 >

  • 다중 쓰레드는 하나의 쓰레드 내에서 각각 Stack만 따로 할당 받고 Code, Data, Heap 영역은 공유한다

  • 스택은 함수 호출 시 되돌아갈 위치 값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간이다

  • 스택 메모리 공간이 독립적이므로 사용하는 것은 독립적이 ㄴ함수 호출이 가능하다는 것이기 때문에 쓰레드는 독립적인 실행 흐름이 가능하다

  • 따라서 쓰레드는 각종 레지스터(PC : 프로르램 카운터 등) 및 스택 공간들을 모든 쓰레드가 독립적으로 사용한다

  • 쓰레드들은 하나의 프로세스 내의 주소 공간이나 자원들을 같ㄴ은 프로세스 내에 쓰레드끼리 공유하면서 실행된다

  • 프로세스들은 같은 힙(Heap) 공간을 공유하거나 접근할 수 없지만 하나의 프로세스 안에 있는 여러 쓰레드들은 같은 힙 공간을 공유할 수 있다.

  • 한 쓰레드가 프로세스 자원을 변경하면 다른 쓰레드도 그 변경 결과를 알 수 있다

    												< 다중 쓰레드 >

1-3. 쓰레드 운영 방식

■ 커널 수준의 쓰레드

  - 쓰레드 패키지를 운영체제 커널 자체에서 운영 관리

  - 각 응용 프로그램들은 운영체제에 영향을 많이 받게 되므로 이식성 낮음

■ 사용자 수준의 쓰레드

  - 쓰레드 패키지를 사용자 영역에 두고 운영체제 커널은 단일 프로세스만을 관리

  - 쓰레드 패키지를 런타임 시스템(Run Time System)에서 운영

  - 운영체제 입장에서는 런타임 시스템도 하나의 프로세스로 인식

  - 쓰레드를 운영하지 않는 운영체제에서 실행할 수 있도록 이식성 뛰어나다
  

다시 비교를 해보면..

profile
오늘도 개발중인 ppm's Programming Log

0개의 댓글