본문 바로가기
IT KNOWLEDGE

커널 / 큐

by BTC_뚜벅이 2022. 5. 12.

ABTCEFG♪  안녕하세요, 여러분!

 

BTC_뚜벅이입니다.

 

기초 탄탄 인프라에 대한 개념을 잡는 시간입니다.

 

 

오늘은 OS 커널과 큐에 대해 알아보도록 할게요~

 

Kernel

 

Kernel의 정의

  • 시스템에 존재하는 자원을 효율적으로 관리하는 자원 관리자.
  • 운영체제의 핵심이고 운영체제의 성능은 커널이 좌우함.
  • 커널 자체가 OS 인프라의 개념이고, OS는 인터페이스와 커널 이렇게 2가지로 나뉘어 집니다.

 

 

커널 설계 및 구현 방식

 

1) 모놀리식(단일형 구조) 커널 : 초창기 운영체제의 구조, 핵심 기능을 하는 모듈들이 하나로 구성되어 있는 형태.

     단점으로는 모든 모듈이 하나로 묶여 있어서 한 모듈에 장애가 발생하면 전체에 영향을 미침.

     ex) Linux

 

2) 마이크로 구조 커널 : 최소한의 기능만 커널이 제공하고 그 외 기능은 커널 밖에서 제공.

     각 모듈이 독립적으로 작동함.

     단점으로는 모듈 간의 프로세스 통신이 발생하므로 상대적으로 느림.

     ex) Mac OS

 

여기서 질문! 그렇다면 윈도우는 어떤 구조일까요??

윈도우는 모놀리식 커널 기반에 마이크로 구조 커널을 섞은 하이브리드 구조입니다!

 

 

커널의 역할

1) 시스템 콜 인터페이스

프로세스/스레드에서 커널로 연결되는 인터페이스를 뜻해요.

App이 OS를 통해 어떤 처리를 하고 싶으면 시스템 콜이라고 하는 명령을 이용한답니다.

 

2) 프로세스 관리

가동되고 있는 프로세스 관리와 CPU 이용 우선순위 등을 스케줄을 합니다.

 

3) 메모리 관리

서버상의 메모리를 단위 크기의 블록으로 분할하고 이를 프로세스에 할당합니다.

 

4) 네트워크 스택 

네트워크를 관리합니다.

 

5) 파일 시스템 관리

파일 시스템은 OS 기능의 하나인데 물리 디스크에 제공된 데이터를 관리하는 기능을 담당합니다.

추가적으로 설명하자면 물리 디스크에 0100000으로 기록 되어 있지만 파일 시스템이 존재하기 때문에 '파일' 단위로 데이터를 작성하고 삭제 가능합니다.

 

6) 장치 드라이버

물리 장치용 인터페이스를 제공하고, 각 장치 제조사가 OS에 대응하는 장치 드라이버를 제공합니다.

 

 


 

Queue

Queue를 쉽게 표현한 이미지이고 Queue는 우리 말로 '대기 행렬'을 의미합니다.

 

큐의 동작원리는 FIFO입니다.

위의 이미지를 보면 1 -> 2 -> 3 -> 4 -> 5 순서로 나가겠네요!

 

큐의 사용처

1) CPU 처리 기다리고 있는 프로세스나 스레드 행렬

2) 하드 디스크 등의 저장소 읽기 처리를 기다리고 있는 I/O 요구 행렬

3) 네트워크 접속 성립을 기다리고 있는 접속 요구 행렬

 

 

process r, b ?

위의 캡쳐화면을 설명하기 전 Run-Queue에 대한 개념을 짚어보고 갈게요!CPU를 기다리고 있는 프로세스 행렬을 Run-Queue라고 합니다.

간단한 계산 방법을 살펴보면프로세스 4개와 코어 2개인 경우 Run-Queue=2 -> 코어/Run-Queue = 1 입니다.

위의 vmstat에서 r열과 b열의 의미에 대해 알아보겠습니다!

 

  • r열은 Run-Queue입니다. 현재 실행중인 프로세스를 나타내고 CPU 처리가 어느정도인지 추적할 수 있습니다.
    처리 중인 프로세스를 run-queue로 인식할지는 OS에 따라 달라집니다. OS 커널에서는 프로세스 스케줄러가 관리합니다.
  • b열은 Block-Queue입니다. I/O 자원을 할당받지 못해 블록된 프로세스 수를 나타냅니다.
    이 때 CPU가 아닌 디스크의 I/O 문제를 확인해야합니다.

 

엔지니어는 성능 문제가 발생하면 어느 지점에서 발생했는지 빠르게 찾고 이를 해결하는 역량이 필수적입니다!

문제 발생시 큐의 길이나 행렬의 길이 및 Run-Queue도 확인하는 것 잊지 마세요!

 

 

댓글