목차 운영체제운영체제종류실시간시스템임베디드운영체제임베디드운영체제의개념임베디드리눅스리눅스리눅스부팅과정리눅스디렉토리구조리눅스디렉토리설명리눅스파일시스템리눅스소프트웨어패키지리눅스컴파일러 1

Similar documents
Microsoft PowerPoint - em8-리눅스설치.ppt

Microsoft PowerPoint - Introduction.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx

ESP1ºÎ-04

슬라이드 제목 없음

Microsoft PowerPoint - 03-Development-Environment-2.ppt

Chapter. 5 Embedded System I Bootloader, Kernel, Ramdisk Professor. Jaeheung, Lee

untitled

6주차.key

Microsoft PowerPoint - Building.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Abstract View of System Components

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

<4D F736F F F696E74202D20322DBDC7BDC3B0A320BFEEBFB5C3BCC1A6>

Sena Technologies, Inc. HelloDevice Super 1.1.0

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PowerPoint 프레젠테이션

untitled

PowerPoint 프레젠테이션

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

<3032B0AD202D20B8AEB4AABDBA20BCB3C4A12D556E6978C0CEC5CDB3DDBAB8C3E6C7D0BDC02E687770>

Adobe Flash 취약점 분석 (CVE )

Abstract View of System Components

Microsoft PowerPoint EmbedSW-Host

Microsoft PowerPoint - 06-CompSys-11-System.ppt

PowerPoint 프레젠테이션

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

기술 이력서 2.0

PowerPoint 프레젠테이션

KEY 디바이스 드라이버

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft PowerPoint - 리눅스부팅과정.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Solaris Express Developer Edition

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Mango220 Android How to compile and Transfer image to Target

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

PowerPoint 프레젠테이션

초보자를 위한 C++

GNU/Linux 1, GNU/Linux MS-DOS LOADLIN DOS-MBR LILO DOS-MBR LILO... 6

슬라이드 1

PowerPoint 프레젠테이션

APOGEE Insight_KR_Base_3P11

Microsoft PowerPoint - 02-Development-Environment-1.ppt

DE1-SoC Board

슬라이드 1

YUM(Yellowdog Updater,Modified) : RPM 패키지가저장된서버 ( 저장소 ) 로부터원하는패키지를자동으로설치한다. : YUM 도구는 RPM 의패키지의존성문제를해결

PCServerMgmt7

슬라이드 1

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

Copyright 2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A..,,. Sun. Sun. Berkeley BSD. UNIX X/Open Company, Ltd.. Sun, Su

리눅스 프로세스 관리

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

untitled

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - ARM 개발 환경.ppt

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

Microsoft PowerPoint - chap-02.pptx

망고100 보드로 놀아보자 -13

PowerPoint 프레젠테이션

Chapter #01 Subject

망고100 보드로 놀아보자-4

망고100 보드로 놀아보자 -10

서현수

제11장 프로세스와 쓰레드

임베디드시스템설계강의자료 2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

컴퓨터관리2번째시간

리눅스커널구조개요 Linux kernel Internals 김영진 아주대학교전자공학과

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

Microsoft Word - 임베디드월드_WindowsEmbeddedCompact7_rev

