1 / 24

리눅스 커널

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

Télécharger la présentation

리눅스 커널

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linux kernel 리눅스커널

  2. Kernel • 리눅스커널 개요 • 운영체제 • Operating System에서 Kernel은 운영체제의 핵심 • 사용해야할 시스템 자원을 관리해주는 기능 • 안드로이드가 적용되면서 기본적인 커널에 추가적인 기능이 포함됨 • 기존 리눅스커널 • 프로세스 관리- 하나의 프로그램은 하나 이상의 프로세스를 가질 수 있다.- 커널은 해당 프로세스가 시스템 자원을 분배하고, 다른 자원을 침해할 수 없도록 관리- 프로세스의 생성과 소멸에대한 전반적인 내용을 관리한다. • 메모리 관리- 시스템에서 구동되는 프로세스는 프로세스만의 독립적인 메모리를 갖는다.- 리눅스는 물리메모리에 집접적으로 데이터를 기록하는 것을 허용하지 않는다.- 반환된 메모리의 관리등과 같은 기능을 수행

  3. Kernel • 파일시스템 관리- 리눅스는 범용운영체제로 다양한 파일시스템을 지원- 리눅스에서 모든 장치는 파일로 표현된다.- CDFS, FAT, JFFS, YAFFS, FAT16/32, EXT3/4, NTFS등을 지원 • 디바이스 관리- 부트로더에서 초기화된 이후 모든 디바이스는 커널의 관리를 받는다.- 응용 프로그램에서 디바이스를 이용해야 하는 경우 커널을 통해야만 제어가 가능하다.- 사용하고자 하는 장치 드라이버에 따라서 문자, 블록 방식으로 나뉘게 된다. • 네트워크 관리- 커널은 기기와 외부시스템이 정상적인 네트워크를 통해서 통신할 수 있도록 한다.- IPv4, IPv6, Ethernet, ATM, CDMA등이 지원된다. • 커널Diagram

  4. Kernel • 커널 소스 디렉터리 구조 • arch 프로세서종류에 의존적인 부분(arch/i386, arch/alpha, arch/arm… ) ▪ arch/arm/boot/ : 부트 스트랩 코드의 내용 ▪ arch/arm/kernel/ : 하드웨어 의존적인 커널 관리 루틴, Trap과 인터럽트 처리 루틴, 문맥전환(Context Switching) 루틴, 장치 설정과 초기화 루틴 ▪ arch/arm/mm/ : 하드웨어 의존적인 메모리 관리 루틴 • init ▪ 하드웨어 비 의존적 커널 초기화 (start_kernel)

  5. 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

  6. Kernel • include▪ 커널을 위한 헤더파일- include/linux/ : 하드웨어 비의존적인 헤더 파일- include/asm-***/ : 하드웨어 의존적인 헤더 파일 • modules▪ 커널 모듈 루틴▪ 모듈의 동적 등록과 제거를 위한 부분 (insmod, modprobe, rmmod등) • lib▪ 커널 라이브러리 루틴 • doc▪ 커널관련 문서 • 안드로이드를 위한 리눅스커널 안드로이드에서 사용이 가능하도록 기능이 확장된 리눅스커널 • 확장된 기능

  7. Kernel

  8. Kernel • Open Binder • Component-based 시스템 레벨 디자인을 지원할 수 있도록 설계됨 • 기존 IPC의 보안이슈와 오버헤드 이슈를 개선 • 바인더는 커널에서 구동 되는 것이 아니라 바인더라는 서비를 통해서 사용한다. • 서로다른 서비스 혹은 응용간 데이터를 주고 받을 때 이용 • 각 서비스는 독립적인 바인더를 가지고 있어야 하지만 가로챔을 당하지 않는 장점이 있다. • Binder는 ParlmOS에 처음 적용되었으며 해당 라이선스도 해당사에서 가지고 있다. • Binder는 스레드 풀을 유지한다. 자료 요청 이전에 미리 자료를 구조화 시키며, 빠른 시간내에 연결이 가능 여러 개의 프로세스가 이용하는 하나의 서비스가 있다면 모든 서비스가 종료될 때 해제됨 • Open Binder의 특징

  9. Kernel • Open Binder의 기본 동작 • Open Binder의 동작 메커니즘 Binder의 각 Process는 libutil.lib를 호출함으로서 통신이 이루어지며, 실제 통신에서는 커널 영역의 공유 메모리를 사용하게 된다. Service Manager는 Process communication이 필요한 두개의process에 서비스를 시작하게 해주는 deamon processor 각 Process는 libutil.lib를 호출함으로서 통신이 이루어지며, 실제 통신에서는 커널 영역의 공유 메모리를 사용하게 된다.

  10. Kernel • Low Memory Killer • 메모리 고갈 상태에서 Out Of Memory (OOM) 발생 시키않는 방법 • 프로세스를 중요도에 따라 메모리에서 제거하는 방법 • Lowmem_shrink함수를 이용 메모리 부족현상 발생시 lowmem_shrink함수를 이용 연결리스트로 되어있는 프로스를 검색 제거해야될 프로세스가 있는경우SIGKILL을 전송 • 프로세스의 우선순위 사용하고 있는 프로세스는 각 프로세스의 상태에 따라서 우선순위가 결정된다. 메모리가 부족한 현상이 발생하게 될 때, 우선순위가 낮은 프로세스 부터 제거된다. ForegroundProcess > Visible Process > Service Process > Background Process > Empty Process

  11. Kernel • 활성프로세스 (Foreground) • 사용자와 상호작용을 하고 있는 최상위의 액티비티나 수행중인 인텐트 리시버를 소유하는 프로세스 • 현재 프로세스가 실행될 수 없는 최악의 메모리 부족 상태에서만 종료됨 • 화면에 보이는 프로세스 (Visiable) • 화면상에 표시되지만 foreground 상태가 아닌 Activiry를 소유한 프로세스 • 기기의화면에 표시되지만 사용자와 인터페이스를 하지 못하는 경우. 현재 실행 화면위에 다이얼로그가 표시되어 인터페이스를 하는 경우 • 해당 프로세스가 수행하지 않을 때까지 수행됨 • 시작된 서비스 프로세스 • SstartService() 메서드를 이용하여 Service를 점유하고 있는 프로세스 • 사용자에게 직접적으로 표시되지 않음 • Foreground와 visable프로세서가 수행되기 충분한 메모리가 존재하는한 스스로 실행 상태를 유지 • 백그라운드 프로세서(Background) • 사용자에게현재 보이지 않는 Activity를 소유한 프로세스 • 백그라운드 프로세스는 사용자에게 어떠한 영향도 미치지 않음 • Foreground, Visiable, Service 프로세서에서 메모리 요청이 있을 경우 프로세스를 종료 • 빈 프로세스(Empty) • 활성화된애플리케이션 컴포넌트를 점유하지 않는 프로세스 • 안드로이드에서 어플리케이션을 실행하는데 시동시간을 개선하기 위한 캐시로 사용됨 • 안드로이드는 전반적인 시스템 균형을 유지하기 위해 empty 프로세스를 간혹 종료시킴

  12. Kernel • Android Power Management Android PM은 전통적인 리눅스PM에 기반을 둔다 • Wakelock • 안드로이드커널에 추가됨 • Suspend로 넘어가기 이전에 Driver 및 Application이현재 수행하는 작업을 마칠 수 있도록 기회를 줌 • 커널에 추가된 내용 • 지원하는기능

  13. Kernel • Android Power Management Process

  14. Kernel • 리눅스커널 설치 리눅스커널 소스를 컴파일하여, MicroSD에 설치하여 Achro-4210에서 커널을 사용할 수 있도록 설치 • 커널 소스 준비 • 커널 소스를 복사하여 압축을 해제한다. • 커널 컴파일 준비 • Makefile수정 • 수정 내용 커널 컴파일에 사용하는 크로스 컴파일러의 경로를 지정한다.

  15. Kernel • Achro-4210 기본 설정 • 기존 커널 설정 삭제 • Achro-4210 초기 설정 적용 커널 소스 디렉터리/arch/arm/config에 achro4210_defconfig 파일을 적용한다. • 커널 컴파일 커널을 컴파일 하여 부팅 가능한 커널 이미지를 생성한다. 컴파일이 완료되면 커널 소스 디렉터리의 arch/arm/boot디렉터리에 zImage파일이 생성된다. • 커널 기록 • 미니컴 실행 • Achro4210의 시리얼포트와 Host Linux의 시리얼 포트 연결 • Achro-4210의 전원 인가

  16. Kernel • 부트로더에서dnw명령을 이용하여 usb수신 준비 USB를 통해서 보드의 메모리에 다운로드 받는다. • Host Linux의 커널 이미지가 있는 디렉터리에서 smdk-usbdl을 이용하여 보드로 전송 • 부트로더에서movi write를 이용하여 메모리로 전송된 커널이미지를microSD에 기록

  17. Kernel • Reset을 이용해서 리부팅 한다 리부팅을 하게 되면 커널이 메모리에 로드되고 난 이후에 커널패닉이 발생한다. 이는 정상적인 동작으로 리눅스가 최종 부팅을 하게 되면 리눅스 루트 파일 시스템을 마운트 하게 되는데 리눅스 부팅 후 사용해야될 루트파일 시스템이 없으므로커널패닉이 발생하게 된다.

  18. Linux File System 리눅스 파일시스템

  19. Linux File System • 리눅스 파일 시스템 • 리눅스 파일 시스템 개요 • Root file system이란 “/”에 마운트 되는 file system • 시스템에서 요구하는 기본적인 라이브러리등을 포함 glibc, uclibc, libc등과 같은 필수라이브러리와 tslib등과 같은 부가적인 라이브러리등이 포함 • 리눅스 시스템을 사용하기 위해서 필요한 유틸리티를 포함 • 임베디드리눅스에서 사용하는 대부분의 명령은 busybox를 통해서 사용 • 리눅스부팅과 운용에 필요한 설정 파일등이 존재 (/etc) • 디바이스 접근에 필요한 노드 파일 위치 (/dev) • 일반적인 리눅스 파일 시스템의 형태

  20. Linux File System • 리눅스 파일 시스템의 구성 • /dev • /dev디렉터리는 시스템이 사용하는 모든 디바이스들 각각에 대응하는 특수파일들이 위치 • /dev디렉터리는 모든 리눅스 시스템에 반드시 있어야 하는 부분 • /dev디렉터리 자체는 보통의 디렉터리와 다를 바 없으므로 ‘mkdir’ 명령어로 생성 • /dev디렉터리 내에 파일들만은 특수한 파일이므로 ‘mknod’ 명령을 • /etc • /etc디렉터리에는 설정파일이위치 • rc.d/* : 시스템 기동 관련 스크립트가 위치 • init.d: rc.d/*의 스크립트들은 init.d/*에 soft link 되어있거나 init.d에 스크립트로 되어 있음

  21. Linux File System • fstab 마운트될 파일 시스템의 리스트 • Passwd 모든 사용자 계정의 암호 파일 • group 사용자 그룹들 • shadow 사용자의 패스워드 passwd의 보안상 허점을 보완하기 위한 파일로 root 사용자만이 읽을수 있다. • network 네트워크 설정 파일 • udev udev관련 설정 파일 • inittab init프로세스에 대한 파라미터들이 담겨 있으며 init는 부팅 후 맨 처음 실행 • 되는 프로세스 • /proc • 커널과 프로세스 정보를 위한 가상 파일시스템이다. • /proc를 사용하여 다음과 같은 일을 할 수 있다. • 통계적 정보를 보는 것 • 하드웨어 정보 알아내기 • 런타임 파라메터 수정하기 • 네트워크와 호스트 파라메터 보기 및 수정 • 메모리와 수행능력에 관한 정보 .

  22. 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 윈도우 등등 여러가지 파일들로 구성.

  23. Linux File System • 리눅스 파일 시스템 설치 • 리눅스 파일 시스템 설치 준비 • 압축해제 • 리눅스 파일 시스템 설치 • Achro-4210의 전원을 끄고, MicroSD를 리눅스 호스트에 연결 • 호스트에 연결이되면, 리눅스에 자동으로 /media/Achro4210_system 디렉터리가 생성됨 • 파일 시스템 압축을 해제한 디렉터리로 이동

  24. Linux File System • 전체 파일을 /media/Achro4210_System 디렉터리로 복사 • 복사가 완료되면 연결을 해제 • 미니컴을 실행 Achro4210의 시리얼포트와 호스트 리눅스의 시리얼포트를 연결 • 연결이 해제되면 MicroSD카드를 Achro4210에 넣고 전원 인가 정상적으로 파일 시스템이 설치되었다면 login : 문구가 출력됨 • 로그인 log in이 출력되면 root라고 입력하면 리눅스로로그인됨.

More Related