SlideShare a Scribd company logo
안드로이드는 OS가 아니라 플랫폼이다!

유 명 환 funfun.yoo@gmail.com
목차

1

운영체제? 플랫폼??

2

왜 플랫폼을 알아야 할까?

3

학생 개발자들에게...
운영체제? 플랫폼??
운영체제?

운영 체제
위키백과, 우리 모두의 백과사전.
운영 체제(運營體制, 문화어: 조작체계) 또는 오퍼레이팅 시스템(OS, operating system)은
시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과
공통 시스템 서비스를 제공하는 시스템 소프트웨어이다. 최근에는 가상화 기술의 발전에 힘입어
실제 하드웨어가 아닌 하이퍼바이저 위에서 실행되기도 한다.
입출력과 메모리 할당과 같은 하드웨어 기능의 경우 운영 체제는 응용 프로그램과 컴퓨터 하드웨어
사이의 중재 역할을 한다.[1][2] 그러나 응용 프로그램 코드는 일반적으로 하드웨어에서 직접 실행된다.
운영 체제는 휴대 전화, 게임기에서부터 슈퍼 컴퓨터, 웹 서버에 이르기까지 컴퓨터를 포함하는 거의
모든 장치에서 볼 수 있다. 운영 체제는 한 면으로는 소비자를, 다른 한 면으로는 프로그램 개발자를
함께 하나의 시장으로 데려다 놓을 수 있는 양면 플랫폼이다. 잘 알려진 현대의 PC 운영 체제에는
마이크로소프트 윈도, 맥 OS X, 리눅스가 있다.[3] 이 밖에 BSD, 유닉스 등의 PC용 운영 체제도 존재한다.
운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등의 자원들을 사용할 수 있도록
만들어 주고, 이들을 추상화하여 파일 시스템 등의 서비스를 제공한다. 또한 멀티태스킹을 지원하는 경우,
여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제는 이러한 모든 프로세스들을 스케줄링하여
마치 그들이 동시에 수행되는 것처럼 보이는 효과를 낸다.
플랫폼??
컴퓨팅 플랫폼
위키백과, 우리 모두의 백과사전.
컴퓨팅 플랫폼(영어: computing platform)은 소프트웨어가 구동 가능한 하드웨어 아키텍처나 소프트웨
어 프레임워크(응용 프로그램 프레임워크를 포함하는)의 종류를 설명하는 단어이다. 일반적으로 플랫폼은
컴퓨터의 아키텍처, 운영 체제(OS), 프로그램 언어, 그리고 관련 런타임 라이브러리 또는 GUI를 포함한다.
플랫폼은 소프트웨어 응용 프로그램들을 돌리는 데 쓰이는 하드웨어와 소프트웨어의 결합이다. 플랫폼은
하나의 운영 체제 또는 컴퓨터 아키텍처라고 단순히 말할 수 있으며 그 두 가지를 통칭해서 말할 수도 있
다.
아마 가장 친근한 플랫폼은 x86 아키텍처에서 돌아가는 마이크로소프트 윈도일 것이다. 잘 알려진 다른
데스크톱 컴퓨터 플랫폼들은 리눅스와 맥 오에스 텐을 포함한다. 그러나 휴대 전화와 같은 많은 장치들은
효과적으로 컴퓨터 플랫폼이라고도 하지만 보통 그렇게 불리진 않는다.
응용 프로그램 소프트웨어는 특정한 플랫폼-하드웨어나 운영체제, 아니면 가상 기기의 기능들에 맞추기 위
해 프로그래밍 된다. 자바 플랫폼은 가상 기기 플랫폼으로 여러 가지의 운영체제와 하드웨어에서 실행되며
소프트웨어가 만들어지는 일반적인 플랫폼의 한 종류이다.
플랫폼은 소프트웨어 개발 중에서도 핵심적이고도 기술적으로 어려운 부분이다. 플랫폼을 간략히 정의해
보자면 소프트웨어를 실행할 수 있는 기반이라고 하겠다. 또한 플랫폼은 이를 이용하는 소프트웨어 개발자
에게는 다른 어떤 플랫폼 위에서 자신의 로직 코드가 돌아가건 동일하게 작동할 수 있도록 약속하는 하나
의 계약이기도 하다. 로직 코드란 바이트 코드, 소스 코드 그리고 기계 코드도 될 수 있다. 이를 통해 프로
그램의 실행이 특정 운영체제에 제약되지 않을 수 있다. 이는 언어 독립적으로, 기계들을 쉽게 교체할 수
있게 한다.
운영체제? 플랫폼??
플랫폼의 정의

