자격증/리눅스마스터 1급

리눅스 마스터 1급_1과목_CH1.리눅스의 개요

Leo.K 2023. 3. 24. 17:37

CH.1 리눅스의 개요

1. 운영체제의 개요 

1-1. 운영체제의 이해 

※  운영체제(사용자와 하드웨어의 중간 매개체)의 주요 역할 

  • 하드웨어 제어, 사용자들 간에 하드웨어 자원을 공유하게 해준다. 
  • 스케줄링을 통해 자원을 효율적으로 사용할 수 있도록 해준다.
  • 입출력을 용이하게 한다. 
  • 오류를 사전에 방지하거나 복구한다. 
  • 편리한 사용자 인터페이스를 제공한다. 

※  운영체제의 유형

  • 다중 교환 (Multi-Switching) : 다수의 작업이 동시 실행. foregroud 프로그램에서만 동작한다. 
  • 단일 작업 (Single-Tasking) : 한 번에 하나의 작업만 처리한다.
  • 다중 작업 (Multi-Tasking) : 여러 개의 작업을 동시에 수행한다.
  • 다중 사용자 (Multi-User) : 단일 프로세서에서 여러 사용자의 프로그램이 실행된다. 
  • 대화형 처리 (Interactive Processing) : 대화형으로 작업을 처리 (시분할 처리 기능이 필요)
  • 일괄 처리 (Batch Processing) : 여러 개의 작업을 묶어서 한 번에 처리한다. 
  • 실시간 처리 (Real Time Processing) : 작업의 처리가 지연없이 즉각적으로 처리한다.
  • 분산 처리 (Distributed Processing) : 여러 시스템을 연결하여 작업을 나누어 처리한다.

※  시스템의 성능을 나타내는 4가지 요소

  • 처리 능력 (Throughput) : 단위 시간당 처리 능력
  • 반환 시간 (Turnaround Time) : 작업이 제출되어 결과를 얻을 때까지의 총 소요시간
  • 신뢰도 (Reliability) : 시스템이 얼마나 정확하게 작동되는지를 나타내는 지표
  • 사용 가능도 (Availability) : 시스템에서 곧 사용할 수 있을 정도를 나타내는 지표

※ 가상 메모리

  • 하드디스크의 일부를 메모리(RAM)처럼 사용하는 방식 
  • 하드디스크에서 가상 메모리로 쓰이는 영역을 스왑 영역(swap space) 이라고  한다.
  • 스와핑(swapping) : 메모리와 하드디스크 사이의 데이터 교환

※ 페이지 교체 알고리즘

