2010년 6월 2일 수요일

Embedded Linux 이해

1. 운영체제(Operating System, OS)란?
컴퓨터 시스템의 전반적인 동작을 제어하고 조정하는 시스템 프로그램들의 집합.

2. OS의 역할
하드웨어와 응용 프로그램 간의 인터페이스 역할을 하면서
CPU, 주기억장치, 입출력장치등의 컴퓨터 자원을 관리.

3. Embedded Linux
공개된 리눅스 커널과 각종 응용 프로그램 소스를
임베디드 시스템에서 동작하도록 최적화 하여 사용하는 운영체제
   * 특징
- 적은 메모리 사용
- 느린 CPU에서 동작
- 특정한 목적의 응용 프로그램 탑재
   * 장점
- GPL(GNU General Public License)를 따르는 공개 소스 소프트웨어
- 두터운 개발자층, 검증된 운영체제
- 모듈 지원(불필요한 부분을 빼고 필요한 부분 추가가 가능하여 이식성 우수)
- 유닉스와 유사한 운영체제 시스템
- 다양한 플랫폼 지원
   * 단점
- 개발 환경 설정이 까다롭다
- Real-time 기능이 취약하다
- 메모리와 전력 소모량이 많다(RTOS와 비교시)
- 다양한 윈도우 시스템이 제공되고 있으나 덩치가 크거나 안저화 작업이 필요하다.

4. Linux Kernel
   * Kernel?
- 운영체제의 핵심부분
- 하드웨어와 운영체제의 다른부분 사이의 중재자 역할을 한다.
   * Micro Kernel
- 커널의 기능을 최소화하고 가장 핵심 기능만 가진다.
- QNX, 카네기 멜론의 마크 3.0(Mach 3.0)
   * Monolithic Kernel
- 커널이 운영체제가 관장하는 모든 서비스를 가진다.(프로그램 실행을 제어하며 데이터와 파일관리)
- 유닉스, 리눅스 시스템
   * 구조
- Process Scheduler
운영체제의 심장이라 할만함.
CPU를 여러 프로세스가 공평하게 사용할 수 있도록 한다.
한 순간에 오직 하나의 프로세스만이 CPU를 점유 가능,
이때 scheduler는 여러 프로세스가 CPU를 공유하여 사용 가능하도록 해준다.
(멀티태스킹이 가능한 것은 바로 이 스케줄러의 역할)
선점형(preemptive):
  프로세스별 사용시간을 지켜보면서 정기적으로 스케줄링, Real time system에 필수적임
  Real time system에서는 중요하고 긴급한 작업을 처리하기 위해 언제든지 다른 작업을 멈추고
    시스템의 자원을 선점할 수 있는 선점형 구조가 필수적임.
비선점형(nonpreemptive):
    프로세스가 자발적으로 CPU사용권을 반납했을 때만 스케줄링,
  모든 작업이 공평하게 진행되며, PC의 윈도우 OS, Linux 등이 대표적임.
  각 프로세스는 time-slice동안 처리하고, time-slice가 지나면 다른 프로세스가 실행된다.
Time-slice: 각 프로세스가 실행되는 최소한의 시간 단위
- Memory Management
여러 개의 프로세스 메인 메모리를 안전하게 공유할 수 있도록 한다.
  - Virtual File System
리눅스는 모두 파일로 관리가 된다.
하드웨어 장치도 파일로 관리 된다.
모든 파일시스템에 대한 공통 인터페이스 제공.
(서로 다른 저장매체라도 user가 access하는 방식은 동일하게 해줌)
VFS가 지원하는 파일시스템:
디스크 기반 FS: HD, FD, CD-ROM, (block device)
네트워크 FS: 다른 네트워크의 컴퓨터에 속한 파일 시스템에 접근(NFS, Coda, AFS)
특수 FS: /proc FS(사용자가 커널의 데이터에 접근할 수 있는 인터페이스제공)
            /dev FS(디바이스를 표준 파일시스템으로 관리할 수 있는 인터페이스 제공)
Root(/) directory를 기준으로 파일 트리 구성.
(모든 파일시스템을 root FS의 서브 디렉토리에 마운트 하여 사용)
File system 사용전에 실행해야 할 동작:
등록(Registration):FS에서 구현한 함수를 커널에서 사용할 수 있도록 하는 동작
                          시스템부팅 또는 FS을 구현하는 모듈을 탑재할 때 등록
Mount: 파일 시스템을 사용하기 위하여 리눅스에 연결하는 동작
Root FS과 일반 FS
root FS: 시스템 부팅하는 동안 파일 시스템 설정 이후에 마운트
일반 FS: root FS 마운트 이후에 root FS의 디렉토리 tree에 마운트
              FS을 마운트하기 위해 mount() 시스템콜을 사용한다.
- Network Interface
표준 네트워크 프로토콜과 드라이버를 제공한다.
- Inter Process Communication(IPC)
프로세스 간에 서로 정보를 교환 할 수 있는 방법을 제공한다.
프로세스들이 상호간의 활동을 조정하기 위하여 프로세스간, 커널과 통신을 하기 위한 메카니즘
종류:
Signal: 간단하고 효율적임
Pipe
Socket
Message Queue: 프로세스간 메시지 교환
Semaphore
Shared Memory: 다른 프로세스가 사용하는 메모리 영역에 대해 직접 접근하여 읽거나 씀
IPC방법중 가장 빠르다.




댓글 없음:

댓글 쓰기