아이티센 조사 과제 - IT 기초, kernel이란?

김재현·2022년 9월 17일
0

아이티센 프로젝트

목록 보기
11/30

커널, kernel이란?

리눅스 커널이란

  • Linux의 운영 체제(OS)의 주요 구성 요소.
    컴퓨터 하드웨어 와 프로세스를 잇는 핵심 인터페이스이며, 두 가지 관리 리소스 사이에서 최대한 효과적으로 통신함.

커널의 기능

  1. 메모리 관리 : 메모리가 어디에서 무엇을 저장하는데 얼마나 사용되는지 추적.
  2. 프로세스 관리 : 어느 프로세스가 중앙처리장치(CPU)를 언제, 얼마나 사용할지 결정.
  3. 장치 드라이버 : 하드웨어-프로세스 사이에엇 중재자/인터프리터의 역할을 수행.
  4. 시스템 호출 및 보안 : 프로세스의 서비스 요청 수신.
  • 올바르게 구현된 커널은 사용자가 볼 수 없으며, 커널 공간이라는 자신만의 작업 공간에서 메모리를 할당, 저장되는 모든 항목을 추적한다.

커널의 위치

  • OS내에서 커널의 위치
  1. 하드웨어 : 시스템의 토대가 되는 물리적 머신. 메모리(RAM)와 프로세서 또는 중앙처리장치(CPU), 입출력 장치(예: 스토리지, 네트워킹 및 그래픽)로 구성.
    CPU는 계산을 수행하고 메모리를 읽고 씀.
  2. Linux 커널 : OS의 핵심. 메모리의 상주하며 CPU에 명령을 내리는 소프트웨어.
  3. 사용자 프로세스 : 실행 중인 프로그램으로 커널의 관리. 이것이 모여 사용자 공간을 구성한다.
  • 시스템에서 실행되는 코드는 커널 또는 사용자 모드라는 두 모드 중 하나로 CPU에서 실행됨.
    커널 모드 - 하드웨어에 무제한 액세스가 가능.
    사용자모드 - CPU 및 메모리가 SCI를 통해 액세스하는 것을 제한.
  • 위의 작은 세부 사항이 복잡한 작업의 토대가 되며, 이는 프로세스가 사용자 모드에서 실패할 경우 손상이 제한적이며 커널에 의해 복구될 수 있음을 의미한다. 그러나 커널 프로세스의 경우 충돌이 발생하면 시스템 전체가 중지될 수 있다.
  • 안전장치가 마련되어 있고, 경계를 넘기 위해서는 권한이 필요하기 때문에 사용자 프로세스 충돌은 일반적으로 커다란 문제를 유발하지는 않는다.

커널 파라미터

  • 리눅스에서 사용되는 시스템 변수.
    커널 변수 값을 제어하여 시스템을 운영 용도에 맞게 최적화 할 수 있다.
  • 경로는 /proc/sys 디렉토리 밑에 존재하며 절대경로의 수정을 통해 설정 변경이 가능하지만, sysctl을 통해 간편하게 설정할 수 있다.
  • 시스템을 관리하고 제어하며, 메모리와 프로세스에게 값을 할당한다.
  • 커널 파라미터의 값을 설정하는 이유는 커널 변수의 값을 제어하여 시스템을 제어할 수 있기 때문.

영구 설정

  1. 커널 파리미터 추가
# vi /etc/sysctl.conf
kernel.sysrq = 1
  1. 설정 적용
    # sysctl -p
  2. 추가 설정된 파라미터 적용 확인
# sysctl -a | grep kernel.sysrq
kernel.sysrq = 1

or 
# sysctl kernel.sysrq
kernel.sysrq = 1

자주 사용되는 커널 파라미터


참고 블로그
참고 블로그2

Linux 변경점

  • 종류와 버전 확인
# uname -a
  • 옵션
    • -a : 전체
    • -s : 커널명
    • -n : 호스트명
    • -r : 커널 릴리즈
    • -v : 커널 버전
    • -m : 머신

