Download presentation
Presentation is loading. Please wait.
1
임베디드 시스템
2
Chapter 5 임베디드 시스템 환경 구성
3
운영 체제 운영 체제 (OS : Operating System) 운영체제의 역할
컴퓨터 시스템의 전반적인 동작을 제어하고 조정하는 시스템 프로그램들의 집합. 운영체제의 역할 하드웨어와 응용 프로그램 간의 인터페이스 역할을 하면서 CPU, 주기억 장치, 입출력 장치 등의 컴퓨터 자원을 관리
4
운영체제의 구성 요소 하드웨어 응용 프로그램 메모리 관리 프로세스 관리 파일 시스템 관리 입출력 관리 트랩(SWI)
시스템 콜 인터페이스 하드웨어 제어 하드웨어 응용 프로그램 메모리 관리 프로세스 관리 파일 시스템 관리 입출력 관리 트랩(SWI)
5
임베디드 리눅스 임베디드 리눅스 임베디드 리눅스 특징
공개된 리눅스 커널과 각종 응용 프로그램 소스를 임베디드 시스템에서 동작 하도록 최적화 하여 사용하는 운영체제 임베디드 리눅스 특징 적은 메모리 사용 느린 CPU에서 동작 특정한 목적의 응용 프로그램 탑재
6
임베디드 리눅스의 장점 GPL(GNU General Public License)를 따르는 공개 소스 소프트웨어 모듈 지원
두터운 개발자 층 검증된 운영체제 10년에 걸쳐 사용 모듈 지원 불필요한 부분을 빼고 필요한 부분 추가가 가능하여 이식성 우수 유닉스와 유사한 운영체제 시스템, 독립적인 POSIX 구현 다양한 플랫폼 지원 x86, alpha, ppc, arm, sparc, 메인프레임에 이르기까지 각종 CPU 지원 멀티태스킹, 가상메모리, 공유 라이브러리, 디멘트 페이징, 메모리 관리, TCP/IP 네트워킹 등을 지원
7
임베디드 리눅스의 단점 개발 환경 설정이 까다롭다. 실시간성(Real-Time) 기능이 취약하다.
메모리와 전력 소모량이 많다. 리눅스의 윈도우 시스템 다양한 윈도우 시스템이 제공되고 있으나 덩치가 크거나 안정화 작업이 필요
8
운영체제의 커널 커널이란 ? 마이크로 커널(micro kernel) 모놀리틱 커널(monolithic kernel)
운영체제의 핵심 부분 하드웨어와 운영체제의 다른 부분 사이의 중재자 역할을 함 마이크로 커널(micro kernel) 커널의 기능을 최소화 하고 가장 핵심 기능만 가진다. 커널은 동기화 프로그램, 매우 간단한 스케쥴러와 프로세스간 통신 방식만 제공 QNX, 카네기 멜론(Carnegie Mellon)의 마크 3.0(Mach 3.0) 모놀리틱 커널(monolithic kernel) 커널이 운영체제가 관장하는 모든 서비스를 가짐 프로그램의 실행을 제어하며 데이터와 파일 관리 유닉스, 리눅스 시스템
9
Inter Process Communication (IPC)
리눅스 커널의 구조 (1) Process Scheduler Virtual File System 메모리 관리 네트워크 인터페이스 Inter Process Communication (IPC)
10
리눅스 커널의 구조 (2) Process Scheduler 메모리 관리(Memory Manager)
CPU를 여러 프로세스가 공평하게 사용할 수 있도록 함 메모리 관리(Memory Manager) 여러 개의 프로세스 메인 메모리를 안전하게 공유 할 수 있도록 함. Virtual File System 리눅스는 모두 파일로 관리가 됨 하드웨어 장치도 파일로 관리 됨 네트워크 인터페이스(Network Interface) 표준 네트웍 프로토콜과 드라이버를 제공함 Inter Process Communication (IPC) 프로세스 간에 서로 정보를 교환 할 수 있는 방법을 제공함
11
프로세스 프로세스(Process) 또는 태스크(Task) 멀티 프로세싱 프로세스는 프로그램이 이니다 실행 중인 프로그램
프로세스의 구성 프로그램, 데이터, 스택 프로세서 내부의 PC를 비롯한 레지스터 와 상태 정보 1960년대 중반 벨연구소의 멀틱스(Multics : multiplexed information and computing service) 에서 처음 사용 멀티 프로세싱 동시에 여러 프로세스가 활동 프로세스는 프로그램이 이니다 여러 개의 프로세스가 똑같은 프로그램을 동시에 실행 가능 프로세스 하나가 여러 프로그램을 차례로 실행 가능
12
스케쥴러(Scheduler) 한 순간에 오직 하나의 프로세스 만이 CPU를 점유 가능
선점형(preemptive)과 비선점형(nonpreemptive) 비선점형 프로세스가 자발 적으로 CPU 사용권 반납했을 때만 스케쥴링 선점형 프로세스 별 사용 시간을 지켜보면서 정기적으로 스케쥴링 문맥 교환(Context Switch) CPU의 사용권을 다른 프로세스에게 양도 현재의 Context 정보를 저장하고 새 프로세스의 Context 정보를 적재 Context 정보 프로그램 카운트(PC), 스택 포인터(SP), 범용 레지스터, 프로세서의 상태 레지스터, 메모리 관리 정보 등
13
메모리와 주소(Address) 메모리 메모리 주소 프로그램과 데이터를 저장하는 공간
메모리 셀의 내용에 대한 접근 위치 지정 일반적으로 물리 주소를 칭하는 경우가 많음
14
리눅스의 주소(Address) 논리 주소(Logical Address) 선형 주소(Linear Address)
실제 CPU가 기계어 상에서 사용되는 주소 선형 주소(Linear Address) CPU가 사용하는 4GB 영역까지의 엑세스 가능한 주소 가상(Virtual)적으로 할당하여 프로그램에서 사용하는 주소 물리 주소(Physical Address) 메모리 칩의 메모리 셀의 위치를 지정 어드레스 버스로 전달되는 전기적인 신호
15
프로세스와 메모리 접근 프로세스에서 메모리 접근 (①)
페이지 프레임 번호를 가지고 페이지 테이블에서 정보를 가져온다 (②, ③, ④) 물리 메모리의 해당 페이지에서 offset위치를 접근한다(⑤ ,⑥) 프로세스 CPU page frame number offset Physical page Physical 메모리 Page table ① ② ③ ④ ⑤ ⑥
16
시스템 콜(System Call) 포직스 표준 API를 사용하는 시스템 콜을 사용하는 이유
사용자 프로그램에서 커널 자원을 사용 할 수 있도록 함 디바이스 제어, 프로그램 실행, 파일 전송 등 포직스 API와 시스템 콜 표준 libc에 정의되어 있는 C 라이브러리의 API 중 일부는 시스템 콜 호출을 위한 루틴 제공 포직스 표준 API를 사용하는 시스템 콜을 사용하는 이유 저수준 프로그래밍이 불필요 쉬운 프로그래밍 시스템 보안성 증가 프로그램 호환성 증가
17
시스템 콜 처리 절차 사용자 영역 커널 영역 … xyz() 시스템콜 인터페이스 Libc 응용 표준 프로그램 서브루틴 시스템 콜
int 0x80 } system_call: sys_xyz() ret_from_sys_call: iret sys_xyz() { 사용자 영역 커널 영역 응용 프로그램 Libc 표준 서브루틴 라이브러리 시스템 콜 핸들러 시스템 콜 서비스 루틴 시스템콜 인터페이스
18
시스템 콜 처리
19
가상 파일시스템(Virtual File System)
가상 파일시스템(VFS, Virtual File System) 모든 파일시스템에 대한 공통(Common) 인터페이스 제공 유닉스 파일시스템과 관련된 모든 시스템 콜을(System Call)을 처리하는 커널 소프트웨어 계층 cp VFS Ext2 MS-DOS /tmp/test /mnt/sd/TEST int = open(“/mnt/sd/TEST”, O_RDONLY, 0); outf = open(“/tmp/test”, O_WRONLY|O_CREATE|O_TRUNC, 0600); do { l = read(inf, buf, 4096); write(outf, buf, l); } while (l); close(outf); close(inf); $ cp /mnt/sd/TEST /tmp/test MS_DOS 마운트 포인트 Ext2 디렉토리
20
VFS가 지원하는 파일시스템 디스크 기반 파일시스템 네트워크 파일시스템 특수 파일시스템 로컬 디스크 파티션의 기억 장소를 관리
하드디스크, 플로피, CD-ROM 같은 블록 디바이스에 기반 ext2, msdos, vfat, ntfs, iso9660(CD-ROM), hpfs(OS/2) 등 네트워크 파일시스템 다른 네트워크의 컴퓨터에 속한 파일 시스템에 접근 NFS, Coda, AFS, SMB, NCP 특수 파일시스템 /proc 파일시스템 사용자가 커널의 데이터에 접근할 수 있는 인터페이스 제공 /dev 파일시스템 디바이스를 표준 파일시스템으로 관리할 수 있는 인터페이스 제공
21
리눅스 시작 시스템 RESET 또는 POWER-UP 부트로더가 시스템을 초기화 한다.
커널 압축 해제 및 재배치 리눅스 커널 초기화 루트 파일시스템 MOUNT 리눅스 어플리케이션 부트로더가 시스템을 초기화 한다. 커널의 압축을 해제하고, 리눅스 커널이 실행 될 수 있도록 메모리 맵을 구성한다. 루트 파일시스템을 찾아서 MOUNT 한다. 리눅스 어플리케이션이 시작 된다. 1 2 3 4 5 시작 시스템 RESET 또는 POWER-UP 리눅스 커널이 시작되고, 프로세서 및 장치를 초기화 한다.
22
실 습
23
고려 사항 필요한 Image 파일을 적당한 디렉토리에 복사 부트 로더는 Kit에 저장되어 있음
zImage : 커널 이미지 root_fs.jffs2 : 루트 파일 시스템 부트 로더는 Kit에 저장되어 있음 호스트 PC에서 타겟 보드로 파일 전송은 xmodem 프로토콜을 사용
24
부트로더 실행 화면
25
리눅스 커널 Writing (1)
26
리눅스 커널 Writing (2) [전송]-[파일보내기] 파일 전송 화면
27
리눅스 커널 Writing (3)
28
리눅스 커널 Writing (4)
29
루트 파일 시스템 Writing (1)
30
루트 파일 시스템 Writing (2) [전송]-[파일보내기] 파일 전송 화면
31
루트 파일 시스템 Writing (3)
32
임베디드 리눅스 시스템 부팅 (1)
33
임베디드 리눅스 시스템 부팅 (2)
34
심화 실습 커널 이미지 생성하기 램디스크 생성하기
35
커널 이미지 만들기 (1) 커널 소스 : linux-2.4.19.tar.bz2
ftp://ftp.arm.linux.org.uk/pub/linux/linux-2.4 위의 파일을 /root/soc-kernel로 다운로드 tar xvfj linux tar.bz2 cd linux make menuconfig
36
커널 이미지 만들기 (2)
37
커널 이미지 만들기 (3) 커널 이미지 구성 모듈 선택 make dep make zImage
예) Ethernet을 선택하지 않음 [ ] Ethernet (10 or 100Mbit) 저장 후 exit make dep make zImage /root/soc-kernel/arch/arm/boot 디렉토리에 zImage 생성
38
커널 이미지 만들기 (4) 생성한 zImage 를 타겟 보드로 전송 후 Flash 메모리에 저장
부팅 과정에서 Ethernet 관련 부분이 없어졌는지 확인
39
커널 이미지 만들기 (5) 수정 전의 부팅화면 수정 후의 부팅화면
40
램 디스크 생성하기 (1) /root/ramdisk 디렉토리 생성 아래의 두 파일을 /root/ramdisk에 복사
root_filesystem.tar.bz2 mkfs.jffs2 tar xvjf root_filesystem.tar.bz2 후 파일시스템 수정 huins_config 파일의 Hostname 수정 mkfs.jffs2 –r ./root_filesystem –o root.jffs2 –e 0x10000 –p 램 디스크 이미지 생성 타겟 보드 다운로드 후 Flash에 저장
41
램 디스크 생성하기 (2) 수정 전의 부팅화면 수정 후의 부팅화면
Similar presentations