자유게시판

kernel은 어느 cpu core를 사용하게 되는 건가요?

작성자
궁금이
작성일
2017-06-30 16:16
조회
517
안녕하세요
Kernel을 분석하며 궁금한 것이 있어 문의 들렸습니다.

H/W Spec : CPU (4 Core)

Kernel의 Scheduler 는 App Process를 CPU Core에 상황에 맞게 bind해서 실행될 텐데,
정작 Kernel은 CPU의 어느 Core를 사용하는 건지 궁금합니다.
전체 1
  • 2017-07-04 08:56
    커널 부트업 프로세스 이후를 문의하시는 것으로 이해하겠습니다.

    커널의 주 코드들은 익셉션(abort, irq, fiq, syscall, undefined 등) 및 커널 스레드에 의해 동작합니다.
    1) 익셉션들은 발생한 해당 cpu에서 현재 스케줄되어 진행 중인 태스크를 잠시 멈추고 코드가 동작합니다.
    2) 커널 스레드 중 중요한 몇 개는 성능을 위해 모든 코어에서 준비되어 있고 특정 조건에서 동작합니다. 그 외 cpu 수와 관계 없이 1 개씩만 동작하는 커널 스레드인 경우 cpu 로드 상태에 따라 그 때 그 때 다릅니다.
    - cpu 마다 동작하는 커널 스레드는 idle-task, ksoftirqd, kworker, migration, ... 등이 있습니다.

    즉 커널은 모든 cpu에서 준비되어 요청을 받을 준비를 하고 있음을 알 수 있습니다.
    대표적으로 모든 cpu에서 스케줄 틱에 의해 동작하는 스케줄 동작은 타이머 인터럽트에 의해 매 틱마다 스케줄을 고려하게 합니다.