TinyOS
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
TinyOS는 센서 네트워크를 위해 설계된 운영 체제이다. nesC 프로그래밍 언어를 사용하여 개발되며, 컴포넌트 기반 소프트웨어 공학을 통해 구성된다. 비동기 I/O 방식을 사용하며, 작은 바이너리로 컴파일된다. 캘리포니아 대학교 버클리에서 시작된 프로젝트로, 전 세계적으로 많은 개발자와 사용자가 참여하고 있으며, 1999년부터 2012년까지 다양한 버전이 릴리스되었다. TinyOS를 위한 통합 개발 환경(IDE)으로 YETI 2, XPairtise, TinyDT가 있다.
더 읽어볼만한 페이지
- 무선 센서 네트워크 - DASH7
DASH7은 DASH7 Alliance에서 제시하는 무선 데이터 기술로, 액티브 RFID 통신 규격의 문제점을 해결하고 무선 센서 네트워크 분야에서 와이파이 얼라이언스와 유사한 역할을 목표로 하며, 낮은 전력 소비, 장거리 통신, 양방향 통신 지원 등의 특징을 가진다. - 무선 센서 네트워크 - Z-Wave
Z-Wave는 1999년 덴마크에서 개발된 홈 오토메이션 프로토콜로, 900MHz 비허가 주파수를 사용하며, 메시 네트워크를 통해 최대 232개의 장치를 연결하고 S2 보안 기능을 제공하며 스마트 홈 분야에서 널리 사용된다. - 임베디드 운영체제 - 블랙베리 10
블랙베리 10은 2013년에 출시된 블랙베리 리미티드의 모바일 운영 체제로, 터치스크린 및 물리 키보드 스마트폰을 지원하며 제스처 기반 인터페이스, 블랙베리 허브 등의 기능을 제공했으나 2022년에 공식 지원이 종료되었다. - 임베디드 운영체제 - QNX
QNX는 고든 벨과 댄 도지가 개발한 마이크로커널 기반의 실시간 운영 체제로, 산업용 기계 제어 분야에서 신뢰성을 인정받아 현재는 블랙베리가 소유하며 자동차 인포테인먼트 시스템, 자율 주행 시스템 등 다양한 임베디드 시스템에 활용되고, POSIX 표준 준수로 유닉스 계열 소프트웨어와 호환된다. - BSD 라이선스 소프트웨어 - V8 (자바스크립트 엔진)
V8은 구글이 개발한 오픈 소스 자바스크립트 엔진으로, 자바스크립트 코드 실행 속도 향상을 위해 여러 컴파일러를 거쳐 크롬, 노드.js 등에서 활용된다. - BSD 라이선스 소프트웨어 - VP9
VP9는 구글이 개발한 오픈 소스 비디오 코덱으로, VP8보다 압축 효율을 높이고 HEVC보다 나은 성능을 목표로 개발되었으며, WebM 형식으로 사용되고 주요 웹 브라우저와 넷플릭스, 유튜브 등에서 지원했으나 AV1의 등장으로 개발이 중단되었다.
| TinyOS - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
| 개발자 | 타이니OS 얼라이언스 |
| 출시일 | 2000년 |
| 최신 버전 | 2.1.2 |
| 최신 출시일 | 2012년 8월 20일 |
| 시험 버전 | 2.1.3 |
| 마케팅 대상 | 무선 센서 네트워크 |
| 프로그래밍 언어 | nesC |
| 사용 언어 | 영어 |
| 라이선스 | BSD 라이선스 |
| 웹사이트 | 타이니OS 공식 웹사이트 |
| 기술 정보 | |
| 소스 모델 | 오픈 소스 |
| 운영 체제 종류 | 임베디드 운영 체제 |
| 계열 | 임베디드 운영 체제 |
| 작동 상태 | 지원 중 |
2. 구현
TinyOS 코드는 프로그램 코드와 정적으로 연결되며, 사용자 지정 GNU 툴체인을 사용하여 작은 바이너리로 컴파일된다. TinyOS 작업을 위한 개발 플랫폼을 완료하기 위해 관련 유틸리티가 함께 제공된다.
2. 1. 핵심 기능
TinyOS 애플리케이션은 센서 네트워크의 메모리 제한에 최적화된 C 언어의 방언인 nesC 프로그래밍 언어로 작성된다.[1] 보조 도구는 주로 Java와 셸 스크립트 프런트엔드 형태로 제공된다. nesC 컴파일러 및 Atmel AVR binutils 툴체인과 같은 관련 라이브러리 및 도구는 대부분 C로 작성된다.TinyOS 프로그램은 소프트웨어 컴포넌트로 구성되며, 일부는 하드웨어 추상화를 나타낸다. 컴포넌트는 인터페이스를 사용하여 서로 연결된다. TinyOS는 패킷 통신, 라우팅, 감지, 작동 및 저장과 같은 일반적인 추상화를 위한 인터페이스와 컴포넌트를 제공한다.
TinyOS는 완전히 비동기 방식으로, 하나의 콜 스택을 가진다. 따라서 수백 마이크로초보다 오래 걸리는 모든 입출력 (I/O) 작업은 비동기적이며 콜백을 가진다. 기본 컴파일러가 콜 경계를 넘어서 더 잘 최적화할 수 있도록 TinyOS는 nesC의 기능을 사용하여 이벤트라고 불리는 이러한 콜백을 정적으로 연결한다. 비동기 방식은 TinyOS가 하나의 스택으로 높은 동시성을 유지할 수 있도록 하지만, 프로그래머는 많은 작은 이벤트 처리기를 함께 연결하여 복잡한 로직을 작성해야 한다. 더 큰 계산을 지원하기 위해 TinyOS는 지연 프로시저 호출 및 인터럽트 핸들러 하단부와 유사한 태스크를 제공한다. TinyOS 컴포넌트는 OS가 나중에 실행하도록 예약할 태스크를 게시할 수 있다. 태스크는 비선점형이며 선입선출 순서로 실행된다. 이 간단한 동시성 모델은 일반적으로 I/O 중심 애플리케이션에 충분하지만, CPU 부하가 큰 애플리케이션에서는 어려움이 있어 TOSThreads라는 OS용 스레드 라이브러리가 개발되었다. TOSThreads는 유지 관리되지 않으며 사용이 중단되었다.[2]
TinyOS 코드는 프로그램 코드와 정적으로 연결되며, 사용자 지정 GNU 툴체인을 사용하여 작은 바이너리로 컴파일된다. TinyOS 작업을 위한 개발 플랫폼을 완료하기 위해 관련 유틸리티가 제공된다.
2. 2. 비동기 I/O 및 동시성 모델
TinyOS는 비동기 방식으로 작동하며, 하나의 콜 스택을 가진다. 따라서 수백 마이크로초보다 오래 걸리는 모든 입출력 (I/O) 작업은 비동기적이며 콜백을 갖는다.[2] 기본 컴파일러가 콜 경계를 넘어 더 잘 최적화할 수 있도록 TinyOS는 nesC의 기능을 사용하여 이벤트라고 불리는 이러한 콜백을 정적으로 연결한다. 비동기 방식은 TinyOS가 하나의 스택으로 높은 동시성을 유지할 수 있게 하지만, 프로그래머는 복잡한 로직을 작성하기 위해 많은 작은 이벤트 처리기를 함께 연결해야 한다. 더 큰 계산을 지원하기 위해 TinyOS는 지연 프로시저 호출 및 인터럽트 핸들러 하단부와 유사한 태스크를 제공한다. TinyOS 컴포넌트는 OS가 나중에 실행하도록 예약할 태스크를 게시할 수 있다. 태스크는 비선점형이며 선입선출 순서로 실행된다. 이 간단한 동시성 모델은 일반적으로 I/O 중심 애플리케이션에는 충분하지만, CPU 부하가 큰 애플리케이션에서는 어려움이 있어 TOSThreads라는 OS용 스레드 라이브러리가 개발되었다. TOSThreads는 유지 관리되지 않으며 사용이 중단되었다.[2]2. 3. 개발 도구
TinyOS 애플리케이션은 센서 네트워크의 메모리 제한에 최적화된 C 언어의 방언인 nesC 프로그래밍 언어로 작성된다.[1] 관련 도구는 주로 Java와 셸 스크립트 프런트엔드 형태로 제공되며, nesC 컴파일러 및 Atmel AVR binutils 툴체인과 같은 관련 라이브러리 및 도구는 대부분 C로 작성된다.TinyOS 프로그램은 소프트웨어 컴포넌트로 구성되며, 일부는 하드웨어 추상화를 나타낸다. 컴포넌트는 인터페이스를 사용하여 서로 연결된다. TinyOS는 패킷 통신, 라우팅, 감지, 작동 및 저장과 같은 일반적인 추상화를 위한 인터페이스와 컴포넌트를 제공한다.
TinyOS는 완전히 비동기 방식으로, 하나의 콜 스택을 가진다. 수백 마이크로초보다 오래 걸리는 모든 입출력 (I/O) 작업은 비동기적이며 콜백을 가진다. 기본 컴파일러가 콜 경계를 넘어서 더 잘 최적화할 수 있도록 TinyOS는 nesC의 기능을 사용하여 이벤트라고 불리는 이러한 콜백을 정적으로 연결한다. 비동기 방식은 TinyOS가 하나의 스택으로 높은 동시성을 유지할 수 있도록 하지만, 프로그래머는 많은 작은 이벤트 처리기를 함께 연결하여 복잡한 로직을 작성해야 한다. 더 큰 계산을 지원하기 위해 TinyOS는 지연 프로시저 호출 및 인터럽트 핸들러 하단부와 유사한 태스크를 제공한다. TinyOS 컴포넌트는 OS가 나중에 실행하도록 예약할 태스크를 게시할 수 있다. 태스크는 비선점형이며 선입선출 순서로 실행된다. 이 간단한 동시성 모델은 일반적으로 I/O 중심 애플리케이션에 충분하지만, CPU 부하가 큰 애플리케이션에서는 어려움이 있어 TOSThreads라는 OS용 스레드 라이브러리가 개발되었으나, 현재는 유지 관리되지 않고 사용이 중단되었다.[2]
TinyOS 코드는 프로그램 코드와 정적으로 연결되며, 사용자 지정 GNU 툴체인을 사용하여 작은 바이너리로 컴파일된다. TinyOS 작업을 위한 개발 플랫폼을 완료하기 위해 관련 유틸리티가 함께 제공된다.
3. 역사
TinyOS는 DARPA NEST 프로그램의 일환으로 캘리포니아 대학교 버클리에서 시작된 프로젝트이다. 이후 전 세계 수천 명의 학계 및 상업 개발자와 사용자가 참여하는 프로젝트로 성장했다. TinyOS의 자세한 연혁은 "주요 연혁" 하위 섹션에 설명되어 있다.
3. 1. 주요 연혁
- 1999년: 버클리에서 최초의 TinyOS 플랫폼(WeC) 및 OS 구현이 개발됨.[1]
- 2000년: 버클리, rene 플랫폼 설계 및 Crossbow, Inc.와 제휴 (하드웨어 대량 생산). TinyOS 버전 0.43이 SourceForge를 통해 공개됨. 1.0 이전 버전의 TinyOS는 C와 Perl 스크립트의 혼합.[1]
- 2001년: 버클리, mica 플랫폼 개발 및 TinyOS 버전 0.6 릴리스.[1]
- 2002년 2월: 버클리, NEST 프로젝트의 다른 참가자에게 1000개의 mica 노드 배포.[1]
- 2002년 4월: 인텔 연구소와 캘리포니아 대학교 버클리의 협력으로 nesC 프로그래밍 언어 작업 시작.[1]
- 2002년 9월: nesC로 구현된 TinyOS 버전 1.0 릴리스.[1]
- 2003년 8월: TinyOS 버전 1.1 릴리스 (데이터 레이스 감지를 포함한 새로운 nesC 기능 포함).[1]
- 2003년 9월 – 2005년 12월: TinyOS 정기적인 마이너 릴리스 프로세스 시작.[1]
- 2004년 6월: 새로운 플랫폼으로의 포팅 경험을 바탕으로 TinyOS의 다음 단계를 위한 작업 그룹 구성. 그룹은 2.0 작업 시작에 동의.[1]
- 2005년 7월: NEST 프로젝트 종료.[1]
- 2005년 12월: TinyOS 1.1.15, 마지막 1.1 버전 릴리스.[1]
- 2006년 2월: TinyOS 2.0 베타1 릴리스 (캘리포니아주 스탠포드에서 열린 제3회 TinyOS 기술 교환회에서).[1]
- 2006년 7월: TinyOS 2.0 베타2 릴리스.[1]
- 2006년 11월: TinyOS 2.0 릴리스 (콜로라도주 볼더에서 열린 SenSys 컨퍼런스에서).[1]
- 2007년 4월: TinyOS 2.0.1 릴리스 (매사추세츠주 케임브리지에서 열린 제4회 TinyOS 기술 교환회에서).[1]
- 2007년 7월: TinyOS 2.0.2 릴리스. 몇 가지 인터페이스에 약간의 변경 사항이 포함된 TinyOS 2.1 작업 시작.[1]
- 2008년 8월: TinyOS 2.1.0 릴리스.[1]
- 2010년 4월: TinyOS 2.1.1 릴리스.[1]
- 2012년 8월: TinyOS 2.1.2 릴리스[1]
4. 통합 개발 환경 (IDE)
2010년 기준으로, TinyOS를 위한 세 가지 통합 개발 환경(IDE)이 이클립스 플러그인 형태로 제공된다.
- ''YETI 2'', 취리히 연방 공과대학교 (개발 중단)
- ''XPairtise'', 코펜하겐 비즈니스 스쿨의 라스무스 페데르센
- ''TinyDT'', 밴더빌트 대학교
참조
[1]
서적
Programming TinyOS
https://www.cambridg[...]
Cambridge University Press
2009
[2]
웹사이트
TinyOS development repository TOSThreads deprecated
https://github.com/t[...]
2018-12-03
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com