Linux kernel
This presentation is the property of its rightful owner.
Sponsored Links
1 / 24

리눅스 커널 PowerPoint PPT Presentation


  • 57 Views
  • Uploaded on
  • Presentation posted in: General

Linux kernel. 리눅스 커널. Kernel. 리눅스 커널 개요 운영체제 Operating System 에서 Kernel 은 운영체제의 핵심 사용해야할 시스템 자원을 관리해주는 기능 안드로이드가 적용되면서 기본적인 커널에 추가적인 기능이 포함됨 기존 리눅스 커널

Download Presentation

리눅스 커널

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


6260783

Linux kernel

리눅스커널


Kernel

Kernel

  • 리눅스커널 개요

    • 운영체제

      • Operating System에서 Kernel은 운영체제의 핵심

      • 사용해야할 시스템 자원을 관리해주는 기능

      • 안드로이드가 적용되면서 기본적인 커널에 추가적인 기능이 포함됨

      • 기존 리눅스커널

        • 프로세스 관리- 하나의 프로그램은 하나 이상의 프로세스를 가질 수 있다.- 커널은 해당 프로세스가 시스템 자원을 분배하고, 다른 자원을 침해할 수 없도록 관리- 프로세스의 생성과 소멸에대한 전반적인 내용을 관리한다.

        • 메모리 관리- 시스템에서 구동되는 프로세스는 프로세스만의 독립적인 메모리를 갖는다.- 리눅스는 물리메모리에 집접적으로 데이터를 기록하는 것을 허용하지 않는다.- 반환된 메모리의 관리등과 같은 기능을 수행


Kernel1

