운영체제 (Operation System)

[OS] Lecture 4. Thread management / 운영체제 강의

유호야 2021. 12. 10. 19:41
반응형

 

 

실이라는 뜻의 스레드

목적을 달성하기 위한 연산을 하는 프로세스
자원을 할당받고 제어해서 원하는 목적을 달성하는 것이 프로세스가 하는 일이다.

이중에서 제어 부분만 따로 떼어 놓은 것을 "스레드"라고 한다.

하나의 프로세스에 여러가지 스레드가 있을 수 있다.
프로세스는 리소스를 제어하는 녀석이다.

 


 

프로세스는 리소스를 제어하는 

지역데이터를 사용하는 이유 > "제어"를 위해서

제어 부분만 떼어 놓는 부분을 쓰레드라고 하는데

리소스틑 공유한다.

같은 프로세스의 스레드들은 동일한 주소 공간을 공유한다. 


 


자원을 공유하고 제어 부분만 가지고 있기 때문에 일반 프로세스보다 가볍다.

프로세서를 활요하는 기본 단위

제어요소는 개인이 가지고 있고, 코드와 데이터 = 자원은 공유되고 있다.



- 사용자 응답성

스레드가 하나인 일반적인 프로세스라면 (i/o를 하기 위해서 block 상태로 내려가야한다)
그럼 프로세스가 올라왔다가 내려와야 한다.

화면을 출력하고 있을 것이고 적이 나타날 때, 적을 보려고 마우스를 돌리는 순간 .. 멈춘다.

화면이 안나오고 마우스도 멈출 것이다. 하나의 작업을 하는 중에 다른 것이 멈추기 때문에 제대로 된 게임을 즐길 수 없다. 따라서 해결책은 스레드를 3개 만들어서, 입력/소리/출력을 담당하게 나눈다. 스레드이기 때문에 게임을 하기 위한 자원을 공유할 수 있을 것이다. 
=> 사용자의 응답성을 높일 수 있다.
: 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능 

 

 

- 자원공유

자원을 공유함으로써 효율성이 증가한다.
프로세스1, 2번이 A라는 자원을 사용하는 경우 B는 사용할 수 없다. 그럼 b는 a가 멈추기를 기다릴 것이고, 번갈아가면서 사용하게 될 것이다. 즉 context switch가 잘 실행되는 것을 보고 있다.

그러나 이것이 프로세스가 아니라 스레드일 경우 A라는 자원(하나의 프로세스에 속해 있는)을 동시에 사용할 수 있으며 CS(Context Switch)는 발생하지 않음으로써 효율적으로 사용 가능할 것이다.

즉 cs는 커널이 개입하기 때문에 이것자체가 큰 overhead이다. 멀티스레드를 사용함으로써 커널의 개입을 피할 수 있고, 이로써 효율성이 증가한다.

- 경제성
프로세스의 생성, context switch에 비해 효율적
프로세서를 새로 만든다거나 커널의 개입을 피할 수 있기 때문에 효율적

- 멀티프로세서(multi-processor) 활용
스레드는 CPU=프로세서 프로세서를 활용하는 기본 요소 
스레드가 여러개라는 것은 여러개의 cpu 코어를 동시에 사용할 수 있다는 뜻 = 더 높은 성능을 얻을 수 있다.
병렬처리를 통해 성능향상

 

"사용자와의 인터렉션이 필요한 프로그램은 멀티스레드 프로그램으로 돌아간다."



 

사용자 수준의 스레드는 다음과 같다. 


 

프로세스가 하나 생성될 때, 커널은 프로세스가 생겼기 때문에 당연히 스레드가 하나 생기게 된다.
프로세스가 하나이기 때문에 스레드도 하나.
라이브러리를 통해서 여러개의 스레드를 사용하는 것처럼 하겠다.

 

커널은 스레드의 존재를 모르기 때문에 커널의 개입을 받지 않는다.
유연한 관리가 가능하고, 오버헤드가 적다.
이식성이 높다. 이 라이브러리가 있는 플랫폼은 우리가 만든 멀티플랫폼을 그대로 사용할 수 있다.
jvm과 같은 원리

단점은 사용자 수준의 스레드가 여
스레드가 일을 하다가 i/o block 상태일 때 1대1맵핑이기 때문에 다른 
하나의 스레드가 block 되면 모든 스레드가 대기해야 한다. 

커널은 프로세스 단위로 자원을 할당하기 떄문에 ...


커널 수준 스레드

 


잘 섞어서 사용하자는 전략

 

 

 


 

일반적으로 os들은 혼합스레드형을 이용하고 있다.

스레드의 개념을 잡는 것이 중요했던 수업

스레드란?
자원은 공유를 하지만, 각각의 자신만의 제어요소를 가지고 있는 것

자원을 공유하기 떄문에 작업을 효율적으로 할 수 있다. 그리고 여러개의 CPU코어(자원)를 동시에 사용할 수 있다. 병렬처리가 가능하다.

 

반응형