Embedded Linux

리눅스 개요

작성자 임베디드코리아 작성일24-11-29 22:18 조회595회 댓글0건
■ 리눅스 개요
      Linux는 리눅스 토르발스(Linux Torvalds)가 1991년에 개발한 오픈소스 운영 체제(OS)이다.
      전 세계의 활발한 사용자 커뮤니티에 힘입어 소매 매장의 POS 시스템부터 세계에서 가장 강력한 슈퍼컴퓨터에 이르기까지
      모든 종류의 기기에서 사용되고 있다.

1. 컴퓨터와 운영체제
    (1)  컴퓨터시스템의구성요소
        ◆ 하드웨어 구성 요소
                - 프로세서(CPU) , 메모리(주기억장치) , 디스크(보조기억장치) , 다양한입출력장치–네트워크, 그래픽, 키보드, 마우스, USB …
    ◆ 소프트웨어 구성 요소
                - 운영체제(OS), 유탈리티, 패키지 등

      (2) 운영체제(Operating System)
            - 하드웨어의 각 장치들을 효율적으로 사용하도록 통합하고 제어 함
        - 응용프로그램이 장치들을  사용할 수 있도록 서비스를 제공 함
        - 사용자/응용프로그램과 하드웨어 간의 인터페이스 역할
            - 컴퓨터 사용자들은 운영체제를 통하여 컴퓨터시스템을 사용 함
        
        ◆  운영체제의 종류
          • MS-DOS, OS/2
         •Windows 95/98, Windows NT/2000/XP/Vista /7 /8 /10
         • UNIX(Solaris, FreeBSD, AIX, HPUX, …), Linux
          • classical Mac OS, OS-X (NeXT OS/BSD UNIX 기반), mac OS Sierra
         • MVS (IBM System/370 mainframe 용), OS/390, z/OS
         • VMS, OpenVMS– VAX (DEC사, 현재 HP에 인수됨) 등