Kernel

  • 파일시스템 관리- 리눅스는 범용운영체제로 다양한 파일시스템을 지원- 리눅스에서 모든 장치는 파일로 표현된다.- CDFS, FAT, JFFS, YAFFS, FAT16/32, EXT3/4, NTFS등을 지원

  • 디바이스 관리- 부트로더에서 초기화된 이후 모든 디바이스는 커널의 관리를 받는다.- 응용 프로그램에서 디바이스를 이용해야 하는 경우 커널을 통해야만 제어가 가능하다.- 사용하고자 하는 장치 드라이버에 따라서 문자, 블록 방식으로 나뉘게 된다.

  • 네트워크 관리- 커널은 기기와 외부시스템이 정상적인 네트워크를 통해서 통신할 수 있도록 한다.- IPv4, IPv6, Ethernet, ATM, CDMA등이 지원된다.

  • 커널Diagram


  • Kernel2

    Kernel

    • 커널 소스 디렉터리 구조

      • arch 프로세서종류에 의존적인 부분(arch/i386, arch/alpha, arch/arm… )

        ▪ arch/arm/boot/ : 부트 스트랩 코드의 내용

        ▪ arch/arm/kernel/ : 하드웨어 의존적인 커널 관리 루틴, Trap과 인터럽트 처리 루틴, 문맥전환(Context Switching) 루틴, 장치 설정과 초기화 루틴

        ▪ arch/arm/mm/ : 하드웨어 의존적인 메모리 관리 루틴

      • init ▪ 하드웨어 비 의존적 커널 초기화 (start_kernel)


    Kernel3

    Kernel

    • kernel ▪ 리눅스커널의 중요 부분

      ▪ 하드웨어 비의존적인 커널 관리 루틴

      ▪ 태스크(fork, exit) 관련 시스템 호출 처리 루틴

      ▪ 스케줄러, 시그널 핸들링, 시간 관리 루틴

    • mm▪ 하드웨어 비의존적인 메모리 관리 루틴▪ 가상 메모리 관리▪ 페이징 기법, 스와핑 기법

    • fs▪ 가상 파일 시스템 관리▪ 파일시스템 관련 시스템 콜(open, read...) 루틴

    • ipc▪ 프로세스간 통신(Inter Process Communication)▪ 세마포어, 공유메모리, 메시지 큐

    • drvier디바이스 드라이버 루틴- drivers/block/ : 블록 디바이스- drivers/char/ : 문자 디바이스 - drivers/net : 네트워크 디바이스- drivers/pci/ : PCI 버스 컨트롤러- drivers/sound/ : 사운드 카드- drivers/cdrom/ : CD-ROM 드라이버- drivers/scsi/ : SCSI 장치 드라이버

    • Net▪ 네트워크 관련 프로토콜과 드라이버Network protocols : TCP/IP, ARP등(device driver는 driver/net에 존재)▪ Socket interface


    Kernel4

    Kernel

    • include▪ 커널을 위한 헤더파일- include/linux/ : 하드웨어 비의존적인 헤더 파일- include/asm-***/ : 하드웨어 의존적인 헤더 파일

    • modules▪ 커널 모듈 루틴▪ 모듈의 동적 등록과 제거를 위한 부분 (insmod, modprobe, rmmod등)

    • lib▪ 커널 라이브러리 루틴

    • doc▪ 커널관련 문서

  • 안드로이드를 위한 리눅스커널

    안드로이드에서 사용이 가능하도록 기능이 확장된 리눅스커널

    • 확장된 기능


  • Kernel5

    Kernel


    Kernel6

    Kernel

    • Open Binder

      • Component-based 시스템 레벨 디자인을 지원할 수 있도록 설계됨

      • 기존 IPC의 보안이슈와 오버헤드 이슈를 개선

      • 바인더는 커널에서 구동 되는 것이 아니라 바인더라는 서비를 통해서 사용한다.

      • 서로다른 서비스 혹은 응용간 데이터를 주고 받을 때 이용

      • 각 서비스는 독립적인 바인더를 가지고 있어야 하지만 가로챔을 당하지 않는 장점이 있다.

      • Binder는 ParlmOS에 처음 적용되었으며 해당 라이선스도 해당사에서 가지고 있다.

      • Binder는 스레드 풀을 유지한다.

        자료 요청 이전에 미리 자료를 구조화 시키며, 빠른 시간내에 연결이 가능

        여러 개의 프로세스가 이용하는 하나의 서비스가 있다면 모든 서비스가 종료될 때 해제됨

      • Open Binder의 특징


    Kernel7

    Kernel

    • Open Binder의 기본 동작

    • Open Binder의 동작 메커니즘

    Binder의

    각 Process는 libutil.lib를 호출함으로서 통신이 이루어지며, 실제 통신에서는 커널 영역의 공유 메모리를 사용하게 된다.

    Service Manager는 Process communication이 필요한 두개의process에 서비스를 시작하게 해주는 deamon processor

    각 Process는 libutil.lib를 호출함으로서 통신이 이루어지며, 실제 통신에서는 커널 영역의 공유 메모리를 사용하게 된다.


    Kernel8

    Kernel

    • Low Memory Killer

      • 메모리 고갈 상태에서 Out Of Memory (OOM) 발생 시키않는 방법

      • 프로세스를 중요도에 따라 메모리에서 제거하는 방법

      • Lowmem_shrink함수를 이용

        메모리 부족현상 발생시 lowmem_shrink함수를 이용 연결리스트로 되어있는 프로스를 검색

        제거해야될 프로세스가 있는경우SIGKILL을 전송

    • 프로세스의 우선순위

      사용하고 있는 프로세스는 각 프로세스의 상태에 따라서 우선순위가 결정된다.

      메모리가 부족한 현상이 발생하게 될 때, 우선순위가 낮은 프로세스 부터 제거된다.

      ForegroundProcess > Visible Process > Service Process > Background Process > Empty Process


    Kernel9

    Kernel

    • 활성프로세스 (Foreground)

      • 사용자와 상호작용을 하고 있는 최상위의 액티비티나 수행중인 인텐트 리시버를 소유하는 프로세스

      • 현재 프로세스가 실행될 수 없는 최악의 메모리 부족 상태에서만 종료됨

    • 화면에 보이는 프로세스 (Visiable)

      • 화면상에 표시되지만 foreground 상태가 아닌 Activiry를 소유한 프로세스

      • 기기의화면에 표시되지만 사용자와 인터페이스를 하지 못하는 경우.

        현재 실행 화면위에 다이얼로그가 표시되어 인터페이스를 하는 경우

      • 해당 프로세스가 수행하지 않을 때까지 수행됨

    • 시작된 서비스 프로세스

      • SstartService() 메서드를 이용하여 Service를 점유하고 있는 프로세스

      • 사용자에게 직접적으로 표시되지 않음

      • Foreground와 visable프로세서가 수행되기 충분한 메모리가 존재하는한 스스로 실행 상태를 유지

    • 백그라운드 프로세서(Background)

      • 사용자에게현재 보이지 않는 Activity를 소유한 프로세스

      • 백그라운드 프로세스는 사용자에게 어떠한 영향도 미치지 않음

      • Foreground, Visiable, Service 프로세서에서 메모리 요청이 있을 경우 프로세스를 종료

    • 빈 프로세스(Empty)

      • 활성화된애플리케이션 컴포넌트를 점유하지 않는 프로세스

      • 안드로이드에서 어플리케이션을 실행하는데 시동시간을 개선하기 위한 캐시로 사용됨

      • 안드로이드는 전반적인 시스템 균형을 유지하기 위해 empty 프로세스를 간혹 종료시킴


    Kernel10

    Kernel

    • Android Power Management

      Android PM은 전통적인 리눅스PM에 기반을 둔다

      • Wakelock

        • 안드로이드커널에 추가됨

        • Suspend로 넘어가기 이전에 Driver 및 Application이현재 수행하는 작업을 마칠 수 있도록 기회를 줌

      • 커널에 추가된 내용

      • 지원하는기능


    Kernel11

    Kernel

    • Android Power Management Process


    Kernel12

    Kernel

    • 리눅스커널 설치

      리눅스커널 소스를 컴파일하여, MicroSD에 설치하여 Achro-4210에서 커널을 사용할 수 있도록 설치

      • 커널 소스 준비

        • 커널 소스를 복사하여 압축을 해제한다.

      • 커널 컴파일 준비

        • Makefile수정

        • 수정 내용

          커널 컴파일에 사용하는 크로스 컴파일러의 경로를 지정한다.


    Kernel13

    Kernel

    • Achro-4210 기본 설정

      • 기존 커널 설정 삭제

      • Achro-4210 초기 설정 적용

        커널 소스 디렉터리/arch/arm/config에 achro4210_defconfig 파일을 적용한다.

    • 커널 컴파일

      커널을 컴파일 하여 부팅 가능한 커널 이미지를 생성한다. 컴파일이 완료되면 커널 소스 디렉터리의

      arch/arm/boot디렉터리에 zImage파일이 생성된다.

  • 커널 기록

    • 미니컴 실행

    • Achro4210의 시리얼포트와 Host Linux의

      시리얼 포트 연결

    • Achro-4210의 전원 인가


  • Kernel14

    Kernel

    • 부트로더에서dnw명령을 이용하여 usb수신 준비

      USB를 통해서 보드의 메모리에 다운로드 받는다.

    • Host Linux의 커널 이미지가 있는 디렉터리에서 smdk-usbdl을 이용하여 보드로 전송

    • 부트로더에서movi write를 이용하여 메모리로 전송된 커널이미지를microSD에 기록


    Kernel15

    Kernel

    • Reset을 이용해서 리부팅 한다

      리부팅을 하게 되면 커널이 메모리에 로드되고 난 이후에 커널패닉이 발생한다. 이는 정상적인 동작으로

      리눅스가 최종 부팅을 하게 되면 리눅스 루트 파일 시스템을 마운트 하게 되는데 리눅스 부팅 후 사용해야될

      루트파일 시스템이 없으므로커널패닉이 발생하게 된다.


    6260783

    Linux File System

    리눅스 파일시스템


    Linux file system

    Linux File System

    • 리눅스 파일 시스템

      • 리눅스 파일 시스템 개요

        • Root file system이란 “/”에 마운트 되는 file system

        • 시스템에서 요구하는 기본적인 라이브러리등을 포함

          glibc, uclibc, libc등과 같은 필수라이브러리와 tslib등과 같은 부가적인 라이브러리등이 포함

        • 리눅스 시스템을 사용하기 위해서 필요한 유틸리티를 포함

        • 임베디드리눅스에서 사용하는 대부분의 명령은 busybox를 통해서 사용

        • 리눅스부팅과 운용에 필요한 설정 파일등이 존재 (/etc)

        • 디바이스 접근에 필요한 노드 파일 위치 (/dev)

      • 일반적인 리눅스 파일 시스템의 형태


    Linux file system1

    Linux File System

    • 리눅스 파일 시스템의 구성

      • /dev

        • /dev디렉터리는 시스템이 사용하는 모든 디바이스들 각각에 대응하는 특수파일들이 위치

        • /dev디렉터리는 모든 리눅스 시스템에 반드시 있어야 하는 부분

        • /dev디렉터리 자체는 보통의 디렉터리와 다를 바 없으므로 ‘mkdir’ 명령어로 생성

        • /dev디렉터리 내에 파일들만은 특수한 파일이므로 ‘mknod’ 명령을

      • /etc

        • /etc디렉터리에는 설정파일이위치

          • rc.d/* : 시스템 기동 관련 스크립트가 위치

          • init.d: rc.d/*의 스크립트들은 init.d/*에 soft link 되어있거나 init.d에 스크립트로 되어 있음


    Linux file system2

    Linux File System

    • fstab

      마운트될 파일 시스템의 리스트

    • Passwd

      모든 사용자 계정의 암호 파일

    • group

      사용자 그룹들

    • shadow

      사용자의 패스워드 passwd의 보안상 허점을 보완하기 위한 파일로 root 사용자만이 읽을수 있다.

    • network

      네트워크 설정 파일

    • udev

      udev관련 설정 파일

    • inittab

      init프로세스에 대한 파라미터들이 담겨 있으며 init는 부팅 후 맨 처음 실행

    • 되는 프로세스

  • /proc

    • 커널과 프로세스 정보를 위한 가상 파일시스템이다.

    • /proc를 사용하여 다음과 같은 일을 할 수 있다.

    • 통계적 정보를 보는 것

    • 하드웨어 정보 알아내기

    • 런타임 파라메터 수정하기

    • 네트워크와 호스트 파라메터 보기 및 수정

    • 메모리와 수행능력에 관한 정보 .


  • Linux file system3

    Linux File System

    • /bin, sbin

      • 대부분 BusyBox로 구성되어있으며 필요한 다른 binary tools도 추가되어 있다.

      • BusyBox는 여러 리눅스의utility를 포함하는 대신 많은 공간을 절약

      • utility를 포함하느냐에 적은 용량으로 거의 대부분의 리눅스 명령어를 사용할 수 있다.

    • /lib

      • 표준 C라이브러리를 포함한 여러 가지 라이브러리들이 위치

      • 사용자가 추가한 라이브러리는 /usr디렉터리 내에 lib를 추가하는 것이 일반적

      • lib디렉터리에 추가하는 경우고 종조 있다.

    • /mnt

      • 마운트를 위한 디렉터리들이 위치

      • 내부 디렉터리로는 nfs, mtd, nand, usbdisk과 같은 디렉터리가 있으며, 사용자에 의해서 생성되는

        마운트위치가포함

    • /tmp, var

      • 임시 저장 디렉터리로서 var은 시스템의 로그, 임시 구성 파일을 저장하는데 사용

    • /usr

      • 각종 어플리케이션이 설치되어 있는 디렉터리

      • 바이너리 파일, 라이브러리 파일, X 윈도우 등등 여러가지 파일들로 구성.


    Linux file system4

    Linux File System

    • 리눅스 파일 시스템 설치

      • 리눅스 파일 시스템 설치 준비

      • 압축해제

      • 리눅스 파일 시스템 설치

        • Achro-4210의 전원을 끄고, MicroSD를 리눅스 호스트에 연결

        • 호스트에 연결이되면, 리눅스에 자동으로 /media/Achro4210_system 디렉터리가 생성됨

        • 파일 시스템 압축을 해제한 디렉터리로 이동


    Linux file system5

    Linux File System

    • 전체 파일을 /media/Achro4210_System 디렉터리로 복사

    • 복사가 완료되면 연결을 해제

    • 미니컴을 실행

      Achro4210의 시리얼포트와 호스트 리눅스의 시리얼포트를 연결

    • 연결이 해제되면 MicroSD카드를 Achro4210에 넣고 전원 인가

      정상적으로 파일 시스템이 설치되었다면 login : 문구가 출력됨

    • 로그인

      log in이 출력되면 root라고 입력하면 리눅스로로그인됨.


  • Login