작성
·
429
·
수정됨
0
안녕하세요. 강의를 듣다가 궁금한 점이 있습니다!
CPU 코어 수보다 작업 수가 같거나 많은 경우
병렬성 처리 + 동시성 처리
CPU 코어 수보다 작업 수가 적은 경우
병렬성 처리
이렇게 이해를 했는데요.
'작업 수'라는게 정확히 어떤 작업을 말씀하시는 건가요?
예를 들어, jar를 nohup으로 실행하면 프로세스 하나가 실행되는데 이 안에서 작업이라는거는 어떤 것을 말씀하시는 건지 궁금합니다. (자바 메서드를 실행하거나 그런건 아닌거 같은데..)
그리고 하나 더 궁금한 점이 있는데요.
만약 java main 메서드가 실행되어 "hello world"라는 출력을 한다고 하면, CPU가 스케줄 알고리즘으로 프로세스에 할당한 커널레벨 스레드가 자바의 main 스레드를 call 해서 main 스레드가 "hello world"를 찍는 건가요?
아직 제가 강의 뒷부분을 안들어서 그런건지..ㅋㅋㅋ
답변 2
0
네
작업 수는 정확하게 스레드 개수라고 이해하시면 됩니다.
결국 작업을 실행하는 주체는 스레드이기 때문에 CPU 코어 수와 스레드 수의 상관관계에 따라 동시성과 병렬성을 구분할 수 있다는 내용입니다.
그리고 커널 스레드 자체가 자바의 main 을 호출하지는 않습니다.
커널 스레드와 매핑 된 자바 스레드가 main 을 호출하게 되는 구조라 보시면 됩니다.
물론 이 부분을 코드나 실행 흐름을 통한 정확한 구조를 코드 레벨에서 확인 할 수 있기는 어렵습니다.
사용자 수준 스레드 & 커널 수준 스레드 강의 챕터를 아직 듣지 못하셨다면 해당 강의를 들으시면 더 쉽게 이해하실 수 있습니다.
스케줄 알고리즘에 의해 선점된 스레드와 Java 스레드는 다른 게 맞습니다.
스케줄러는 커널 스레드를 CPU 에 할당 시키고 이 커널 스레드가 자바 스레드와 1:1로 매핑 되어 있다고 보시면 될 것 같습니다.
0