본문 바로가기

컴퓨터일반/운영체제론

스레드

스레드

- 프로세스에서 제어를 분리한 실행 단위(프로세서를 이용하는 기본 단위)입니다.

- 프로그램 명령을 실해하는 프로세스 내의 개체입니다.

- 프로세스보다 같거나 작은 CPU 실행 단위로 실행 상태를 줄인 경량 프로세스(LWP)라고도 합니다.

- 하나의 프로세스 내에 여러 개의 스레드가 존재할 수 있습니다.

- 하나의 스레드는 여러 프로세스에 포함될 수 없습니다.

- 프로세스 간의 문맥교환에 비해 스레드 간의 문맥교환의 비용이 더 작다.

- 같은 프로세스에 속한 다른 스레드와 코드, 주소 공간, 데이터, 운영체제의 자원인 파일, 신호 등을 공유합니다.

- 같은 프로세스에 속한 다른 스레드와 같은 주소 공간에 존재하며 동일한 데이터에 접근합니다.

- 프로세스 내부에 포함되는 스레드는 공통적으로 접근 가능한 기억장치를 통하여 효율적으로 통신합니다.

- 스레드 단위로 실행을 위해 레지스터와 스택 영역, 프로그램 카운터를 독립적으로 가집니다.

단일 스레드

- 프로세스를 하나의 스레드, 즉 레지스터와 스택으로 표현합니다.

- 단일 프로세스에 포함된 스레드들은 프로세스의 자원을 공유할 수 있습니다.

다중 스레드

- 프로세스를 각각의 스레드와 고유의 레지스터, 스택으로 표현합니다.

- 다중 프로세스 환경에서는 각각의 스레드가 다른 프로세서에서 수행될 수 있습니다.

- 한 프로세스 내의 스레드들은 서로 공유하는 메모리 영역으로 통신합니다.

- 멀티 코어 시스템에서 다중 스레드를 이용하면 병렬처리가 가능합니다.

- 다중 스레드는 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미칩니다.

- 다중 스레드는 사용자의 응답성을 증가시킵니다.

임계 영역(critical section)

- 공동으로 접근할 수 있는 자원 공간입니다.

- 다중 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역입니다.

- 같이 공유하는 변수인 전역변수가 해당됩니다.

Pthread

- 스레드 생성과 동기화를 위해 POSIX가 제정한 표준 API입니다.

프로세스 메모리 영역

데이터(data) 영역

- 프로그램의 가상주소 공간으로 전역변수나 정적변수를 할당하고 실행하기 전에 초기화합니다.

힙(heap) 영역

- 동적 메모리 할당을 위해 사용되는 공간입니다.

- 주소값이 커지는 방향으로 증가합니다.

스택(stack) 영역

- 자료구조에서 말하는 구조체 외에도 메모리에 지정된 특정 영역을 말하며 프로그램 실행에서 항상 사용됩니다.

- CPU마다 스택포인터 용도로 사용하는 레지스터가 있습니다.

- 스택은 LIFO(Last-In First-Out) 구조를 가지고 있습니다.

- 버퍼 오버플로우 보안공격에 이용되기도 합니다.

- 운영체제의 문맥교환을 할 때 사용됩니다.

- 함수 호출 시 지역변수, 매개변수, 인자, 복귀주소, CPU 레지스터 등의 정보가 저장되는 영역입니다.

텍스트(text) 영역 / 코드(code) 영역

- 실행할 프로그램의 코드가 저장되는 영역입니다.

- CPU가 실행할 명령어를 저장합니다.

 

 

 

'컴퓨터일반 > 운영체제론' 카테고리의 다른 글

프로세스  (0) 2022.09.05
운영체제  (0) 2022.09.05