Platform = CPU + OS + Tool
플랫폼의 정의

Platform = CPU + OS + Tool
Android
= ARM/x86 + Linux + Ubuntu/Eclipse
플랫폼의 정의
Android
= ARM/x86 + Linux + Ubuntu/Eclipse
플랫폼의 정의
Android
= ARM/x86 + Linux + Ubuntu/Eclipse

if. 셋탑박스 업체에서 안드로이드 전용 셋탑박스를 개발하려면?
- 보통 셋탑박스는 MIPS 프로세서 + Linux 로 개발됨.
플랫폼의 정의
Android
= ARM/x86 + Linux + Ubuntu/Eclipse
안드로이드는 Linux 의 커널 만을 사용할 뿐 커널 외 부분은
안드로이드의 독자적인 부분이라 운영체제로 불려야 한다?
system.img
data.img
ramdisk.img
플랫폼의 정의
Android
= ARM/x86 + Linux + Ubuntu/Eclipse
if. Linux 대신 다른 운영체제로 바꿀 수는 없을까?
플랫폼의 정의
Android
= ARM/x86 + Linux + Ubuntu/Eclipse

안드로이드 빌드 시 우분투 외 다른 운영체제에서는 안되나?
http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=6
페도라에서 안드로이드 빌드하기 (2008-10-26)
플랫폼의 정의
Android
= ARM/x86 + Linux + Ubuntu/Eclipse

안드로이드 앱 개발 시
이클립스 외에 다른 건 없나?
플랫폼의 정의

★ 결국 “플랫폼” 이란 “개발 상의 제약” 을 뜻함!!
※ 제약이 있음에도 플랫폼을 채택하는 이유는?
왜 플랫폼을 알아야 할까?
왜 플랫폼을 알아야 할까?

★ 개발의 시작이 바로 “플랫폼” 이다!
★ 개발자가 반드시 알아야 할 가장 기본 중의 기본!
★ 수없이 쏟아져 나오는 신 기술들에 대한 분석 기준!
※ ‘개발자’ 와 ‘직장인’ 을 구분하자.
왜 플랫폼을 알아야 할까?
왜 플랫폼을 알아야 할까?
왜 플랫폼을 알아야 할까?
우리는 플랫폼에 대해 얼마나 알고 있을까?
▶ 왜 프로그램은 반드시 ‘메모리’ 에 올린 이후에 실행이 되는 걸까?
▶ 가상 메모리는 왜 사용하는 것일까?
▶ C 언어 전역변수는 초기화하지 않으면 왜 “0” 으로 초기화되는걸까?

▶ 왜 C 언어에서는 사용하지 말라는 GOTO 문이 있는 걸까?
▶ 어플리케이션 작성 시 스택(Stack) 사이즈를 할당해 본 적이 있나?
▶ 인터럽트 서비스 루틴은 소프트웨어 호출에 의해서 실행되는 걸까?
▶ 어플리케이션에서 사용할 수 있는 함수의 개수는 총 몇 개일까?
▶ 안드로이드 앱에 왜 main 메쏘드가 없을까?
▶ 안드로이드 앱의 R.java 는 왜 수정하면 안될까? 또, 0x 값들은?
우리는 플랫폼에 대해 얼마나 알고 있을까?
우리는 플랫폼에 대해 얼마나 알고 있을까?
우리는 플랫폼에 대해 얼마나 알고 있을까?
우리는 플랫폼에 대해 얼마나 알고 있을까?
우리는 플랫폼에 대해 얼마나 알고 있을까?
우리는 플랫폼에 대해 얼마나 알고 있을까?
우리는 플랫폼에 대해 얼마나 알고 있을까?
학생 개발자들에게...
저는 Java 개발자였습니다!
엑세스 주식회사, 연구소장,