필요한 페이지가 메모리에 없을 때, 페이지 부재(Page-Fault : 메모리에 적재된 페이지중에 사용 페이지가 없을 때를 가리킨다. 즉, 사용가능한 빈 페이지가 없음)가 발생하고, Backing Store에서 해당 페이지를 찾아 빈 프레임에 로딩해야 하는데, 빈 프레임이 없을 경우 희생 당할 프레임(이미 사용중이지만 새로운 페이지를 위해 메모리에서 쫓아내기)을 고르는 알고리즘이다.

  • FIFO(First In First Out) : 먼저 적재된 페이지를 제거하는 알고리즘
    • 장점 : 구현이  쉽다
    • 단점 : 성능이 좋지 않다. 프레임의 개수가 많아져도 페이지의 부재가 증가한다. (Belady's Abnormaly)
  • LRU(Least Recently Used) : 가장 오랫동안 참조되지 않은 페이지를 제거하는 알고리즘
    • 최적화 알고리즘과 비슷한 효과를 낸다.
    • 성능이 좋은 편으로 많은 OS에서 채택하는 알고리즘이다.
  • LFU(Least Frequently Used) : 최근에 가장 적게 사용된 페이지를 제거하는 알고리즘
    • 교체 대상이 여러개라면 가장 오랫동안 사용하지 않은 페이지를 교체한다.
  • NUR(Not Used Recently) : 참조비트와 변형비트를 사용하여 가장 오랫동안 참조되지 않은 페이지를 제거하는 알고리즘(LRU의 변형)
  • SCR(Second Chance Replacement) : FIFO 알고리즘의 단점을 보완한 알고리즘. 참조비트로 한 번더 기회를 부여

LFU
LRU
FIFO

1-1. 운영체제의 종류

※ 리눅스의 특징

  • CPU 최적화 : 인텔 CPU 뿐만 아니라 AMD와 Cyrix CPU에도 최적화되어 있음
  • 뛰어난 네트워킹 : TCP/IP 뿐만 아니라, IPX/SPX, SLIP, PPP 등의 여러 네트워크 프로토콜을 지원
  • 뛰어난 이식성/확장성 : 다른 OS에 비해 이식성, 확장성이 뛰어남
  • 6개의 가상 콘솔 제공 :하나의 모니터를 장착한 시스템에서 기본적으로 6개의 가상 콘솔을 제공
  • 효율적인 가상메모리

 

2. 리눅스 기초

2-1. 리눅스의 철학

※ GNU 프로젝트 

  • GNU : GNU is Not Unix 라는 뜻의 재귀적 약어
  • 유닉스 호환 자유 소프트웨어들을 개발하는 프로젝트
  • GNU 소프트웨어에는 gcc, emacs, Bash 쉘, GNOME 등이 있다. 

GPL (General Public License)

  • FSF에 의해 만들어진 특별한 오픈소스 라이선스, "카피레프트(copyleft)"
  • FSF(Free Software Foundation, 자유 소프트웨어 재단) - 리차드 스톨만이 설립한 비영리 조직
  • 주요특징
    • 해당 프로그램을 마음대로 배포, 복사, 소스코드 수정이 가능 
    • GPL 프로그램의 소스코드를 수정해 만든 프로그램 도한 GPL을 가진다. 
    • 다른 소프트웨어와의 완전한 통합은 해당 소프트웨어가 GPL을 수용한다는 조건하에서만 허용 (독점 소프트웨어와 결합이 불가능하다.)
    • 독점 소프트웨어와 결합 시 해당 영역의 소스를 공개해야 한다.

LGPL (Lesser General Public License)

  • GPL의 조건을 완화시킨 라이선스 (GPL의 특징 중 전염성을 완화)
  • LGPL 프로그램의 소스코드를 이용하여 만든 프로그램을 판매/배포 시 프로그램 소스 공개 의무가 없고 LGPL 소스코드를 사용했음을 명시하면 된다. 하지만 수정한 경우는 전체 코드를 공개해야 한다. 
  • 독점 소프트웨어와 결합이 가능하다.

※ BSD (Berkeley Software Distribution) 라이선스

  • BSD 계열 소프트웨어에 적용되는 오픈소스 라이선스
  • 주요 특징 
    • 소스코드 공개의 의무가 없음
    • 저작권자 표기. BSD 라이선스의 소프트웨어를 이용하는 경우, 해당 저작권자의 이름과 BSD 라이선스의 내용을 같이 배포해야 한다. 
    • 독접 소프트웨어와 결합 시 원래 소스의 저작권자와 관련 사항을 표기하면 소스 공개 의무는 없다.

※ GNU/FSF 에서 규정한 자유 소프트웨어 조건

  • 프로그램을 어떠한 목적으로도 실행할 수 있는 자유 
  • 프로그램의 작동 원리를 연구하고, 이를 자신의 필요에 맞게 수정할 수 있는 자유
  • 이웃을 돕기 위해서  프로그램을 복제하고 배포할 수 있는 자유
  • 프로그램을 향상시키고 이를 공동체 전체의 이익을 위해서 다시 환원시킬 수 있는 자유

 

2-1. 리눅스의 역사

※ 리눅스 배포판의 종류

  • 레드햇(RedHat)
    • RPM 기반으로 제작된 리눅스 배포판
    • 현재은 기업용 배포판으로 상업적으로 배포하고 있으며, 무료 버전으로는 페도라가 있다.
  • 페도라(Fedora)
    • RPM 기반, 레드햇 계열
    • 레드햇의 지원을 받아 개발 및 유지보수가 이루어진다.
    • 페도라의 업데이트 후에 문제점을 파악하여 레드햇 리눅스에 업데이트를 반영하는 방식으로 운영되고 있다.
  • 데비안(Debian)
    • GNU의 후원을 받는 리눅스 배포판
    • 패키지 설치 및 업그레이드가 단순하다. (패키지 관리 -> dpkg, apt)
  • 우분투(Ubuntu)
    • 데비안 계열
    • 영국 회사인 캐노니컬의 지원을 받음
    • 유니티라는고유한 데스크톱 환경을 사용
  • 슬랙웨어(Slackware)
    • 초창기에 나온 배포판으로 현재까지 살아있는 가장 오래된 배포판
    • 패트릭 볼커딩에 의해 만들어짐
    • 구조가 간결하지만 설치과정이 어렵고 패키지 관리가 어려워 많이 사용되지는 않는다.
  • 오픈수세(openSUSE)
    • 대표 기능으로 YaST 유틸리티가 있다.
    • 여러가지 데스크탑 환경(KDE, GNOME 등)의 버전이 있으며, KDE 판이 가장 유명하다.
  • 맨드레이크(Mandrake)
    • RPM 기반
    • 단순함을 추구하며 다양한 데스크탑 환경을 제공한다.
    • 우리나라의 리눅스 배포판
    • SULinux, 안녕 리눅스, 아시아눅스 등
  • Chrome OS
    • 구글에서 개발한 리눅스 기반 OS
    • 인터페이스는 웹 브라우저인 크롭과 비슷하다.

※ 리눅스 커널이 사용된 모바일 OS

  • 안드로이드(Android)
    • C/C++ 라이브러리등을 포함하는 오픈소스 플랫폼
    • 가상머신은 Java 가상머신이 아니라 구글에서 자체 개발한 달빅(Dalvik) 가상 머신을 사용한다.
  • 바다(Bada) OS
    • 삼성에서 개발한 리눅스 커널 기반의 OS
    • 미고(MeeGo)와 리모(LiMo)가 통합된 타이젠과 통합되었다.
  • 타이젠(Tizen) OS
    • 삼성과 인텔의 주축으로 개발된 오픈소스 OS이다. 
    • HTML5 기반으로 만들어졌으며, 자바스크립트, CSS와 같은 웹 표준을 지원한다.

참조 
- https://code-lab1.tistory.com/60