Kernel

dragonappear·2023년 5월 19일
0

Operating System 101

목록 보기
2/10

커널

커널 그게 뭔데요

  • 운영체제의 중앙 처리 엔진
  • 운영체제가 제공하는 서비스를 수행하는 모듈

어떤 역할

  • 하드웨어 관리
  • 메모리 관리
  • 프로세스 관리
  • 파일 시스템 관리
  • 입출력 관리


Dual Mode

모드가 의미하는 것은 권한 레벨이다.

  • 유저 모드는 응용 프로그램이 실행되는 권한 레벨을 뜻한다.
  • 커널 모드는 커널이 실행되는 권한 레벨이다.

유저 모드

  • 유저 모드에서 실행되는 프로세스는 제한된 시스템 리소스 접근 권한을 가지며 보안 및 검사를 통해 운영체제와 상호작용하며 자원에 접근해야 한다.

  • 유저 모드에서 실행되는 프로세스는 커널의 도움을 받
    아 시스템 자원에 접근해야 한다.

  • 유저 모드에서 동작하는 프로세스는 커널 모드에서 실행되는 코드보다 보안과 안정성에 대해 요구사항이 높지 않기 때문에 실행 속도와 유연성이 높다.

커널 모드

  • 커널 모드에서 실행되는 코드는 시스템 리소스에 직접적으로 접근할 수 있다.

  • 시스템의 모든 기능과 권한을 사용할 수 있다.

  • 커널 모드에서 운영체제가 제공하는 서비스인 프로세스 관리, 메모리 관리, 입출력 관리, 하드웨어 관리 등을 수행한다.

  • 커널 모드에서 실행되는 코드는 보안과 안정성에 높은 요구사항을 갖는다.

일반적으로 응용 프로그램은 유저 모드에서 실행되고, 커널 모드는 운영체제의 핵심 기능을 제공하는 코드가 실행되는 곳이다.

모드 선택

  • 프로세서의 상태를 제어하는 특정한 비트 또는 플래그로 설정된다.
  • 이 비트는 프로세서의 제어 레지스터에 저장된다.
  • 프로세서는 이 비트의 상태에 따라 실행 모드를 결정한다.

누가 모드 선택

  • 인터럽트 발생 시 하드웨어나 운영체제가 인터럽트 핸들러를 호출한다.
  • 이 핸들러는 커널모드에서 실행되는 특권 명령어를 사용하여 제어 레지스터에 있는 모든 비트를 변경하고, 유저 모드에서 커널 모드로 전환한다.
  • 이렇게 전환된 커널 모드에서 커널 쓰레드가 해당 인터럽트를 처리하고 필요한 작업을 수행한 후, 다시 유저 모드로 전환된다.

즉 모드 전환은 하드웨어와 운영체제의 조합으로 이루어지며, 명령어나 인터럽트 핸들러는 운영체제에 의해 관리되는 코드로서, 커널 모드에서 실행되는 특권 명령어를 사용하여 제어 레지스터를 조작한다.

유저 모드에서 시스템콜을 호출하면 인터럽트나 트랩이 발생을 하고 이 때 컨텍스트 스위칭이 발생을 하여 커널이 실행되는데, 커널이 특권 명령어를 사용하여 제어 레지스터를 조작하면 그 때 유저 모드에서 커널 모드로 바뀐다.

유저 모드 <-> 커널 모드

유저모드에서 커널 모드로 전환되는 경우는 시스템콜, 예외발생, 하드웨어 인터럽트가 발생할 때이다.

  1. 유저 모드에서 실행되는 응용 프로그램이 OS가 제공하는 서비스를 사용하기 위해 시스템콜을 호출하면 커널 모드로 전환된다. 커널 모드로 전환되면 다음과 같은 상황이 발생한다.
    • 커널 프로세스로 컨텍스트 스위칭이 발생한다.
    • 커널 코드가 실행된다.
  2. 필요한 작업이 수행되면 다시 유저 모드로 전환된다(다시 컨텍스트 스위칭 발생)

유저 모드에서 커널 모드로 전환하는 작업을 좀 더 자세하게 알아보면 실제로는 하드웨어의 도움을 받아 처리된다.

    1. 시스템콜 호출: 유저 프로세스가 시스템콜을 호출한다.
    1. 커널 모드 전환 요청: 시스템콜 호출로 유저 프로세스는 커널 모드로 전환되어야 함을 OS에게 알린다. 이는 특정한 인터럽트,트랩을 발생시켜 CPU에 알려주는 방식으로 이루어진다.
    1. 컨텍스트 스위칭: CPU는 인터럽트,트랩을 감지하고, 이를 처리하기 위해 컨텍스트 스위칭이 발생한다.
    1. 커널 모드에서의 처리: 커널 프로세스(쓰레드)가 시스템콜을 처리한고, 결과를 반환한다.
    1. 컨텍스트 복원: 시스템콜 처리가 완료되면, 컨텍스트 스위칭 이전에 저장된 유저 프로세스의 실행 상태를 복원하여 유저 모드로 다시 전환한다.
  • 요약: 시스템콜 호출로 인해 유저 모드에서 커널 모드로 전환되고, 이를 위해 하드웨어의 지원을 받아 컨텍스트 스위칭이 발생한다.