유명환

● 주식회사 이분투 대표
● NIPA, SW아키텍처 실무자 포럼, 임베디드SW 분과장
● 소프트웨어 마에스트로 4기 멘토
● 오픈스택 한국 커뮤니티 운영진
● 현재 저전력 ARM 프로세서 기반 서버 개발 중
● 현재 Android 기반 산업용 LCD 패널 개발 및 납품 중
● facebook.com/funfunyoo
저는 Java 개발자였습니다!
드디어 하드웨어를 만나다!

난생 처음으로 Data Sheet 라는 문서를 보게 되었습니다.
드디어 하드웨어를 만나다!

운영체제(OS)라고 다 같은 운영체제가 아님을 처음으로 알았습니다.
드디어 하드웨어를 만나다!

드디어 처음으로 회로도를 설계해 보았습니다.
드디어 하드웨어를 만나다!

결국 변기까지 만들어 보았습니다.
안드로이드를 만나다!

안드로이드는 임베디드 리눅스 개발자들의 고민을 한방에 해결해주었습니다.
우분투를 알게 되다!

우분투를 통해 오픈 소스와 커뮤니티에 대해 깊이 깨닫게 되었습니다.
우분투를 알게 되다!

우분투를 통해 오픈 소스와 커뮤니티에 대해 깊이 깨닫게 되었습니다.
우분투를 알게 되다!

우분투를 알고 나니 새로운 분야가 눈에 들어오기 시작했습니다.
우분투를 알게 되다!

우분투를 알고 나니 새로운 분야가 눈에 들어오기 시작했습니다.
학생 개발자들에게...
★ 기초와 기본을 탄탄하게 닦아야 할 시기!
★ 개발자에게 가장 중요한 것은?
★ 박학다식으로 시작하여 점차 눈높이를 높여나가자!
★ 개발은 결국 ‘사람’ 이 하는 일! → ‘태도’ 의 중요성!
★ 옳고 그르다가 아니라 ‘다르다’ 의 문제다!
★ 욕심은 좋으나 ‘우선순위’ 를 정하자!
학생 개발자들에게...
★ 고정관념을 조심하라!
★ 의사소통 = 말하기 + 글쓰기
그러면 어디서부터
시작해야 될까요?
그러면 어디서부터
시작해야 될까요?
쉽고 재미있는 것부터
시작하세요!
무엇보다 중요한 건 “재미” 입니다!

More Related Content

What's hot

IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1
Park Jonggun
 
Raspberry pi 에서 실행파일 살펴보기
Raspberry pi 에서  실행파일 살펴보기Raspberry pi 에서  실행파일 살펴보기
Raspberry pi 에서 실행파일 살펴보기
정국 정
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
doo rip choi
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요
chcbaram
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
Ubuntu Korea Community
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
chcbaram
 
ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)Chulgyu Shin
 
Linux tutorial
Linux tutorialLinux tutorial
Linux tutorial
Hyun-hwan Jeong
 
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축
chcbaram
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Mario Cho
 
Introduction to Linux #1
Introduction to Linux #1Introduction to Linux #1
Introduction to Linux #1
UNIST
 
[OpenStack 하반기 스터디] Auto Install Kilo
[OpenStack 하반기 스터디] Auto Install Kilo[OpenStack 하반기 스터디] Auto Install Kilo
[OpenStack 하반기 스터디] Auto Install Kilo
OpenStack Korea Community
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요
chcbaram
 
리눅스 시작하기
리눅스 시작하기리눅스 시작하기
리눅스 시작하기
Pete Lee
 
망고100 보드로 놀아보자 12
망고100 보드로 놀아보자  12망고100 보드로 놀아보자  12
망고100 보드로 놀아보자 12종인 전
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
Kalito Viscra
 
망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5
종인 전
 
초등학생도 하는 그냥 DB설치
초등학생도 하는 그냥 DB설치초등학생도 하는 그냥 DB설치
초등학생도 하는 그냥 DB설치현찬 양
 
개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX
개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX
개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX
Ubuntu Korea Community
 
Snaps on Ubuntu Desktop
Snaps on Ubuntu DesktopSnaps on Ubuntu Desktop
Snaps on Ubuntu Desktop
Youngbin Han
 