Unix & Linux 개요 Company 서울대학교통계학과 2010년 2학기컴퓨터의개념및실습 ( Thanks to: cancho & facewhite from SPARC/KAIST, Bruce La Plante fro

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

문서 대제목

Microsoft PowerPoint - 알고리즘_1주차_2차시.pptx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

System Programming 리눅스시스템 프로그래밍 김정국지음 System Programming

페도라 코어 5 설치 가이드

Sun Java System Messaging Server 63 64

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

ISP and CodeVisionAVR C Compiler.hwp

Microsoft Word ARM_ver2_0a.docx

스마트폰 저렴하게 구매하는곳

Windows Embedded Compact 2013 [그림 1]은 Windows CE 로 알려진 Microsoft의 Windows Embedded Compact OS의 history를 보여주고 있다. [표 1] 은 각 Windows CE 버전들의 주요 특징들을 담고

C 언어 프로그래밊 과제 풀이

Transcription:

Chapter. 2 Embedded Linux Jaeheung, Lee

목차 운영체제운영체제종류실시간시스템임베디드운영체제임베디드운영체제의개념임베디드리눅스리눅스리눅스부팅과정리눅스디렉토리구조리눅스디렉토리설명리눅스파일시스템리눅스소프트웨어패키지리눅스컴파일러 1

운영체제 운영체제란? 자원관리자 (Resource Manager) 응용자원에대한서비스제공 (Computing Environment) 자원의종류 물리적자원 : 처리기, 메모리, 디스크, 터미널, 네트워크, 추상적자원 : 태스크, 세그먼트 / 페이지, 파일, 드라이버, 통신프로토콜, 패킷, 보안, Network package vi, emacs, ls, who, X window system Kernel Device Driver Hardware Compiler RDBMS 2

운영체제종류 RTOS(Real-Time OS) UNIX VxWorks, psos, LEX, uitron, EPOCH, Nucleus SVR4, Solaris BSD, HP-UX Linux Ubuntu, Fedora Windows System Windows XP Windows CE.NET 3

실시간시스템 실시간시스템의정의 정해진시간내에시스템이결과를출력하는시스템 주어진작업을빨리처리하는것이아니고정해진시간을넘어서는안된다는뜻임 임베디드시스템은대부분실시간적인요소내포 임베디드시스템에실시간시스템이포함됨 4

실시간시스템 Hard real-time system/soft real-time system Hard real-time system 정해진시간내에작업의결과가절대적으로출력되어야하는시스템시간내에처리되지않으면치명적인결과를초래하는경우 전투기의비행제어시스템, 핵발전소의제어시스템, 인공위성의제어시스템 Soft real-time system 정해진범위를넘는시간지연이발생하더라도그것이시스템의에러가되지않는시스템 5

임베디드운영체제 실시간시스템에서의 S/W 간단하고단순한순차적인작업에관련순차적인프로그램으로충분하였음 8bit, 16bit 마이크로프로세서및마이크로컨트롤러사용 임베디드시스템에서의운영체제 시스템의규모가커짐에따른 Multi Tasking 기능요구 Network나 Multimedia가시스템의기본으로자리잡음 Networking, GUI, Audio, Video 임베디드시스템의특성상실시간이라는요소를만족해야함지능성이부각되고기능이많아지고복잡해짐순차적인프로그램작성이불가능하여운영체제가도입됨 6

임베디드운영체제 임베디드운영체제 기존의상용 RTOS(Real-Time OS) 윈도우 CE 임베디드 Linux 임베디드 JAVA 7

임베디드운영체제 상용 RTOS : Hard Real-Time/Multi-thread/Preemptive psos, VxWorks, VRTX 등다수일반운영체제와거의같은기능을수행시간제약성, 신뢰성등을일반운영체제보다중요시함일반적으로한가지목적에최적화되어있음 임베디드 OS : Soft Real-Time/Multi-process/non- Preemptive Windows CE 임베디드리눅스 임베디드자바 8

임베디드운영체제 최근동향 임베디드 OS 세계시장 : 최근 WinCE, 임베디드리눅스가기존의 RTOS 보다시장점유율이높아지는추세 OS 선정 시스템의특성파악그시스템에적합한 OS 선정이매우중요 9

임베디드운영체제 윈도우 CE MS사에서임베디드시스템을위하여제공하는운영체제기존의데스크탑 PC와동일한윈도우환경제공데스크탑윈도우및응용프로그램과의호환성우수프로그램개발환경이아주우수 ( 특히, GUI 개발환경우수 ) 실행환경에서요구되는 H/W 사양이높고, 가격이고가 MS사에서제공되는라이브러리에종속적 10

임베디드운영체제 리눅스 일반리눅스 일반데스크탑환경인고성능프로세서와대용량메모리환경에서동작하는범용컴퓨터용리눅스 임베디드리눅스 저성능의마이크로프로세서와제한된메모리환경에서동작하는임베디드시스템용리눅스 11

임베디드운영체제의개념 태스크 수행중인프로그램 (an instance of a running program) 프로그램의수행환경 (an execution environment of a program) 스케줄링단위 (scheduling entity) 제어흐름과주소공간의집합 (a control flow and address space) 12

임베디드운영체제의개념 멀티태스킹 여러개의태스크를동시에실행시키는것일반 OS에서의태스크 각태스크들은대부분무관한프로그램 임베디드시스템에서의태스크 하나의큰응용프로그램을논리적으로나눈것 기능상매우밀접한관계태스크사이에이루어지는작업이대다수 응용프로그램의실행을위해여러기능들이동시실행됨을요구 순차적이아닌동시실행의필요성이존재 13

임베디드운영체제의개념 스케줄러 (Scheduler) OS 의핵심기능 다음번에어떤태스크를실행해야하는지를결정하는코드부분 태스크선택정책 : 우선순위기반의스케줄링 FIFO(First In First Out), Round-robin 등 선점 (Preemptive) 어떤태스크가수행되고있을때커널이중간에그태스크의수행을중지시키고다른태스크의기능을수행시키는기능 선점형커널 / 비선점형커널 다른태스크로실행이넘어갈때문맥전환 (Context Switching) 발생 14

임베디드운영체제의개념 문맥전환 (Context Switching) 일단현재수행중인태스크상황하에서의시스템상태 ( 문맥 ) 를 TCB(Task Control Block) 이라는특정한자료구조에저장하고, 다음에새로운태스크의문맥을가져와시스템상태를복원한후에실행하는것 Context Switching 은 overhead 이기때문에짧을수록효율적임 thread 의개념을통해이를보완하는방법 상호배제 (Mutual Exclusion) 두개의태스크가동시에하나의공유자원에접근하려고할때하나의태스크에게자원사용에대한배타적권리를보장하는것 Critical section : 공유자원을 access 하는일련의코드부분 다른태스크에의해서중단되어서는안되는일련의명령혹은코드블록 15

임베디드운영체제의개념 상호배제 (Mutual Exclusion) 인터럽트발생을방지 Critical section 에들어가기전에인터럽트를 disable 시키고 (CLI), 빠져나오면서다시인터럽트를 enable 시키는방법 (STI) 단일 CPU 의경우단순하게사용가능 Semaphore 이용 Semaphore 를얻지못하면공유자원을얻을수없으며, Semaphore 를얻으면공유자원을마음놓고사용가능 다른태스크를위해공유자원을모두사용하면 Semaphore 를해제 Semaphore 가 0 이면 waiting 16

임베디드운영체제의개념 인터럽트서비스 (Interrupt Service) Asynchronous event 를 CPU 에알리는방법 Interrupt 는외부에서들어오는중요한신호로서시간에민감한경우가있기때문에 interrupt latency 가짧은것이좋음 ISR 자체도짧은것이좋은데그이유는 ISR 자체가길어지면 interrupt nesting 이되기쉽기때문 ISR 에서는보통그에상응하는태스크수준의 service routine 을부르고 (HISR) 끝나도록구성 HISR 에서는마치태스크처럼존재해서수행 17

임베디드운영체제의개념 임베디드리눅스출현배경 H/W 의발전 32/64bit 고성능 CPU S/W 의많은기능요구 OS 의기능이중요, 안정된운영체제의제공 ( 멀티태스킹제공 ) 강력하고다양한네트워크환경의제공다양한형태의파일시스템과실행파일포맷지원확장성의다양함과용이함의제공 Free Software 18

임베디드리눅스 임베디드리눅스장점 기능성과확장성이우수 ( 리눅스이용에따른장점 ) PowerPC, ARM, MIPS 등다양한 CPU Platform 지원함 로열티가없으므로가격경쟁력이우수 사용자층이넓어오류수정이빠르고안정성이우수 기존의데스크탑개발환경과동일하여개발이용이함 임베디드리눅스단점 기존의 RTOS 보다많은메모리를요구함 개발환경이 Text 기반의환경임으로개발에어려움이있음 제품화하기위한솔루션구성이어려움 많은업체들과개발자들이독자적으로개발하고있어표준화가어려움 19

리눅스 리눅스의특징 멀티유저, 멀티태스킹시스템인텔계열의프로세서및 Cyrix와 AMD의 CPU에최적화효율적인가상메모리사용동적공유라이브러리사용 UNIX표준인 POSIX와완벽한호환 리눅스의장점 GUI의불필요원격관리의용이성리부팅의불필요바이러스안전보안 20

리눅스 커널버전 역사 : http://www.linux.org/ 버전숫자 : X.Y.ZZ X : 커널의버전 Y : 릴리즈번호, 홀수 개발중, 짝수 안정된버전 ZZ : Modifications, 사소한변화를의미 최신버전 새로운다양한기능이이미추가되어있음크기가매우크다는단점이있음 커널버전의선택 임베디드시스템의크기를고려필요한기능을고려확장성을고려 21

리눅스 리눅스시작 START System BIOS Boot Manager Linux Kernel Initd ROM 에위치 메모리체크및하드웨어초기화 Boot Manager 실행 부팅매체의 0 번섹터 (MBR) 에위치 운영체제선택 Linux Kernel 압축을풀고메모리에적재 커널실행 (Boot Loader) PID 가 0 인 swapper 프로세스가시스템체크및초기화 (dmesg 명령또는 /var/log/dmesg 파일 ) PID 가 1 인 init 을실행 파일시스템구조검사 파일시스템마운트 데몬서버실행 사용자로그인및쉘실행 klogd xinetd xfs 22

리눅스부팅과정 전원스위치 ON 시스템전원공급 메인보드의 ROM-BIOS 에있는 BIOS 프로그램자동실행 CPU 는전원공급과함께특정번지의 BIOS 프로그램을자동실행 BIOS 프로그램은전원공급과함께메모리의특정번지에자동으로로드 23

리눅스부팅과정 BIOS 프로그램들의실행내용 자체진단기능 (POST) CMOS 검사, CPU, MEMORY, 그래픽카드등하드웨어의이상유무를검사하고초기화 부팅매체검색과부트로더실행 POST 과정이이상없이진행완료되면검색된부팅매체에서부트로더를불러옴 부팅매체로선택되었다면부팅파티션에있는 0 번섹터 (MBR) 에있는부트로더를읽음 부트로더가메모리에적재되면 BIOS 는종료, 시스템제어권은부트로더 (GRUB) 24

리눅스부팅과정 부트로더의실행 부트로더실행과함께 /boot/grub/grub.conf 파일을읽어서부팅커널을결정 부트로더는커널이미지를불러오고, 시스템제어권을커널로넘김 25

리눅스부팅과정 커널의로딩 커널은 swapper 프로세스 (PID 0 번 ) 를호출함 Swapper 는커널이사용할각장치드라이브들을초기화, init 프로세스 (PID 1 번 ) 를실행 Init 프로세스가실행되면서 /etc/inittab 파일을읽어들여서그내용들을차례대로실행 26

리눅스부팅과정 Init 프로세스의실행 로그인프롬프트가나오기까지의부팅완료화면까지 /etc/init 프로세스에의해실행되는내용들 부팅레벨선택 /etc/rc.d/rc.sysinit 스크립트를실행 선택된레벨에따라서 /etc/rc.d/rc3.d 디렉토리의파일을순차대로실행 시스템매직키 (ctrl + alt + del) 설정, 전원공급설정 6 개의가상터미널을각각실행 5 번부팅레벨로부팅될경우에 X 윈도우실행 27

리눅스디렉토리구조 /etc /bin /dev /lib /home /root - 시스템설정파일디렉토리 - 시스템의기초명령 - 장치파일 - 시스템공유라이브러리디렉토리 - 사용자홈디렉토리 - 루트사용자의홈디렉토리 28

리눅스디렉토리구조 /proc /sbin /tmp /var /usr - 시스템정보 - 시스템관리명령디렉토리 - 임시파일생성디렉토리 - 시스템가동중가변자료저장디렉토리 - 애플리케이션이설치되는디렉토리 29

리눅스디렉토리구조 리눅스커널맵 (http://www.makelinux.com/kernel_map/) 30

리눅스디렉토리구조 리눅스커널소스트리구조 security sound kernel ipc lib mm scripts doc /usr/src/linux drivers block net alpha arch crypto fs init include user net usb i386 coda asm ethernet video m68k ext2 asm-arm ipv4 audio mips ext3 linux ipv6 sound ppc ext4 net unix sparc jffs scsi x25 arm boot nfs video atm kernel lib mach-pxa 31

리눅스디렉토리설명 arch/ CPU 종속적인부분, 각처리기마다하위디렉토리로구성됨 (arch/arm, arch/i386, arch/alpha ) arch/arm/boot/ 부트스트랩핑코드 arch/arm/kernel/ 하드웨어종속적인 (hardware dependent) 커널관리루틴트랩, 인터럽트처리루틴문맥교환루틴장치구성, 초기화루틴 arch/arm/mm/ 하드웨어종속적인메모리관리루틴 32

리눅스디렉토리설명 init/ 하드웨어독립적인커널초기화루틴 (start_kernel) 태스크 0 (init_task or task[0]) 생성태스크 1, 2, 3 등데몬프로세스생성 mm/ 하드웨어독립적인메모리관리루틴 ( 하드웨어종속적인메모리관리루틴은 arch/arm/mm 디렉토리에존재 ) 가상메모리관리, 페이징 (paging), 스와핑 (swapping) 33

리눅스디렉토리설명 kernel/ fs/ 리눅스커널의가장중심적인디렉토리 (central section of the kernel) 하드웨어독립적인커널관리루틴 ( 하드웨어종속적인커널관리루틴은 arch/arm/kernel 디렉토리에존재 ) fork, exit 등태스크관련시스템호출처리루틴 스케줄러 (scheduler) 루틴 시그널처리 (signal handling)/ 시간관리 (time management) 루틴 가상파일시스템 (virtual file system ) 관리루틴 open, read 등태스크관련시스템호출처리루틴 특정파일시스템관리루틴은하위디렉토리에존재 (ext2, ext3, ramfs, minix, jffs2, proc, nfs, msdos, coda,.. ) 34

리눅스디렉토리설명 drivers/ 개개의장치를제어하기위한장치드라이버루틴디바이스드라이버는크게문자 / 블록 / 네트워크드라이버로구분 drivers/block/ : 블록장치드라이버 drivers/char/ : 문자장치드라이버 drivers/net : 네트워크장치드라이버 drivers/pci/ : PCI Bus 제어 drivers/sound/ : sound card 드라이버 drivers/cdrom/ : CD-ROM 드라이버 drivers/scsi/ : SCSI 인터페이스관리 35

리눅스디렉토리설명 ipc/ 프로세스간통신을지원하기위한루틴 세마포어 (semaphores), 공유메모리 (shared memory), 메시지큐 (message queues) net/ TCP/IP, ARP 등네트웍통신프로토콜 ( 네트웍장치드라이버는 drivers/net 에존재 ) 소켓인터페이스 36

리눅스디렉토리설명 include/ 커널헤더 하드웨어독립적인헤더 : include/linux/ 하드웨어종속적인헤더 : include/asm-*** modules/ lib/ 커널모듈루틴 모듈은 insmod(modprobe), rmmod 등의명령으로동적적재 / 제거가능 커널라이브러리루틴 doc/ or Documentation/ 커널문서디렉토리 37

리눅스파일시스템 리눅스파일시스템구조 38

리눅스파일시스템 정의 종류 파티션안에정보를저장하고관리하는실질적인방법을제공 ext : Extended File System 255 자의파일이름과 2GB 의파티션지원 ext2 : Second Extended File System 최대 64GB 의파티션허용 ext3 : ext2 의기능을강화시킨파일시스템버전 강력한저널링기능 메타데이터와데이터의확실한통합 39

리눅스파일시스템 종류 FAT : File Allocation Table( 클러스터크기고정 ) 도스에서사용, 2GB 의파티션및 8 자의파일이름지원 FAT32 윈도우에서사용 최대 2TB 의파티션을지원 40

리눅스소프트웨어패키지 RPM 이란? RedHat Package Manager 레드햇사에서만들어낸패키지관리툴의의미 www.rpm.org에서자유롭게공개및개발 RPM 실행 설치파일과설치정보를함께가지고있음설치될때의설치정보를시스템설치데이터베이스에갱신의존성추적으로설치요구조건검증 RPM 기능 패키지자동설치및제거업그레이드기능 41

리눅스소프트웨어패키지 RPM 패키지설치 (-ivh) RPM 패키지설치시 -i, -v, -h 옵션사용 -i : RPM 패키지설치 -v : RPM 패키지설치과정을보여줌 ( -i 옵션과같이사용 ) -h : RPM 패키지설치경과막대그래프를보여줌 RPM 패키지제거 (-e) RPM 패키지삭제시 -e 옵션사용 RPM 패키지업그레이드 (-Uvh) RPM 패키지업그레이드시 -U 옵션사용 42

리눅스소프트웨어패키지 Example 파일명 : Embedded_System.rpm 설치 : # rpm ivh Embedded_System.rpm 삭제 : # rpm e Embedded_System.rpm 업그레이드 : # rpm Uvh Embedded_System.rpm 43

리눅스컴파일러 컴파일과정 44

리눅스컴파일러 컴파일과정 전처리 (preprocessing) #define, #include, #if와같은전처리지시자해석전처리작업을위한 c 프로그램을호출 컴파일 (compile) 고급언어소스프로그램을입력받아서어셈블리파일을만듬 (.s) 일반적으로어셈블리파일은저장하지않고, 바로어셈블러를호출함 여기서컴파일은좁은의미의컴파일이며, 넓은의미의컴파일은모든과정을포함함 45

리눅스컴파일러 컴파일과정 어셈블 (assemble) 어셈블리파일을입력받아서오브젝트파일을만듬 (.o) 어셈블을위한 gas 프로그램을호출함 어셈블러는플랫폼 (CPU+OS) 마다다르며해당전용어셈블러호출가능 링크 (linking) 오브젝트파일을엮어서실행파일을만듬 (.o) 라이브러리함수도이단계에서사용함링크를위한 ld 프로그램을호출 46

리눅스컴파일러 GNU C Compiler, GNU Compiler Collection 의미 FSF (Free Software Foundation) 의 C, C++ 컴파일러 컴파일러, 어셈블러, 로더역할을함 한개의파일 (hello.c) 을컴파일하기 # gcc o hello hello.c -o 옵션 : 실행파일명을지정하는옵션 -S 옵션 : c 언어컴파일과정까지만처리 어셈블리코드출력 47

리눅스컴파일러 모든컴파일과정을한번에처리하기 $ gcc o hello hello.c hello_world.c -o 옵션이없으면 hello.out 이실행파일임 컴파일러매크로 컴파일러가파일을제어할때사용하는정보 -D 옵션을사용한매크로정의 # gcc c DEM_FILE= embedded helloworld.c -DEM_FILE은소스에서 #define EM_FILE embedded와동일한결과 -U 옵션은매크로정의를해제함 - #undef 와동일한효과임 48

리눅스컴파일러 Gcc 컴파일러옵션 -I : 헤더파일위치지정 # gcc I../include hello_world.c 비-표준라이브러리를위한헤더파일의디렉토리지정 -l : 라이브러리지정 # gcc o hello hello.o hello_test.o lm -lm 은수학라이브러리를포함한다는의미표준라이브러리를담고있는디렉토리에서 libm.a를찾음 -L : 비 - 표준라이브러리지정 # gcc o hello L/usr/local/mylib hello.o hello_test.o lx 표준라이브러리가아닌비-표준라이브러리사용 49

리눅스컴파일러 Gcc 컴파일러옵션 디버깅과프로파일링 컴파일할때디버깅을위한코드와심볼테이블을삽입 최적화 g : 디버거 gdb에서사용할수있는확장된심볼테이블생성 p :prof에서프로파일링할수있는프로그램생성 pg : gprof에서프로파일링할수있는프로그램생성 프로그램의수행속도를컴파일러가최적화함 Gcc는최적화와디버깅옵션을동시에사용하도록허용 O0 : 최적화 X ( 정확한동작, 컴파일시간이줄어듬 ) O1 : 코드크기와실행시간을줄여줌 O2 : 더많은최적화를수행 ffast-math : 부동소수점연산에대한최적화를수행 finline-functions : 단순한함수의경우 inline 함수로변경하여사용 50

리눅스컴파일러 어셈블러 (Assembler) 어셈블리프로그램에서오브젝트모듈생성각플랫폼마다별도의 GNU 어셈블러존재어셈블러실행 # as list-of-option list-of-source-files Assemble 옵션 -ah : C 프로그램의리스트를생성 -al : 어셈블리언어코드의리스트를생성 -as : 심볼테이블에대한리스트를생성 51

리눅스컴파일러 링커 (Linker) ld 링커 오브젝트모듈과라이브러리들을결합하여실행파일생성 외부변수, 외부함수, 라이브러리에대한참조위치를찾아내완전한실행프로그램생성 일반적으로 ld 를직접수행하지않고, gcc 로수행 ld 실행 # ld list-of-options list-of-files-and-libraries 라이브러리는 lib-name 형태로사용 라이브러리의경우외부참조에의해필요한함수만추출 순서와관계없이라이브러리에서모듈을찾기위해색인을생성 52

리눅스컴파일러 링커 (Linker) ld 실행파일생성 실행파일생성시시작위치는첫번째파일의시작부분 C 프로그램의시작점과같지않음 OS에서프로그램시작전에표준런타임초기화루틴실행 다음의두표현은동일 # gcc test.o # ld dc dp e start X o a.out /usr/lib/crt0.o expo.o -lc 53

리눅스컴파일러 라이브러리만들기 ar 명령으로오브젝트모듈의라이브러리만듦 하나의 c 프로젝트를이루는여러목적모듈들을만들고이들을그룹화시키기위해사용 새로운라이브러리생성 # ar rs libname list-of-files r 옵션 : 파일을추가하고없으면새로운라이브러리생성 s 옵션 : 정적라이브러리색인생성 (ranlib 불필요 ) 54

리눅스컴파일러 라이브러리만들기 라이브러리갱신 # ar rus libname list-of-files 라이브러리의모듈과파일의날짜를비교하여갱신 라이브러리에서파일지우기 # ar ds libname list-of-files 라이브러리에서파일추출 # ar x libname list-of-files 55

리눅스컴파일러 공유라이브러리업그레이드 공유라이브러리와정적인라이브러리분리 정적라이브러리 일반적으로 /usr/lib에있으며 libxxx.a 로존재컴파일시에사용됨 동적라이브러리 /lib에있으며 libxxx.so.version으로되어있음 Version은 major.minor 로구성되어있음 Ld.so는 version에서 major 번호만참조함 정적라이브러리는복사로완료동적라이브러리는소프트링크로연결 56

리눅스컴파일러 Make File Make 기능및목적 컴파일을자동화하는프로그램 실행파일을만드는과정 ( 빌드 ) 을정의하면필요한작업만을수행하여실행파일생성 프로그램그룹중에서어느부분이새롭게컴파일되어야하는지를자동적으로판단해서필요한명령어를이용해서그들을재 - 컴파일 다중모듈프로그램의재사용을유지하고, 프로그램수정에대한재 - 번역을최소화 gmake gnumake 는 make 보다발전된것임 57

리눅스컴파일러 Make File Make 사용 입력파일이변경되면자동적으로결과파일이변경되기를원할때나명령어방식으로처리되는모든곳에유용하게사용가능 파일의상호의존관계를나타내는목록파일 (makefile) 이필요 GNUmakefile, Makefile, makefile 중하나의파일이필요 makefile 을참조하여파일을최신버전으로개정 58

리눅스컴파일러 Make File Make 사용법 make [ -f makefile_name ] -f : 파일이름명시기본이름 : Makefile 복수개의파일과목적파일컴파일 Makefiles 이름에제한이없으나파일이름뒤에.make 표기권장 59

리눅스컴파일러 Make File 작성및규칙 Make 사용법 targetlist : dependencylist [TAB] commandlist targetlist : 목적파일목록 dependencylist : 의존파일목록 commandlist : 명령어목록 ( 예 ) master : master.o pirami.o gcc master.o pirami.o -o master master.o : master.c pirami.h gcc -c main.c pirami.o : pirami.c pirami.h gcc -c pirami.c 60

리눅스컴파일러 Make 실행 $ make -f main1.make 매크로 (Macro) make에서지원하는기능일련의반복되는특정코드를간단하게표현. 사용법 이름 = 내용들 $( 이름 ), ${ 이름 }, 대문자로작성. ( 예 )token = replacementtext make 파일내에모든 $(token) 는 replacementtext 로대치 정해진 Macro ASFLAGS, CFLAGS, CPPFLAGS, 61

리눅스컴파일러 Makefile 작성예 OBJECTS = main.o helloworld.o helloworld: $(OBJECTS) [TAB]gcc o helloworld ($OBJECTS) main.o: main.c [TAB]gcc c main.c helloworld.o: helloworld.h helloworld.c [TAB]gcc c helloworld.c clean: [TAB]rm $(OBJECTS) helloworld.suffixes:.c.o OBJECTS = main.o helloworld.o CC = gcc CFLAGS = -g -c TARGET = helloworld $(TARGET): $(OBJECTS) $(CC) -o $(TARGET) $(OBJECTS) clean: rm $(TARGET) $(OBJECTS) core main.o: main.c helloworld.o: helloworld.h helloworld.c 62