2. 유닉스
  ◆  유닉스(UNIX) 개발
        ►  미국 Bell 연구소의 Ken Thompson이1969년에 개발
        ►  빠르고, 작은 효과적인 간단한 운영체제를 목표로 함
                - MULTICS :  저자가 사용했던 복잡하지만 느린 성능의 운영체제
                  - UNIX : 저자가 개발한 운영체제(UNI : 한 가지일을 잘함)
           ► PDP-7 시스템용으로 개발
          ► 어셈블리언어로 작성

  ◆  UNIX를 고급언어인 C언어로 다시 작성
      ▪ Dennis Ritchie가 C언어를 개발하고,UNIX 코드 재작성 제안
      ▪대부분 C언어로 작성되어 이식성이 좋고, 기능 확장 및 개선이 용이함

  ◆  UNIX source code를 연구용으로 무상 제공
      ▪ 특히 Berkeley대학교에서 UNIX에 대한 많은 연구가 이루어져서 많은 개선이 이루어짐 : 네트워크, 메모리관리 등...
              →  BSD 버전(현재 FreeBSD로 이어짐

  ◆  인터페이스 표준
      ▪운영체제 인터페이스 표준의 필요성
          -  유닉스 버전이 다양해 짐에 따라서 응용프로그램 호환성에 문제가 발생
                → 운영체제 버전에 관계없이 이식성 높은 응용프로그램 개발이 필요

  ◆  POSIX(Portable Operating System Interface)
      ▪ UNIX System V의 응용 프로그램인터페이스와사용자인터페이스를 기반으로 운영체제 interface 표준안이 제정 됨
            → 그렇지만 BSD UNIX 기능들의 대부분을 포함 ( POSIX.1 (IEEE standard 1003.1) )
      ▪ 대부분의 UNIX와Linux가 표준을 지원함

  ◆  POSIX와 응용프로그램 호환성
      ▪ POSIX를 사용하여 작성된 프로그램은 POSIX를 지원하는 운영체제에서실행시킬 수 있다.
      ▪ UNIX/Linux가 아닌 많은 운영체제들도 POSIX를 지원하고 있음

3. 리눅스
  ◆  리눅스 개발
      ▪헬싱키 대학교 학생이던Linus Torvalds가 1991년에 개발한 유닉스호환 운영체제
      ▪UNIX 소스코드와는 독립적으로 교육용 운영체제인 Minix를 학습한 경험을 바탕으로 개발 : Linus’ Minix = Linux

  ◆ 리눅스의 발전
      ▪ Linux 1.0 : 1994년 소스코드를 GPL 라이선스로 공개
      ▪ Linux 2.0 : 1996년  Linux 2.6.39까지 발전
      ▪ Linux 3.0 :  2011년 Linux 3.18.48까지 발전
      ▪ Linux 4.0 :  2015년 2017년 2월말 현재 Linux 4.10까지 발전

  ◆ GNU GPL (General Public License)
      ▪ 누구나 소스코드를 변경, 개발하여 재배포할 수 있다.
      ▪ GPL로 공개된 프로그램에서 파생된 프로그램도저작권을 인정하지 않고 GPL로 공개해야 함.
      ▪ 리눅스가 안정적이고 강력한 운영체제로 발전한 원동력이 됨.

  ◆ 리눅스의 활용 정도
      ▪ 슈퍼컴퓨터용 운영체제의 약 95%
      ▪ 서버용 운영체제의 약60%
      ▪ 데스크톱은 윈도우에 비해서 적음
          - 일반인들이 사용할 수 있는 응용프로그램들이 부족
          - 최근에 Vmware, VirtualBox와 같은 가상 머신을 사용하여 기존 운영체제와 함께 Linux를 설치하여 사용하는 사용자가 증가 추세임
      ▪ Android,  Tizen과 같은 임베디드 시스템용 운영체제도 리눅스커널 기반으로 개발 됨
      ▪ 많은 소형 임베디드 시스템들이 임베디드 리눅스를 사용

  ◆  리눅스의 특징
          1) 오픈 소스 운영체제이다.
              : 소스코드 및 모든 관련 자료가 공개되어 있는 운영체제이다.
          2) 멀티유저(다중사용자), 멀티태스킹(다중작업) 운영체제이다.
              ・ 멀티유저 기능은 여러 사용자가 동시에 동일한 시스템에 접근이 가능한 것을 의미한다.
              ・ 멀티태스킹은 여러 개의 태스크를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있는 기능이다.
              ・ 가상 터미널 환경으로 하나의 모니터에 여러 개의 가상 화면(가상 콘솔)을 두어 화면마다 다른 작업을 실행할 수 있다.
          3) 다중 스레드를 지원하는 네트워크 운영체제이다. 
              ・ 하나의 프로세스 내에서 여러 개의 네트워크 작업을 동시에 처리할 수 있기 때문에 강력한 네트워크 지원이 가능하다.
              ・ 네트워크 서버로 이용이 가능하며 인터넷과 이더넷에 안정적으로 연결이 가능하다.
              ・ 웹브라우저, 메일, 뉴스, 웹 서버 등의 모든 인터넷 서비스 기능을 갖추고 있다.
          4) 여러 종류의 파일 시스템을 지원하는 운영체제이다.
            ・ 리눅스의 기본 파일 시스템인 ext2, ext3, ext4, DOS의 FAT, WINDOWS의 FAT3, NTFS, 네트워크 파일 시스템 SMB, CIFS, NFS 등도 지원한다.

  ◆  리눅스 장점
          1) 리눅스는 유닉스와 완벽하게 호환이 가능하다.
              ・ 리눅스는 POSIX(Portable Operationg System Inferface) 규격을 따르고 있다.
              ・ POSIX는 유닉스 운영체제에 기반을 두고 있는 표준 운영체제 인터페이스이다.
              ・ 리눅스는 POSIX 표준화를 기반하기 때문에 유닉스 소스코드를 전혀 사용하지 않고 개발되었다.
              ・ POSIX 규격을 따르기 때문에 유닉스용 프로그램은 별도의 수정 없이 리눅스에서 동작할 수 있다.
            2) 리눅스는 PC용 운영체제보다 안정적이다.
              ・ 일반 PC는 업무가 끝나면 전원을 끄지만 리눅스는 네트워크 사용을 전제로 설계되었기에 특별한 사항을 제외하고
                  항상 켜놓아도 안정적으로 운영된다.
              ・ 네트워크 기반하의 멀티유저, 멀티태스킹이 가능하여 리눅스 시스템을 많은 작업자가 동시에 사용해도 안정적인 시스템 운영이 가능하다.
          3) 하드웨어 기능을 효과적으로 사용한다.
              ・ 다른 운영체제보다 적은 양의 메모리만을 필요로 한다.
              ・ SWAP 방식을 통해 RAM이 부족한 경우 SWAP 영역을 늘려 메모리의 효율성을 높일 수 있다.
          4) 리눅스는 오픈 소스 운영체제이다.
              ・ 많은 우수 인력이 확보되어 있기 때문에 우수한 소프트웨어 개발이 가능하고 여러 배포판 개발 업체들이 있기 때문에 사용자에게 선택권이 주어진다.
              ・ 다양한 배포판들이 존재하여 운영체제뿐만 아니라 여러 가지 유틸리티 프로그램과 응용 프로그램들을 사용자 편의에 맞춰 무료로 사용할 수 있다.

  ◆  리눅스 단점
          1) 공개 운영체제이기 때문에 문제 발생시 기술 지원을 받는 데 한계가 있다.
            ・ 예상치 못한 오류 발생 시 개발자들의 기술 지원을 직접적으로 받는 것은 불가능하다.
          2) 한글 지원이 미흡하다.
            ・ 배포판마다 별도의 한글 지원 패키지를 설치한 후 사용해야 한다는 불편함이 있다.
          3) 보안상의 취약점이 쉽게 노출될 가능성이 있다.
            ・ 공개 운영체제이기 때문에 보안에 취약할 것이라는 선입관이 있으나 꾸준한 기술 개발로 비교적 높은 보안성을 지원하고 있다.
            ・ 많은 프로그래머들이 리눅스를 연구하고 있기 때문에, 보안 문제가 발생하였을 경우 신속하게 해결될 수 있다.