리눅스

  • 리눅스 커널 2.6.32
    • 시스템 성능 개선
      • 선점 형 동작 : 커널 동작 중에도 특정 시간 동안 어떤 프로세스가 디바이스를 점유할 것인지를 결정하는 I/O 스케줄러가 개선되어 한 프로세스가 너무 오래 대기하지 않도록 효율적으로 배분해 시스템에 부하가 많이 걸렸을 때도 사용자 입력에 대해 빠르게 응답함.
      • 하이퍼스레딩 : 하나의 CPU를 2개 이상의 CPU로 활용하는 기능. 부하를 분산하고 최적화.
      • 디바이스 정보
    • 서버 성능 향상
      • NUMA (Non-Uniform Memory Access) 지원
        : 커널 2.4까지는 여러 개의 CPU가 메모리를 사용할 겨웅 같은 주소에 메모리를 access하므로 병목현상이 발생함. 2.6에서는 위상 API 스케줄러를 통해 최대한 효율적으로 가까운 리소스를 활용함으로 병목현상을 없앴으며 비 연속적 메모리 사용이 가능함.
      • 커널에서 디바이스 지원 개수 증가
      • 모듈 서브 시스템의 안정성 향상
    • 데스크톱 성능 향상
      • 주변 장치의 지원과 하드웨어 호환성 향상
  • 리눅스 커널 4.15
    • 멜트다운/스펙터 (Meltdown/Spectre)
      • 멜트다운 : '비순차적 명령어 처리'기술의 버그를 악용한 보안 취약점. 보안을 위해 응용프로그램이 CPU의 캐시 메모리에 접근하지 못했던 기존 하드웨어 구조가 통째로 무너짐.
      • 스펙터 : CPU 속에 있는 수 많은 명령어에서 일어나는 버그를 악용한 보안 취약점. 멜트다운처럼 보안 구조가 통째로 무너지는 것은 아니지만, 처리 중인 데이터 가운데 일부가 해커에게 노출될 수 있음. 추적이 굉장히 어렵다.
      • 문제가 된 비순차적 명령어 처리 기술을 비활성화해 문제해결.
      • 참고
    • AMD amdgpu 드라이버 모드 설정 및 더 나은 디스플레이 지원
      • AMD가 최신 그래픽 하드웨어용으로 만든 새로운 드라이버인 amdgpu 드라이버에서 오랫동안 누락되었던 "디스플레이 코드"(132k LoC)가 마침내 포함됨.
    • SATA Link Power Management가 있느 시스템의 향상된 전원 관리
    • 새로운 아키텍처 : RISC-V
      • RISC-V CPU에 대한 포트의 주요 부분이 포함됨.
    • AMD 보안 암호화 가상화 지원
    • 사용자 모드 명령 방지 Intel Security 기능 지원
  • 리눅스 커널 5.4
    • 커널 lockdown 모드 추가.
      • lockdown모드 : 유저 프로세스와 커널을 분리, 루트 계정이 코널 코드를 수정하는 것을 방지하는 기능.
    • exFAT 파일 시스템 지원이 이제 커널단에서 이뤄져, exFAT으로 포맷된 드라이브 이용이 편리해짐.
    • AMD Navi 12/14 GPU, AMD Arcturus GPU, AMD Dali APU 지원
    • AMD뿐만 아니라 인텔 Tigerlake Gen12 그래픽 지원도 추가.
    • 가상화 업데이트
      • Red Hat Enterprise Linux 5.4는 x86_64 기반 아키텍처에서 KVM (Kernel-based Virtual Machine) 하이퍼바이저를 완전 지원

