컴퓨터(Computer Science)/운영체제(Operation System)

스레드 라이브러리?? Thread library

게임이 더 좋아 2020. 5. 31. 00:38
반응형
728x170

라이브러리 도서관 아니고

아 근데 라이브러리 도서관처럼 책이 모여있다고 하면 뭐 비슷할 수도 있겠다.

 

스레드 라이브러리라는 것은 프로그래머에게 스레드를 생성하고 관리하기 위한 API를 제공하는 것이다.

 

 

 


 

 

첫 번째 방법은 커널의 지원 없이 완전히 사용자 공간에서만 라이브러리를 제공하는 것이다. 라이브러리를 위한 모든 코드와 자료구조는 사용자 공간에 존재한다. 

 

그렇게 되면 라이브러리의 함수를 호출하는 것은 시스템 콜이 아니라 사용자 공간의 지역 함수를 호출하게 된다는 것이다.

 

 

 

두 번째 방법은 운영체제에 의해 지원되는 커널 수준의 라이브러리를 구현하는 것이다.

 

이 경우에는 라이브러리를 위한 코드와 자료구조는 커널 공간에 존재한다.

 

그렇게 되면 라이브러리 API를 호출하는 것은 커널 시스템 콜을 하는 것과 같아진다.

 

• Thread library provides programmer with API for creating and managing threads
• Two primary ways of implementing
1. Library entirely in user space
2. Kernel-level library supported by the OS

 

 


 

현재는 세 종류의 라이브러리가 주로 사용된다고 하는데

 

살짝만 보자면

 

1. POSIX Pthreads // 사용자 또는 커널 수준 라이브러리

2. Windows // 커널 수준 라이브러리

3. Java  // Java 프로그램에서 직접 스레드 생성과 관리 가능

 

**Java Virtual Machine에서 진행되기 때문에 호스트 운영체제에 따른다. 호스트 시스템에서 사용 가능한 스레드 라이브러리를 이용하여 구현된다.

 

그래서 JAVA는 Windows에서

Pthreads는 UNIX, Linux, macOS 에서 사용하곤 한다.

 

 

 

더 설명하고싶지만 용어 2개만 설명하고 마치겠다. // 사실 넘 어려움

 

 


 

 

비동기 스레딩이랑 동기 스레딩이다,

asynchronous threading and synchronous threading

 

 

비동기 스레딩은 부모가 자식 스레드를 생성한 후 부모는 자신의 실행을 재개하여 부모와 자식 스레드가 서로 독립적으로 병행하게 실행된다.

++ 독립적이기 때문에 스레드 사이에서 데이터 공유는 거의 없다.

 

**다중 스레드 서버에서 사용되는 전략이며 반응형 사용자 인터페이스 설계에 사용된다.

 

동기 스레딩은 부모 스레드가 하나 이상의 자식 스레드를 생성하고 자식 스레드 모두가 종료할 때까지 기다렸다가 자신의 실행을 재개하는 방식을 말한다. 여기서 부모가 생성한 스레드는 병행하게 실행되지만 부모는 자식들의 작업이 끝날 때까지 실행을 계속할 수 없다. 

 

**통상 동기 스레딩은 스레드 사이의 상당한 양의 데이터 공유를 수반한다.

728x90
반응형
그리드형