반응형

도전! 임베디드 OS만들기(부제 : 코딩하며 배우는 운영체제 원리)

저자 : 이만우 (숭실대 컴퓨터학부 졸업, SSM, 삼성전자 반도체 총괄중.)

 

이 책을 보고 따라하며 내용을 정리합니다

교수님 환경을 따라하고, 하다가 조금 더 나은 환경으로 구축하겠습니다

 

https://blog.naver.com/goodkus/220199301787

이 블로그를 참조하여 진행합니다. 문제가 된다면 삭제하겠습니다 ^0^

 

 

운영체제란?

 - 응용 프로그램과 하드웨어 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템 소프트웨어. -> 시스템의 자원과 동작을 관리하는 소프트웨어.

 

운영체제의 역할

- 프로세스 관리

- 스레드, 프로세스

- 스케줄링

- 동기화

- IPC

- 저장장치 관리

- 메모리 관리

- 가상 메모리

- 파일 시스템

- 네트워킹

- TCP / IP

- 기타 여러 프로토콜

- 사용자 관리

- 계정 관리

- 접근권한 관리

- 디바이스 드라이버

- 순차접근 장치

- 임의접근 장치

- 네트워크 장치

 

프로세스 관리 

  운영체제에서 작동하는 응용 프로그램을 관리하는 기능. 현재 프로세서를 점유해야 할 프로세스를 결정하고, 프로세서(CPU)를 프로세스에 할당하며, 프로세스 간 공유 자원 접근과 통신 등을 관리.

 

저장장치 관리 

  시스템의 메인 메모리와 하드디스크등을 관리하는 기능.

 

네트워킹 

  네트워킹에 필요한 프로토콜 지원.

 

디바이스 드라이버

하드웨어를 추상화하여 관리해주는 기능.

 

 

 

임베디드 시스템(embedded system)

특정 기능을 수행하는 규모가 있는 전자적 시스템으로 구성되는 컴퓨터 시스템 이며, 실시간(real-time computing) 능력의 제한을 갖는다.

http://ko.wikipedia.org/wiki/%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C_%EC%8B%9C%EC%8A%A4%ED%85%9C

 

 

 

책에서 나오는 나빌룩스란?

 책 저자의 닉네임을 붙여서 만든 임베디드 OS.

 

나빌룩스의 구성. 

- 메모리 관리자

- 메모리 정적 할당

- 메모리 동적 할당

- 태스크 관리자

- 태스크 생성

- 태스크 간 전환(컨텍스트 스위칭)

- 스케줄러

- 메시지 관리자

- 태스크 간 통신

- 상호배제(뮤텍스)

- 세마포어

- 디바이스 드라이버 관리자

- 순차접근 장치 

- 커널 서비스

- OS timer

- 시스템 콜

- IRQ 핸들러

 

 

 

환경 구축하기

  원래 임베디드 장비는 PC에 비해서 성능이 떨어진다. 그래서 PC에서 컴파일하고 빌드하여 나온 이미지를 장비로 옮기는 것이 효율적인데, 그것에 대한 환경을 구축해야한다. 이런 환경을 구축하는 것을 ‘목표 플랫폼에 맞추어 크로스 컴파일 환경을 구축’한다라는 용어로 책에 소개되어 있다. 조금 더 정리하자면 컴파일하고 빌드한 이미지가 목표한 플랫폼에서 실행되도록 환경을 구축한다는 것이다.

 

책 저자가 사용한 플랫폼.

ARM 아키텍쳐. 가장 많이 사용함.
http://ko.wikipedia.org/wiki/ARM_%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98

 

MCU(Micro Controller Unit) :

CPU기능은 물론이고 일정한 용량의 메모리, 입출력 제어 인터페이스, 주변장치 컨트롤러 회로까지 칩 하나에 내장한 반도체.

 

책 저자의 개발환경

1. arm-linux v3.3.2, 이지보드 사용
2. linux, arm-linux v3.3.2, qemu v0.9.1(gcc-3.x), gumstix_uboot 사용. 

 

  1번의 경우 돈이 충분하다면 이지보드를 구입하여 하면 된다. (약 10만원정도로 알고 있다.) 

 

  2번의 경우 qemu의 버전이 옛날 버전이라 gcc를 3.x버전으로 다운그레이드 해야한다.(2014-12 기준으로 ubuntu에는 3.x 패키지를 지원안함.) 번거로운 작업이 된다. 환경구축하다가 빡쳐 죽을뻔했다.

 

 

나의 개발환경

1. ubunt, arm-linux v3.3.2, qemu 최신판, ezboot 사용.
  이렇게 사용 할 것이다. 책에는 qemu 0.9.1버전을 사용하려면 gcc를 다운그레이드 해야하지만 나는 gcc 4.x버전으로 qemu 최신버전을 돌릴 것이다. 

반응형

+ Recent posts