What's hot (20)

IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1
 
Raspberry pi 에서 실행파일 살펴보기
Raspberry pi 에서  실행파일 살펴보기Raspberry pi 에서  실행파일 살펴보기
Raspberry pi 에서 실행파일 살펴보기
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요
 
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
노태상 - 리눅스 커널 개요 및 이슈 아이엠 (2010Y01M30D)
 
강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계강좌 04 펌웨어 구조 설계
강좌 04 펌웨어 구조 설계
 
ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)ITs 2주차_기본명령어(발표)
ITs 2주차_기본명령어(발표)
 
Linux tutorial
Linux tutorialLinux tutorial
Linux tutorial
 
강좌 03 개발환경 구축
강좌 03 개발환경 구축강좌 03 개발환경 구축
강좌 03 개발환경 구축
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
Introduction to Linux #1
Introduction to Linux #1Introduction to Linux #1
Introduction to Linux #1
 
[OpenStack 하반기 스터디] Auto Install Kilo
[OpenStack 하반기 스터디] Auto Install Kilo[OpenStack 하반기 스터디] Auto Install Kilo
[OpenStack 하반기 스터디] Auto Install Kilo
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요
 
리눅스 시작하기
리눅스 시작하기리눅스 시작하기
리눅스 시작하기
 
망고100 보드로 놀아보자 12
망고100 보드로 놀아보자  12망고100 보드로 놀아보자  12
망고100 보드로 놀아보자 12
 
엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트엔진, 툴, 그리고 스크립트
엔진, 툴, 그리고 스크립트
 
망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5망고100 보드로 놀아보자 5
망고100 보드로 놀아보자 5
 
초등학생도 하는 그냥 DB설치
초등학생도 하는 그냥 DB설치초등학생도 하는 그냥 DB설치
초등학생도 하는 그냥 DB설치
 
개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX
개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX개발자를 위한,  WINDOWS 10으로 시작하는 UBUNTU LINUX
개발자를 위한, WINDOWS 10으로 시작하는 UBUNTU LINUX
 
Snaps on Ubuntu Desktop
Snaps on Ubuntu DesktopSnaps on Ubuntu Desktop
Snaps on Ubuntu Desktop
 

Viewers also liked

[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
S.O.P.T - Shout Our Passion Together
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
중선 곽
 
운영체제 인트로
운영체제 인트로운영체제 인트로
운영체제 인트로
Junnie Jobs
 
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23유명환 FunFun Yoo
 
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
유명환 FunFun Yoo
 
창조경제 IoT 해커톤 교육 2일차 교육 자료
창조경제 IoT 해커톤 교육 2일차 교육 자료창조경제 IoT 해커톤 교육 2일차 교육 자료
창조경제 IoT 해커톤 교육 2일차 교육 자료
유명환 FunFun Yoo
 
문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시
동현 조
 
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
동현 조
 
Intranet query tuning (example)
Intranet query tuning (example)Intranet query tuning (example)
Intranet query tuning (example)
중선 곽
 
사칙연산 프로그램
사칙연산 프로그램사칙연산 프로그램
사칙연산 프로그램
중선 곽
 
(프로그래밍/소프트웨어 교육) 학생들을 위한 소프트웨어 교육 접근법과 도구, 전략
(프로그래밍/소프트웨어 교육) 학생들을 위한 소프트웨어 교육 접근법과 도구, 전략(프로그래밍/소프트웨어 교육) 학생들을 위한 소프트웨어 교육 접근법과 도구, 전략
(프로그래밍/소프트웨어 교육) 학생들을 위한 소프트웨어 교육 접근법과 도구, 전략
Sangsu Song
 
Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안
중선 곽
 
Scale up and scale out
Scale up and scale outScale up and scale out
Scale up and scale out
중선 곽
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)
중선 곽
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 
Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2
중선 곽
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?
유명환 FunFun Yoo
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
중선 곽
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
중선 곽
 
문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시
동현 조
 

Viewers also liked (20)