레드햇 계열

  • CentOS(Community ENTerprise Operating System)
    • Red Hat Enterprise Linux의 소스코드를 바탕으로 호환을 목표로 개발된 오픈 소스 Linux 배포판.
    • 64비트 x83 시스템 아키텍처만을 지원함.
      AWS 및 Google 클라우드에 대한 일반적인 초기 이미지도 제공.
  • 1) CentOS 6
    • 리눅스 커널 2.6.32 채택.
      커널 모드 디스플레이 드라이버 등이 크게 개선되었다.
    • 가상화 기술로 KVM이 도입됨.
  • 2) CentOS 7
    • System V init 대신 systemd를 채택. 기존의 init보다 더 많은 기능을 제공함. 부팅속도가 향상되었고, shell`s overhead 또한 감소.
    • 패킷 필터링을 관리하는 방화벽과 Network Manager도 본격적으로 도입됨.
    • 기본 파일 시스템이 xfs로 변화됨.
      • ext3에 비해 8배 많은 inode를 생성할 수 있다.
      • 메타데이터 저널링 및 빠른 복구 제공.
      • 파일 시스템 포맷이 타 시스템에 비해 압도적으로 빠름.
      • 동일 크기 파일 삭제 액션이 빠르다. 그러나, 대용량 위주의 시스템이기 때문에 작은 단위 파일처리에 대해서는 오히려 속도가 느림.
  • 3) CentOS 8
    • systemctl restart network명령으로 변경 사항을 반영할 수 없음.
    • 수명 종료, 및 CentOS Stream으로 변경됨.
    • 기본 패키지 매니지먼트가 yum에서 dnf로 변경됨. 여전히 yum을 사용할 수 있지만, dnf의 사용을 권장.
    • Python 3.6, MariaDB 10.3, MySQL 8.0, PostgreSQL 10, PostgreSQL 9.6, Redis 4.0 등을 기본 지원
    • GNOME의 버전이 GNOME 3.28로 업그레이드
    • 기본 디스플레이 서버가 Xorg에서 Wayland로 변경
    • Cockpit이라고도 하는 RHEL 8 웹 콘솔을 사용하여 가상 머신을 생성하고 관리할 수 있음
    • QEMU 에뮬레이터에서 샌드박스 기술이 도입되어 가상 머신의 보안이 강화됨.

데비안 계열

  • Ubuntu
  • LTS : Long Term Support, 장기간의 사후지원 기능.
    2년에 한 번 씩 출시되며, 짝수 년도 4월 버전이 LTS 버전이다. 지원 기간은 5년이다.
  • 1) Ubuntu 12.04 LTS
    • 유니티 5.0 탑재.
      • Lens Quictlists로 빠른 탐색 가능.
    • CCSM에 추가항목 탑재
    • Unity Greeter의 업데이트로 로그인 배경화면 지정 가능
    • 소프트웨어 센터 속도 개선
    • 리듬박스가 다시 기본 음악 플레이어가 되고, 톰보이와 gBrainy가 기본 설치되지 않음.
    • libreoffice 3.5 베타 2 설치
    • 'Apport' Crash reporting 기본 사용가능.
  • 2) 우분투 트러스티(TRUSTY) 14.04 LTS
    • 가장 안정적인 버전.
      기존의 오류가 대부분 픽스되어 배포되었다.
  • 3) 우분투 Xenial 16.04 LTS
    • 소프트웨어 센터 변경
      우분투 소프트웨어 센터를 삭제하고 GNOME 소프트웨어 센터를 설치하여 이전에 비해 앱스토어나 플레이스토어 같이 구성이 변경됨.
      설정에 있던 업데이트가 소프트웨어 센터 안으로 옮겨졌으며 전체적으로 시인성이 강화됨.
    • 한/영키를 제대로 지원.
    • AMD 라데온이나 APU를 사용하고 있는 경우 드라이버를 지원하지 않으므로 직접 설치해야함.
  • 4) Ubuntu 18.04
    • Xorg가 기본 디스플레이 서버가 됨.
    • 리눅스 커널 4.15 지원.
    • Dock을 제거하는 기능은 없다.
    • Python2가 사전 설치 되어 있다.
    • PHP는 7.3 버전
  • 5) Ubuntu 20.04
    • Xorg가 기본 디스플레이 서버.
    • 리눅스 커널 5.4를 지원하며, 기본 ExFAT 지원 및 기타 성능이 향상됨.
    • 32비트 지원 시스템이 없다.
    • 시각적인 개선.
    • Extensions 응용 프로그램을 사용해 Dock을 제거할 수 있음.
    • 설치시간과 부팅시간 개선
    • 기본적으로 Python3.
    • PHP 7.4는 기본 설치 가능 버전입니다.
  • 6) Ubuntu 22.04
    • GNOME 42 사용으로 인한 시각적 변화.
    • Grub 부트로더 2.06 버전 사용. 기본적으로 os-prover 기능이 비활성화되어 있다.
    • 새로운 펌웨어 업데이터 앱.
    • 새로운 설치 프로그램
    • Raspberr Pi에 대한 향상된 지원
    • Wayland를 기본 디스플레이 서버로 사용.
    • 새로운 수평 작업 공간 전환기와 앱을 재정렬할 수 있는 수평 앱 실행기 지원.
    • Active Directory에 대한 많은 지원과 방화벽 백엔드.

1
2
3
4

0개의 댓글