줘이리의 인생적기

Thread 본문

공부/운영체제

Thread

줘이리 2021. 11. 17. 23:00
728x90

Light weight process라고도 하는 Thread에 대해서 알아보자

 

프로세스는 프로세스간에 데이터 접근이 불가한 반면,

스레드는 프로세스 안에 있으므로 프로세스의 데이터들을 모두 접근 가능하다.

 

이 말은 하나의 프로세스에 여러개의 스레드를 생성 가능하다는 말이다.

또한, 여러 스레드가 동시에 실행 가능하다.

(2개 이상의 스레드를 사용하는 프로세스를 멀티 스레드 프로세스라고 부른다.)

 

스레드는 각기 실행 가능한 stack이 존재하며, heap, data, code영역은 다른 스레드와 공유한다.

 

스레드의 장점

 - 사용자와 커뮤니케이션 전용 스레드를 만들 수 있으므로 사용자에 대한 응답성이 향상된다.

 - IPC기법을 사용할 필요가 없는 자원 공유에 대한 높은 효율을 가지고 있다.

 

스레드의 단점

  - 여러 스레드 중 하나라도 문제가 생기면 전체 프로세스가 영향을 받는다.

  - 스레드가 많으면 빈번한 Context switching때문에 성능이 저하된다.

  


상호배제(Mutual exclusion)

스레드를 사용하다보면 많이 겪는 이슈 중 하나가 동기화 이슈이다.

작업들 사이에 실행 시기를 맞추지 못해, 여러 스레드가 동일한 데이터 접근시 발생하는 이슈이다.

 

스레드는 프로세스 내에 모든 데이터를 접근할 수 있으므로, 여러 스레드가 변경하는 공유 변수가 있다.

공유 변수에 Exclusive Access가 필요하며, 공유 변수를 변경하는 동안 다른 스레드가 접근하지 못하도록 막아야 한다.

(1명만 사용 가능한 화장실 변기 칸이라고 생각하면 좋다.)

 

여러 프로세스들이 접근하는 데이터를 임계 자원(critical resource), 프로그래머가 동시 접근을 막아둔 코드 영역을 임계 영역(critical section)이라고 한다.

 

추후에 lock.acquire(), lock.release()에 대해서 천천히 공부해보겠다.

 


뮤텍스(Mutex), 세마포어(Semaphore)

 

Mutex는 critical resource 혹은 critical section등에 하나의 프로세스 혹은 하나의 스레드가 접근하는 것을 막아주는 상호배제 기법.

Semaphore는 critical resource 혹은 critical section등에 여러 프로세스 혹은 여러 스레드가 접근하는 것을 막아주는 상호배제 기법.

 

 

semaphore에서 다루는 P, V, S에 대해서 알아보자.

 

S세마포어 값이며 초기 값만큼 여러 스레드가 동시에 임계 영역 접근이 가능하다.

P(wait)임계영역에 들어갈 때 검사 연산이며, 임계 영역 진입 후 S값 1을 차감한다.

V(signal)임계영역에서 나올 때 검사 연산이며, S값을 1 더한 후 임계 영역을 나온다.

 

 

S값이 0이다. 임계영역 접근 불가능.

S값이 1이다. 임계영역 접근 가능

S값이 -1이다. 대기중인 프로세스가 1개

 


교착상태(Deadlock), 기아상태(Starvation)

 

교착상태란 두 개 이상의 작업이 서로의 작업이 끝나기만을 기다리고 있어, 다음 단계로 진행하지 못하는 상태이다.

예방, 회피, 발견, 회복 등 여러 기법으로 교착상태 문제를 해결할 수 있다.

기아상태란 어느 특정 프로세스의 우선순위가 낮아서 원하는 자원을 계속 할당 받지 못하는 상태이다.

우선순위를 변경하는 방법으로 기아상태 문제를 해결할 수 있다.

 

 

'공부 > 운영체제' 카테고리의 다른 글

가상메모리, 페이징 시스템  (0) 2021.11.22
IPC(InterProcess Communication)  (0) 2021.11.19
PCB(Process Context Block), Context switching  (0) 2021.11.15
프로세스 구조  (0) 2021.11.12
인터럽트  (0) 2021.11.10