[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
 
운영체제 인트로
운영체제 인트로운영체제 인트로
운영체제 인트로
 
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
우분투 한국 커뮤니티 나눔모임 발표 2013-02-23
 
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
[제5회 KCD] 한국에서 커뮤니티를 운영한다는 건...
 
창조경제 IoT 해커톤 교육 2일차 교육 자료
창조경제 IoT 해커톤 교육 2일차 교육 자료창조경제 IoT 해커톤 교육 2일차 교육 자료
창조경제 IoT 해커톤 교육 2일차 교육 자료
 
문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시문돌이가 가르치는 웹 프론트엔드 기초 2차시
문돌이가 가르치는 웹 프론트엔드 기초 2차시
 
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
[Codebakery 일반동아리] IoT의 개념 및 분야, 전망
 
Intranet query tuning (example)
Intranet query tuning (example)Intranet query tuning (example)
Intranet query tuning (example)
 
사칙연산 프로그램
사칙연산 프로그램사칙연산 프로그램
사칙연산 프로그램
 
(프로그래밍/소프트웨어 교육) 학생들을 위한 소프트웨어 교육 접근법과 도구, 전략
(프로그래밍/소프트웨어 교육) 학생들을 위한 소프트웨어 교육 접근법과 도구, 전략(프로그래밍/소프트웨어 교육) 학생들을 위한 소프트웨어 교육 접근법과 도구, 전략
(프로그래밍/소프트웨어 교육) 학생들을 위한 소프트웨어 교육 접근법과 도구, 전략
 
Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안Online service 계층별 성능 모니터링 방안
Online service 계층별 성능 모니터링 방안
 
Scale up and scale out
Scale up and scale outScale up and scale out
Scale up and scale out
 
숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)숫자 구분자 처리 (Digit group separators)
숫자 구분자 처리 (Digit group separators)
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 
Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2Web service performance_test_using_jmeter_ver1.2
Web service performance_test_using_jmeter_ver1.2
 
Why OpenStack is Operating System?
Why OpenStack is Operating System?Why OpenStack is Operating System?
Why OpenStack is Operating System?
 
프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정프로그래밍 방식의 변천 과정
프로그래밍 방식의 변천 과정
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
 
문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시문돌이가 가르치는 웹 프론트엔드 1차시
문돌이가 가르치는 웹 프론트엔드 1차시
 

Similar to Hello std.io 유명환_20140125

Exynos4210 beginnerrev10
Exynos4210 beginnerrev10Exynos4210 beginnerrev10
Exynos4210 beginnerrev10mimul
 
개방형 데스크톱 OS 기술동향
개방형 데스크톱 OS 기술동향개방형 데스크톱 OS 기술동향
개방형 데스크톱 OS 기술동향
Kevin Kim
 
OSHWA를 중심으로 하는 OSHW의 이해
OSHWA를 중심으로 하는 OSHW의 이해OSHWA를 중심으로 하는 OSHW의 이해
OSHWA를 중심으로 하는 OSHW의 이해
Jinbuhm Kim
 
모두가 함께하는ROS 워크숍
모두가 함께하는ROS 워크숍모두가 함께하는ROS 워크숍
모두가 함께하는ROS 워크숍
Suhan Park
 
20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)
Yoonseok Pyo
 
델파이 @22
델파이 @22델파이 @22
델파이 @22
Devgear
 
소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자
Deogtae Kim
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
NDOORS
 
150427 크로스플랫폼과qt
150427 크로스플랫폼과qt150427 크로스플랫폼과qt
150427 크로스플랫폼과qt
DONGHYUN KIM
 
오픈소스 소프트웨어(박준영/2014)
오픈소스 소프트웨어(박준영/2014)오픈소스 소프트웨어(박준영/2014)
오픈소스 소프트웨어(박준영/2014)
licubeclub
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
Juseok Kim
 
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
Ji-Woong Choi
 
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
Ubuntu Korea Community
 
컴퓨터개론06
컴퓨터개론06컴퓨터개론06
컴퓨터개론06
Edward Hwang
 
Native A/V
Native A/VNative A/V
Native A/V
Sungmin Park
 
In c
In cIn c
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
Ubuntu Korea Community
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
중선 곽
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
Ubuntu Korea Community
 

Similar to Hello std.io 유명환_20140125 (20)

