스레드 라이브러리
스레드 라이브러리 : 주제를 만들고 관리하기 위한 API를 프로그래머에게 제공합니다. 실제 라이브러리를 구현하는 데는 크게 두 가지 방법이 있습니다.
첫 번째 방법은 지원 없이 사용자 공간에 완전한 라이브러리를 제공하는 것입니다. 라이브러리는 사용자 공간에 모든 코드와 데이터 구조를 가지고 있다. 라이브러리에서 함수를 호출하는 것은 시스템 호출이 아닌 사용자 공간에서 로컬 함수를 호출하는 것을 의미합니다.
두 번째 방법은 운영 체제가 지원하는 커널 수준 라이브러리를 구현하는 것이다. 이 경우 라이브러리의 코드와 데이터 구조는 커널 공간에 존재한다. 라이브러리 API를 호출하면 시스템에서 호출됩니다.
현재 POSIX 표준 내의 실제 확장인 pthreads는 사용자 또는 커널 수준의 라이브러리로 제공될 수 있다. 윈도우 스레드 라이브러리는 윈도우 시스템에서 사용할 수 있는 커널 수준의 라이브러리이다.
Java Thread API를 사용하면 Java 프로그램에서 직접 주제를 만들고 관리할 수 있습니다.
그러나 대부분의 JVM 구현은 호스트 운영 체제에서 작동하므로 자바 스레드 API는 일반적으로 호스트 시스템에서 사용할 수 있는 실제 라이브러리를 사용하여 구현된다.
윈도 시스템에서 자바 스레드는 윈도 API를 사용하여 구현되며, pthread는 유닉스, 리눅스, 맥 OS 시스템에서 일반적으로 사용된다.
POSIX 및 Windows 테마의 경우 전역 변수로 선언된 데이터, 즉 함수 외부에서 선언된 데이터는 동일한 프로세스의 모든 항목에서 공유됩니다.
Java는 해당 글로벌 데이터에 대한 액세스 개념이 없으므로 공유 데이터에 대한 액세스는 주제 간에 명시적으로 조정되어야 합니다.
JVM과 호스트 운영체제
JVM은 일반적으로 호스트 운영 체제를 통해 구현된다. 이 설정은 JVM이 하위 시스템 구현에 대한 세부 사항을 숨기고 자바 프로그램이 JVM을 지원하는 어떤 플랫폼에서도 작동할 수 있는 일관되고 추상적인 환경을 만들 수 있도록 한다.
JVM 규격은 운영 하위 시스템에 자바 스레드을 배치하는 방법을 명시하지 않고 각 JVM 구현에 맡겨둔다. 예를 들어 윈도우 운영체제는 단일 모델을 사용한다. 윈도에서 실행되는 JVM의 각 자바 실은 커널 스레드와 연결되어 있다.
또한 자바 테마 라이브러리와 호스트 운영 체제 테마 라이브러리 사이에는 연관성이 있을 수 있다.
예를 들어, 윈도우 운영 체제 패밀리의 JVM 구현에서는 윈도우 API를 사용하여 자바 스레드을 생성할 수 있다. 리눅스 및 MacOS 시스템은 Pthread API를 사용할 수 있다.
암묵적 스레딩
다중 처리의 지속적인 성장과 함께 수백 또는 심지어 수천 개의 실이 있는 응용 프로그램들이 생겨났다. 그러한 애플리케이션의 설계는 사소하지 않으며, 프로그래머는 4.2절에 기술된 것 외에 다른 난제를 극복해야 한다.
이러한 과제를 극복하고 병렬 및 병렬 응용 프로그램을 설계하는 데 도움이 되는 한 가지 방법은 애플리케이션 개발자들의 스레딩을 생성 및 관리하는 책임을 컴파일러와 시간 라이브러리로 이전하는 것이다.
암묵적 실이라고 불리는 이 전략은 점점 더 많이 사용되고 있다. 이 절에서는 암시적 스레딩을 사용하여 다중 관리자에 지렛대를 줄 수 있는 애플리케이션을 설계하기 위한 네 가지 접근방식을 탐구한다.
우리가 보게 될 것처럼, 이러한 전략들은 일반적으로 애플리케이션 개발자들이 병렬로 실행할 수 있는 작업을 식별하도록 요구한다.
스레드 라이브러리 풀
우리는 여러 테마로 구성된 웹 브라우저를 설명한다. 이와 같은 웹 서버는 당신이 받는 모든 요청에 대한 새로운 힌트를 생성한다. 각 요청에 따라 새 스레드를 생성하는 것은 의심할 여지 없이 매번 새로운 프로세스를 생성하는 것보다 더 진보된 방법이지만 멀티스트림 서버는 여전히 많은 문제를 안고 있다.
첫 번째 문제는 실을 만드는 데 걸리는 시간인데, 특히 이 실이 가동될 때마다 즉시 감가상각된다는 점을 고려할 때 더욱 그렇다. 두 번째 문제는 더 심각하다.
각 요청에 대해 새로운 스레드가 생성되어 제공되는 경우 시스템에서 동시에 실행할 수 있는 최대 오류 수를 설정해야 한다. 주제를 무한정 만드는 것은 언젠가 CPU 시간과 메모리 공간과 같은 시스템 리소스로 끝날 것이다. 이러한 문제들을 해결할 수 있는 한 가지 방법은 스레드 풀(pool)이다.
2023.06.09 - [운영체제] - 스레드 모델 (thread) 핵심 요약 정리(2)
스레드 모델 (thread) 핵심 요약 정리(2)
스레드 모델 단일 코어 시스템 스레드 모델 프로그래밍은 이러한 다중 컴퓨팅 코어를 보다 효율적으로 사용하고 병렬성을 개선하기 위한 기술을 제공한다. 단일 컴퓨팅 코어가 있는 시스템에서
contentplus.tistory.com
'운영체제' 카테고리의 다른 글
동기화 (Synchronization) 핵심 요약 정리 (0) | 2023.06.09 |
---|---|
프로세스 동기화 (Process) 핵심 요약 정리(1) (0) | 2023.06.09 |
스레드 모델 (thread) 핵심 요약 정리(2) (0) | 2023.06.09 |
스레드 (thread) 핵심 요약 정리(1) (0) | 2023.06.09 |
스케줄링 (Scheduling) 알고리즘 정리 요약 (0) | 2023.06.04 |