모드를 분리하는 이유

유저와 커널 모드를 분리하여, 보안과 시스템 리소스 관리를 한다. 시스템 리소스를 효율적으로 사용하고 CPU 효율을 높이기 위해서는 응용 프로세스의 리소스 사용 관리를 누군가 해야되는데, 그 역할을 하는 것이 OS이다.

커널 쓰레드

  • 커널 스레드는 커널 메모리 영역에서 생성, 관리, 실행되므로 일반적인 응용 프로세스의 스레드와는 구별된다.
  • 커널 쓰레드 각각은 Thead ID, PC, 레지스터 등의 실행 상태를 가지고, 커널 내부에서 스택 영역을 할당 받아 사용한다.

모놀리식 구조

특징

  • OS가 제공하는 서비스를 구현하는 기능들이 구분 없이 하나로 구성되어 있는 구조

장점

  • 기능들이 하나로 연결되어 있기 때문에 오버헤드가 발생하지 않는다.

단점

  • 복잡한 기능을 구현,수정, 유지보수 하기 어렵다.
  • 기능상의 작은 결함이 시스템 전체로 확산될 수 있다.

계층형 구조

특징

  • 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만든 구조
  • 계층 간의 통신을 통해 운영체제를 구현하는 구조

장점

  • 구현과 디버깅이 쉽다.
    - 어느 층의 디버깅 중 오류가 발견되면 그 하위의 층은 이미 디버깅되었기 때문에 오류는 반드시 그 층에 있다.
    • 따라서 시스템을 계층으로 나누면 시스템의 설계나 구현이 간단해진다.
  • 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다.

단점

  • 시스템콜이 호출되었을 때 위에서 아래로 호출되는 방식이기 때문에 오버헤드가 발생한다.
    - 각 층에서 매개 변수들이 변경된다든지, 데이터를 전달할 필요가 있다는지 하는 일이 있을 수 있다.
    • 각 층은 시스템콜에 오버헤드를 추가하여 다른 구조보다 실행 시간이 더 오래 걸릴 수 있다.

마이크로커널 구조

특징

  • 핵심 기능은 커널에서 담당하고, 나머지 기능들을 사용자 영역에 서버라고 불리는 독립된 프로세스로 구현하는 구조
    - 다른 커널 구조에 비해 운영체제의 많은 부분이 사용자 영역에 구현된다.
    • 커널은 프로세스 관리, 메모리 관리, 프로세스 간 통신관리 등 가장 기본적인 기능만 제공한다.

장점

  • 운영체제 서비스 확장이 쉽다.
    - 새로운 서비스는 유저 모드에 추가하면 되기 때문에 커널의 변경을 필요로 하지 않는다.
  • 커널이 가볍고 다른 컴퓨터에 이식하기 쉽다.
  • 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다.

단점

  • 서버 간 통신과 데이터 전달로 인한 오버헤드가 발생하여 전체적인 성능이 나빠질 수 있다.
  • 커널과 서버가 서로 통신해야 하므로 시스템의 복잡성이 증가한다.

현대 컴퓨터는 어떤 구조인데요

엄격하게 정의된 하나의 구조를 채택한 OS는 거의 존재하지 않는다.

다양한 구조를 결합하여 혼용 구조로 사용한다.

Linux, Solaris와 같은 운영체제는 운영체제 전부가 하나의 주소공간에 존재하는 모놀릭식 구조이지만, 모듈을 사용하기 때문에 새로운 기능을 동적으로 커널에 추가하는 구조이다.


부팅이 뭘까요

  • OS도 프로그램이고, 프로그램이 실행되려면 메모리에 적재되어야 한다.
  • OS를 메모리에 적재하고 실행하는 것

과정

  1. 컴퓨터 전원을 켜거나 재부팅을 할 때 명령 레지스터는 미리 지정된 메모리(EPROM) 위치를 가리키게 되고 그 곳에서부터 바이오스가 실행이 시작된다.
  2. 바이오스는 하드웨어를 점검 하고, 초기화한다.
  3. 바이오스는 마스터 부트 레코드(하드디스크의 첫번째 섹터(블록))를 읽어 메모리에 적재한다.
  4. 메모리에 부트스트랩 코드를 적재하고 실행하면 부트스트랩 프로그램이 실행되고
  5. 부트스트랩 프로그램(or 부트스트랩 로더)이 하드디스크에 있는 운영체제를 찾아 적재한다.
  6. 운영체제가 실행된다.

EPROM: 메인 보드에 있는 ROM

  • Erasable Programmable read-only memory
  • 쓰기 가능한 명령어가 주어지기 전에는 읽기 전용 상태를 유지한다
  • 하드웨어와 소프트웨어의 중간적 특성을 가지기 때문에 펌웨어라고 부른다.

0개의 댓글

관련 채용 정보