본문 바로가기
개발공부 개발새발/OS

OS ) 멀티 코어가 뭡니까?

by 휴일이 2024. 11. 20.

멀티 코어라는 것은 여러 개의 코어를 가지고 있다는 뜻이다.

예를 들어 쿼드 코어라면, 이론적으로는 최대 네 개의 프로세스가 동시 실행 가능하다는 것!

어떻게 가능할까?

멀티코어

CPU 를 구성하는 “ 처리 장치”가 여러 개라는 뜻.

처리 장치?

  • ALU : 산술 연산, 논리 연산을 수행하는 장치. (계산기)
  • 레지스터 : 데이터와 명령어 일시 저장하는 고속 메모리. (프로세스가 올라가면 메모리에서 레지스터로 데이터를 옮겨와서 명령 실행함.)
  • 제어 유닛 : 명령어 해석하고 작업이 어떻게 처리될지 제어함. (제어 장치)
  • L1 캐시 : 코어 내부에 있는 제일 빠른 메모리. (캐시)

그러면 처리 장치가 여러개라는 뜻은?

  • (ALU, 레지스터, 제어 유닛, L1 캐시) 가 여러 개라는 뜻.

램(메모리)은 하나로 돌려 씁니다. ㅎㅎ
그래서 멀티 코어라면 메모리도 큰 걸 써야 됨.
한 번에 여러 프로세스가 동시에 실행되어도 메모리 공간은 공유하고, 그러면 OOM 이 발생할 수 있으니깐요!

그렇다면 멀티 코어 상황에서 멀티 프로세스는 어떻게 실행될까?

예를 들어, 유튜브 뮤직을 들으며 웹서핑을 하는 상상을 해보기.

멀티 코어 : 병렬 실행을 가능케 한다.

  1. 유튜브 뮤직
  2. 웹 요청

이 두가지가 서로 다른 처리 장치에서 동시에 “병렬” 수행 가능.

→ 하지만, 커널은 하나인데, 커널은 뭐해?

커널 : 스케줄링과 리소스 관리

  • 시스템 자원을 효율적으로 분배.
  • 멀티 코어 상황에서도 커널은 하나지만, 모든 코어를 관리하고 각 프로세스를 어떤 코어에 배정할지 스케줄링함.

커널은 대뇌같은 거라고 했다.. 책에서는 운영체제를 정부라고 하고, 운영체제가 곧 “커널”이라고 해도 과언이 아니라고 한다.
명령을 조율하고 실행하는 역할을 한다는 것이다.

근데 커널은 여러 개가 아니잖아.

  1. 유튜브 뮤직은 받았던 데이터를 스피커에 내보내서 노래를 틀어야하고
  2. 웹 요청은 모니터에 응답을 띄워주어야 한다.

→ 이 때, CPU는 “커널 모드”가 되어야 커널이 시스템 자원을 제어할 수 있도록 한다고 함.

그러면 커널이 어떤 작업을 수행하기 위해서는 CPU가 필요한 것 아닌가?

→ 맞다. 커널도 작업을 수행하기 위해 CPU 자원을 사용해야 함. → 커널은 소프트웨어 니까…

  • I/O 요청을 처리하거나 메모리를 할당하고, 스케쥴링을 수행할 때에도 CPU가 필요하다.

커널이 작업을 수행할 때 CPU 는

  1. 커널 모드 : 커널 모드로 전환하면 CPU가 하드웨어 작업에 직접 접근 가능하여 메모리 관리, 장치 제어, 프로세스 스케줄링 작업 등 수행.
  2. 사용자 모드에서 전환 : 애플리케이션이 “시스템 콜”을 사용하면 커널 모드로 전환됨. 커널이 CPU 작업을 다 하면 다시 사용자 모드로 전환 !

그렇다면 “커널 인터페이스”를 사용하기 위해 “커널 모드”로 전환된다고 해도 맞는 말일까?

애플리케이션이 사용자 모드 → 커널 모드로 전환된다는 건?

애플리케이션이 커널이 제공하는 시스템 리소스나 기능(파일 시스템, 네트워크, 메모리 관리 등)에 접근하려고 한다는 것을 의미한다.

  • 시스템 리소스에 접근 가능한 것은 “커널” 뿐이다.

왜 커널만 시스템 리소스에 접근 가능할까?

  • 시스템 리소스(메모리, 디스크, 네트워크 등)는 보호받아야 한다!
  • 시스템 리소스를 애플리케이션이 직접 접근 가능하다면, 시스템 안정성이 무너질 수 있다.
  • 따라서, 애플리케이션은 커널 인터페이스를 통해 커널에게 요청(시스템 콜)하고, 이 요청을 처리하기 위해 커널 모드로 전환된다.
💡 커널 인터페이스(시스템 콜)은 커널과 사용자 모드 애플리케이션 사이의 브릿지 역할을 한다.
애플리케이션이 커널 인터페이스를 호출하면, CPU 는 커널 모드로 전환되어 작업을 수행한다!
그러니 커널 인터페이스를 사용하기 위해 커널 모드로 전환된다. 는 것은 맞는 말이다!!!! !! ! ! !
728x90