inflearn logo
강의

講義

知識共有

Javaの並行性プログラミング[Reactive Programming Part.1]

ユーザーモード & カーネルモード

커널 모드 전환시 질문이 있습니다!

146

hylim

投稿した質問数 5

0

안녕하세요 선생님,

강의 잘 듣고 있습니다!

 

강의 중 궁금한 점이 있어서 질문드립니다.. ㅎㅎ

 

  1. 커널모드로 전환 시 시스템 콜과 응용 프로그램 사이에 라이브러리라고 표기가 되어있던데, 자바일 경우 JNI를 의미하는 것이 맞으실까요??..

 

  1. 병렬 스트림 사용에 대한 예시를 구글링 해보면, 따로 스레드 풀을 생성해서 만들지 않을 경우, 하나의 common 스레드 풀을 공유하여 사용해 스레드가 부족하게 될 경우를 대비해, 따로 별도의 포크조인 스레드 풀을 생성하라는 가이드가 많은데요,

무분별하게 스레드 풀을 많이 생성했을 경우에 생기는 문제점들이 어떤 것이 있을지 알 수 있을까요?..

 

i/o가 잦은 프로세스에서 스레드의 개수가 많아 스레드들간의 컨텍스트 스위칭이 많은 경우에는 메모리 점유 외에 프로세스 성능에 크게 영향을 주지 않을 것이라고 생각 중이지만 다른 사이드 이펙트가 있을까 하여 질문 드립니다!

 

감사합니다 :)

 

java 동시성 multithread synchronisation

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

hylim님의 궁금증에 대해 답변드리겠습니다.

  1. 커널모드로 전환 시 시스템 콜과 응용 프로그램 사이에서 이루어지는 작업을 말씀해주신 것처럼 자바에서는 주로 JNI(Java Native Interface)를 통해 이루어집니다. JNI는 자바 코드 내에서 네이티브 코드(예: C, C++)를 호출할 수 있는 인터페이스를 제공하여, 자바 애플리케이션과 네이티브 애플리케이션이 상호 작용할 수 있게 해줍니다. 따라서 커널 모드 전환 시 A JNI를 통해 운영체제의 시스템 콜을 사용하는 것이 맞습니다.

  2. 스레드 풀을 무분별하게 많이 생성했을 때 발생할 수 있는 문제점으로는 다음과 같은 것들이 있습니다:

    • 메모리 오버헤드: 각 스레드는 자신의 스택 메모리를 가지고 있기 때문에 스레드가 많아질수록 그만큼 메모리 사용량도 증가하게 됩니다.
    • 컨텍스트 스위칭 비용 증가: 스레드의 수가 많아지면 CPU는 스레드 간 컨텍스트를 자주 전환해야 합니다. 이러한 컨텍스트 스위칭은 오버헤드를 발생시키므로 시스템의 전반적인 성능 저하를 일으킬 수 있습니다.
    • 자원 경쟁: 스레드가 많아질 경우, 공유 리소스(예: 데이터베이스 연결)에 대한 경쟁이 심화되어 성능 병목 현상이 발생할 수 있습니다.

즉, 스레드 풀을 과도하게 사용하면 메모리 점유량 증가, 컨텍스트 스위칭으로 인한 성능 저하, 자원 경쟁으로 인한 병목 현상 등 여러 부정적인 사이드 이펙트가 발생할 수 있으므로 스레드 풀의 크기와 사용을 신중하게 계획해야 합니다.

I/O가 잦은 프로세스의 경우, 스레드 개수 관리는 특히 더 중요할 수 있습니다. I/O 작업은 대체로 CPU 작업보다 시간이 더 소요되기 때문에, 적절한 수의 스레드를 유지하며 I/O와 CPU 작업을 효율적으로 분배하는 것이 중요합니다.

추가적인 정보가 필요하시면 항상 도움을 드리겠습니다. 감사합니다 :)

멀티스레드 단일스레드

0

56

0

new Condition 부분 질문

0

82

1

13:00 강의 내용 이해 질문

0

99

1

강의 출시 질문 있습니다.

0

117

1

InterruptedExceptionThreadStopExample 질문입니다.

0

94

2

instance.getMyField()의 값이 왜 다른가요?

0

115

1

해당 강의 내용 무단 도용 신고

0

211

2

Thread Waiting 상태 관련 질문 드립니다.

0

183

1

단일연산변수 api

0

125

0

synchronized 블럭과 메인메모리 반영

0

146

0

실무에서 자바가 제공하는 락을 사용하는 경우

1

243

1

뮤텍스나 세마포어는 busy waiting이 없는 게 맞을까요?

0

159

1

16:50부분에서 타입락 질문드립니다.

0

110

2

16분 7초 뮤텍스 코드 관련해 질문드립니다.

0

160

2

동기화가 보장된다고 하더라도 스레드간 데이터 불일치가 발생할 수 있지 않나요??

0

199

2

리액티브-part2

0

180

2

문자열 풀 값을 이용한 String 변수

0

207

2

스레드 라이브러리는 커널과 같은 역할을 하지 못하나요?

0

173

1

자식 프로세스를 쓰는 이유

0

186

1

[공유] setName 시 threadName이 1부터 시작하는 이유

0

177

1

synchronized = 모니터

0

285

2

Thread의 Context Switching 문의드립니다.

1

256

1

동기 & 논블록킹 질문 드립니다.

0

232

2

AtomicIntegerGetAndUpdateExample 예시가 부자연스럽습니다.

0

152

1