Exynos4210 beginnerrev10
Exynos4210 beginnerrev10Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
 
개방형 데스크톱 OS 기술동향
개방형 데스크톱 OS 기술동향개방형 데스크톱 OS 기술동향
개방형 데스크톱 OS 기술동향
 
OSHWA를 중심으로 하는 OSHW의 이해
OSHWA를 중심으로 하는 OSHW의 이해OSHWA를 중심으로 하는 OSHW의 이해
OSHWA를 중심으로 하는 OSHW의 이해
 
모두가 함께하는ROS 워크숍
모두가 함께하는ROS 워크숍모두가 함께하는ROS 워크숍
모두가 함께하는ROS 워크숍
 
20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)20160406 ROS 1차 강의 (for 아스라다 팀)
20160406 ROS 1차 강의 (for 아스라다 팀)
 
델파이 @22
델파이 @22델파이 @22
델파이 @22
 
소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자소프트웨어 중심 시대를 준비하자
소프트웨어 중심 시대를 준비하자
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
150427 크로스플랫폼과qt
150427 크로스플랫폼과qt150427 크로스플랫폼과qt
150427 크로스플랫폼과qt
 
오픈소스 소프트웨어(박준영/2014)
오픈소스 소프트웨어(박준영/2014)오픈소스 소프트웨어(박준영/2014)
오픈소스 소프트웨어(박준영/2014)
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
 
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
[오픈소스컨설팅]엔터프라이즈 오픈소스 도입전략
 
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
머신러닝/딥러닝 개발자/연구자에게 필요한 개발/연구 환경
 
컴퓨터개론06
컴퓨터개론06컴퓨터개론06
컴퓨터개론06
 
Native A/V
Native A/VNative A/V
Native A/V
 
In c
In cIn c
In c
 
조재완
조재완조재완
조재완
 
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)강분도 - 공개SW개발과 우분투 (2010Y10M05D)
강분도 - 공개SW개발과 우분투 (2010Y10M05D)
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
 

Hello std.io 유명환_20140125

  • 1. 안드로이드는 OS가 아니라 플랫폼이다! 유 명 환 funfun.yoo@gmail.com
  • 2. 목차 1 운영체제? 플랫폼?? 2 왜 플랫폼을 알아야 할까? 3 학생 개발자들에게...
  • 4. 운영체제? 운영 체제 위키백과, 우리 모두의 백과사전. 운영 체제(運營體制, 문화어: 조작체계) 또는 오퍼레이팅 시스템(OS, operating system)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다. 최근에는 가상화 기술의 발전에 힘입어 실제 하드웨어가 아닌 하이퍼바이저 위에서 실행되기도 한다. 입출력과 메모리 할당과 같은 하드웨어 기능의 경우 운영 체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 중재 역할을 한다.[1][2] 그러나 응용 프로그램 코드는 일반적으로 하드웨어에서 직접 실행된다. 운영 체제는 휴대 전화, 게임기에서부터 슈퍼 컴퓨터, 웹 서버에 이르기까지 컴퓨터를 포함하는 거의 모든 장치에서 볼 수 있다. 운영 체제는 한 면으로는 소비자를, 다른 한 면으로는 프로그램 개발자를 함께 하나의 시장으로 데려다 놓을 수 있는 양면 플랫폼이다. 잘 알려진 현대의 PC 운영 체제에는 마이크로소프트 윈도, 맥 OS X, 리눅스가 있다.[3] 이 밖에 BSD, 유닉스 등의 PC용 운영 체제도 존재한다. 운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등의 자원들을 사용할 수 있도록 만들어 주고, 이들을 추상화하여 파일 시스템 등의 서비스를 제공한다. 또한 멀티태스킹을 지원하는 경우, 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제는 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이는 효과를 낸다.
  • 5. 플랫폼?? 컴퓨팅 플랫폼 위키백과, 우리 모두의 백과사전. 컴퓨팅 플랫폼(영어: computing platform)은 소프트웨어가 구동 가능한 하드웨어 아키텍처나 소프트웨 어 프레임워크(응용 프로그램 프레임워크를 포함하는)의 종류를 설명하는 단어이다. 일반적으로 플랫폼은 컴퓨터의 아키텍처, 운영 체제(OS), 프로그램 언어, 그리고 관련 런타임 라이브러리 또는 GUI를 포함한다. 플랫폼은 소프트웨어 응용 프로그램들을 돌리는 데 쓰이는 하드웨어와 소프트웨어의 결합이다. 플랫폼은 하나의 운영 체제 또는 컴퓨터 아키텍처라고 단순히 말할 수 있으며 그 두 가지를 통칭해서 말할 수도 있 다. 아마 가장 친근한 플랫폼은 x86 아키텍처에서 돌아가는 마이크로소프트 윈도일 것이다. 잘 알려진 다른 데스크톱 컴퓨터 플랫폼들은 리눅스와 맥 오에스 텐을 포함한다. 그러나 휴대 전화와 같은 많은 장치들은 효과적으로 컴퓨터 플랫폼이라고도 하지만 보통 그렇게 불리진 않는다. 응용 프로그램 소프트웨어는 특정한 플랫폼-하드웨어나 운영체제, 아니면 가상 기기의 기능들에 맞추기 위 해 프로그래밍 된다. 자바 플랫폼은 가상 기기 플랫폼으로 여러 가지의 운영체제와 하드웨어에서 실행되며 소프트웨어가 만들어지는 일반적인 플랫폼의 한 종류이다. 플랫폼은 소프트웨어 개발 중에서도 핵심적이고도 기술적으로 어려운 부분이다. 플랫폼을 간략히 정의해 보자면 소프트웨어를 실행할 수 있는 기반이라고 하겠다. 또한 플랫폼은 이를 이용하는 소프트웨어 개발자 에게는 다른 어떤 플랫폼 위에서 자신의 로직 코드가 돌아가건 동일하게 작동할 수 있도록 약속하는 하나 의 계약이기도 하다. 로직 코드란 바이트 코드, 소스 코드 그리고 기계 코드도 될 수 있다. 이를 통해 프로 그램의 실행이 특정 운영체제에 제약되지 않을 수 있다. 이는 언어 독립적으로, 기계들을 쉽게 교체할 수 있게 한다.
  • 8. 플랫폼의 정의 Platform = CPU + OS + Tool Android = ARM/x86 + Linux + Ubuntu/Eclipse
  • 9. 플랫폼의 정의 Android = ARM/x86 + Linux + Ubuntu/Eclipse
  • 10. 플랫폼의 정의 Android = ARM/x86 + Linux + Ubuntu/Eclipse if. 셋탑박스 업체에서 안드로이드 전용 셋탑박스를 개발하려면? - 보통 셋탑박스는 MIPS 프로세서 + Linux 로 개발됨.
  • 11. 플랫폼의 정의 Android = ARM/x86 + Linux + Ubuntu/Eclipse 안드로이드는 Linux 의 커널 만을 사용할 뿐 커널 외 부분은 안드로이드의 독자적인 부분이라 운영체제로 불려야 한다? system.img data.img ramdisk.img
  • 12. 플랫폼의 정의 Android = ARM/x86 + Linux + Ubuntu/Eclipse if. Linux 대신 다른 운영체제로 바꿀 수는 없을까?
  • 13. 플랫폼의 정의 Android = ARM/x86 + Linux + Ubuntu/Eclipse 안드로이드 빌드 시 우분투 외 다른 운영체제에서는 안되나? http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=6 페도라에서 안드로이드 빌드하기 (2008-10-26)
  • 14. 플랫폼의 정의 Android = ARM/x86 + Linux + Ubuntu/Eclipse 안드로이드 앱 개발 시 이클립스 외에 다른 건 없나?
  • 15. 플랫폼의 정의 ★ 결국 “플랫폼” 이란 “개발 상의 제약” 을 뜻함!! ※ 제약이 있음에도 플랫폼을 채택하는 이유는?
  • 17. 왜 플랫폼을 알아야 할까? ★ 개발의 시작이 바로 “플랫폼” 이다! ★ 개발자가 반드시 알아야 할 가장 기본 중의 기본! ★ 수없이 쏟아져 나오는 신 기술들에 대한 분석 기준! ※ ‘개발자’ 와 ‘직장인’ 을 구분하자.
  • 21. 우리는 플랫폼에 대해 얼마나 알고 있을까? ▶ 왜 프로그램은 반드시 ‘메모리’ 에 올린 이후에 실행이 되는 걸까? ▶ 가상 메모리는 왜 사용하는 것일까? ▶ C 언어 전역변수는 초기화하지 않으면 왜 “0” 으로 초기화되는걸까? ▶ 왜 C 언어에서는 사용하지 말라는 GOTO 문이 있는 걸까? ▶ 어플리케이션 작성 시 스택(Stack) 사이즈를 할당해 본 적이 있나? ▶ 인터럽트 서비스 루틴은 소프트웨어 호출에 의해서 실행되는 걸까? ▶ 어플리케이션에서 사용할 수 있는 함수의 개수는 총 몇 개일까? ▶ 안드로이드 앱에 왜 main 메쏘드가 없을까? ▶ 안드로이드 앱의 R.java 는 왜 수정하면 안될까? 또, 0x 값들은?
  • 22. 우리는 플랫폼에 대해 얼마나 알고 있을까?
  • 23. 우리는 플랫폼에 대해 얼마나 알고 있을까?
  • 24. 우리는 플랫폼에 대해 얼마나 알고 있을까?
  • 25. 우리는 플랫폼에 대해 얼마나 알고 있을까?
  • 26. 우리는 플랫폼에 대해 얼마나 알고 있을까?
  • 27. 우리는 플랫폼에 대해 얼마나 알고 있을까?
  • 28. 우리는 플랫폼에 대해 얼마나 알고 있을까?
  • 30. 저는 Java 개발자였습니다! 엑세스 주식회사, 연구소장, 유명환 ● 주식회사 이분투 대표 ● NIPA, SW아키텍처 실무자 포럼, 임베디드SW 분과장 ● 소프트웨어 마에스트로 4기 멘토 ● 오픈스택 한국 커뮤니티 운영진 ● 현재 저전력 ARM 프로세서 기반 서버 개발 중 ● 현재 Android 기반 산업용 LCD 패널 개발 및 납품 중 ● facebook.com/funfunyoo
  • 32. 드디어 하드웨어를 만나다! 난생 처음으로 Data Sheet 라는 문서를 보게 되었습니다.
  • 33. 드디어 하드웨어를 만나다! 운영체제(OS)라고 다 같은 운영체제가 아님을 처음으로 알았습니다.
  • 34. 드디어 하드웨어를 만나다! 드디어 처음으로 회로도를 설계해 보았습니다.
  • 35. 드디어 하드웨어를 만나다! 결국 변기까지 만들어 보았습니다.
  • 36. 안드로이드를 만나다! 안드로이드는 임베디드 리눅스 개발자들의 고민을 한방에 해결해주었습니다.
  • 37. 우분투를 알게 되다! 우분투를 통해 오픈 소스와 커뮤니티에 대해 깊이 깨닫게 되었습니다.
  • 38. 우분투를 알게 되다! 우분투를 통해 오픈 소스와 커뮤니티에 대해 깊이 깨닫게 되었습니다.
  • 39. 우분투를 알게 되다! 우분투를 알고 나니 새로운 분야가 눈에 들어오기 시작했습니다.
  • 40. 우분투를 알게 되다! 우분투를 알고 나니 새로운 분야가 눈에 들어오기 시작했습니다.
  • 41. 학생 개발자들에게... ★ 기초와 기본을 탄탄하게 닦아야 할 시기! ★ 개발자에게 가장 중요한 것은? ★ 박학다식으로 시작하여 점차 눈높이를 높여나가자! ★ 개발은 결국 ‘사람’ 이 하는 일! → ‘태도’ 의 중요성! ★ 옳고 그르다가 아니라 ‘다르다’ 의 문제다! ★ 욕심은 좋으나 ‘우선순위’ 를 정하자!
  • 42. 학생 개발자들에게... ★ 고정관념을 조심하라! ★ 의사소통 = 말하기 + 글쓰기
  • 44. 그러면 어디서부터 시작해야 될까요? 쉽고 재미있는 것부터 시작하세요!
  • 45. 무엇보다 중요한 건 “재미” 입니다!