위로 아래

Linux 

Linux (리눅스)

  1. 운영체제 소프트웨어
  2. 운영체제의 핵심 요소는 커널
  3. POSIX표준 (UNIX의 표준 인터페이스)을 따르고 있다
  4. 특정 벤더의 CPU, 플랫폼에 종속되지 않는 X86 CPU에서 작동하도록 만들어졌다
  5. 오픈소스 운영체제로 수많은 사용자가 자유롭게 개발 및 배포할 수 있다
  6. 현재는 FSF (Free Software Foundation)이 GNU 프로젝트를 통해 리눅스 배포판을 제공하므로, GNU/Linux라고도 부른다

 

부가적인 이야기

  1. 리누스 토발즈가 학생일 때 개발 (처음에는 커널만 있었음)
  2. GNU 정신 : 자유로운 개발과 배포
  3. 마스코트 펭귄 : TUX(턱스). 토발즈가 친근감 있는 동물을 선정한 것으로 Tovolds UniX에서 딴 이름.

 

용어

  1. gcc : GNU C 컴파일러
  2. GNU Emacs : GNU 문서 편집기
  3. GNOME : X 윈도우
  4. tar : 파일 압축
  5. bash : 셸
  6. Grub : 부트 매니저

 

 


리눅스 특징

일반적 특징

  1. 이식성 (Portability) : 대부분의 코드가 C언어로 작성되어 있어 다양한 하드웨어에 쉽게 이식이 가능
  2. Free software : 단일 기업 제공이 아니라, 수많은 개발자의 기여를 통해 진화하므로 자유롭게 수정, 사용, 배포할 수 있다
  3. Multi-User : 다수의 사용자가 네트워크를 통해 한 시스템의 CPU, 메모리, 저장소 등의 자원에 접근하고 사용할 수 있다.
  4. MultiProgramming : 다수의 프로그램을 메모리에 적재하고 동시에 실행이 가능하다
  5. 계층적 파일 시스템 (Hierarchical File System) : 표준화된 디렉토리 구조를 사용한다
  6. Shell : 명령어 기반 프로그램을 제공. 쉘을 통해 커널에게 명령을 내리고 프로그램을 실행한다
  7. 보안 (Security) : 임의 접근 제어 (DAC, Discretionary Access Control), 강제 접근 제어 (Mandatory Access Control)을 강화한 SELinux (Security Enhanced Linux) 존재

 

기술적 특징

  1. 모놀리딕 커널 (monolithic kernel) : 운영체제가 제공하는 서비스(FS, 프로세스 간 통신, IO 등)을 하나의 커널로 구현하여 제공하는 방식
  2. 장치의 파일화 : 시스템의 모든 자원을 파일로 다룬다. 
  3. 가상 메모리 : 요구 페이징(Demand Paging) 기법을 이용, 동작 중인 프로세스의 메모리만 물리 메모리에 로드하고, 빈도가 낮은 메모리는 디스크에 저장해 물리적인 메모리의 크기를 극복할 수 있다.
  4. 스왑 (Swap) : 물리 메모리 사용량이 꽉차면 실행 빈도가 낮은 프로세스를 디스크로 옮겨, 물리 메모리를 확보. 동적으로 스왑 크기를 조절할 수는 없어서 하드 디스크의 공간을 차지하는 단점이 있다
    1. Swap Out : 메모리를 디스크로 옮기는 작업
    2. Swap In :  디스크에서 메모리로 옮기는 작업
    3. swap space (스왑 공간) : 메모리에서 디스크로 옮길 때, 디스크에서 사용하는 공간 (이를 위한 전용 파일이나 파티션이 존재해야 한다)
    4. swap partition (스왑 파티션) : 메모리에 저장된 데이터는 전원 공급이 중단되면 휘발되기 때문에, 휘발되지 않는 디스크에 데이터를 저장하는 것이 필요
  5. 동적 라이브러리 : 메모리에 한 번 적재하고 나면 여러 프로세스가 매번 동일한 라이브러리를 로드할 필요 없이 공용으로 라이브러리를 사용한다. 메모리 실행 프로그램 크기가 작고 메모리를 효율적으로 활용 가능 / 실행 속도가 느리고 배포에 제약.
  6. 정적 라이브러리 : 프로세스가 실행될 때 정적 라이브러리가 메모리에 로드되며 여러 프로세스가 같은 정적 라이브러리를 사용해도 중복 적재된다. 실행 속도가 빠르고 배포에 제약이 없음 / 실행 크기가 크다.
  7. Pipe ( | ) : 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 보낼 수 있는 프로세스 간 통신 방식
  8. Redirection : 프로세스의 표준 입출력을 파일, 화면, 장치 등에서 입력 받거나 출력할 수 있도록 입출력을 재지정할 수 있는 매커니즘
  9. 가상 콘솔 (Virtual Console) : 하나의 화면에서 여러 개의 콘솔을 사용할 수 있는 기능을 제공.

 

 

 

 


리눅스 배포판 계보

Slackware (슬랙웨어) 계열

  1. 가장 오래된 배포판. 가장 Unix에 가깝다.
  2. Slackware : 가장 먼저 대중화된 가장 오래된 배포판. 간결함 철학. 유닉스 자체 학습에 적합.
  3. SUSE : Slackware 리눅스로부터 파생. 유료 라이선스 SUSE Linux Enterprise / 무료 라이선스 openSUSE
  4. Vector Linux : SOHO, Standard, Light, Live 배포판이 있다

 

Debian (데비안) 계열

  1. 기업보다는 자발적 커뮤니티에 의해 탄생한 배포판. APT 패키지 관리자 이용.
  2. Ubuntu (우분투) : 전세계 사람 누구나 리눅스를 쉽게 사용하자는 철학. 사용자 편의성에 초점을 맞춘 리눅스
  3. Raspbian (라즈비안) : 라즈베리파이 재단에게 공식 지원을 받는 라즈베리파이 전용 리눅스
  4. ChromeOS / ChromiumOS : 구글이 설계하고 개발한 웹 애플리케이션 전용 운영체제. 인터넷 탐색을 중점.
  5. Linux Mint / LMDE : 우분투 기반 Linux Mint와 데비안 기반 LMDE (Linux Mint Debian Edition). 한국 정부가 윈도우에서 벗어나고자 채택하려고 했지만 잘 안 됐다.

 

RedHat (레드햇) 계열

  1. 고객 유료 서비스를 통한 수익 창출을 추구. (일반 사용자를 위한 무료 배포판도 있다)
  2. Fedora (페도라) : 레드햇의 후원과 페도라 커뮤니티의 지원 아래 범용 목적으로 개발된 RPM 기반의 소프트웨어가 결합된 리눅스 배포판 (MeeGo, SailFish OS, Tizen)
  3. RHEL (RedHat Enterprise Linux) : 페도라를 기반으로 레드햇에서 개발한 리눅스 배포판. 안정성을 목적으로 제작, 유로 라이선스로 레드햇 기술 지원
  4. CentOS (Community ENTerprise OS) : RHEL가 호환되도록 한 무료 기업용 컴퓨팅 플랫폼 목적
  5. Oracle Linux : 레드햇 소스코드를 오라클의 어플라이언스에 최적화시킨 리눅스 배포판
  6. Scientitic Linux : 페르미 국립 가속기 연구소가 RHEL를 기반으로 개발한 상용 기업형 배포판  
  7. Rocky Linux : CentOS 서비스 종료 후 뒤를 잇는 리눅스

 

Android (안드로이드) 계열

  1. Android : 휴대용 기기에 최적화. 리눅스 커널을 기반으로 만든 안드로이드 런타임 실행.
  2. AOSP (Android Open Source Project) : Android는 구글에 의해 개발되지만, 소스코드는 AOSP를 통해 운영. AOSP를 통해 다양한 디바이스에 최적화된 Android를 포팅 및 커스터마이즈할 수 있다.

 

국내 계열

  1. 하모니카 : 과기정통부의 전신인 미래창조과학부에서 발표한 "공개 SW 활성화 계획"에서 정부 주도로 개발한 리눅스 민트 기반 개방형 리눅스. 한글화가 잘 되어 있다
  2. 넘버원 리눅스 : 토종 리눅스 개발을 목표로 PCLinux 기반 KDE 환경을 제공
  3. 구름 OS : 과학기술정보통신부와 한국전자통신연구원 (ETRI) 산하 국가보안기술 연구소 및 한글과 컴퓨터가 개발한 개방형 OS

 

 

 


리눅스 활용 분야

리눅스 활용 분야

  1. Server / Mainframe (서버 / 메인프레임) : 낮은 비용과 적은 리소스 사용으로 인해, 대부분의 서버나 슈퍼 컴퓨터에서 사용
  2. Smart Device (스마트 디바이스) : 스마트폰, 스마트 TV, 태블릿, IVI (차량용) 등의 시스템에서 사용
  3. Imbeded Device (임베디드 디바이스) : 하드웨어의 제어를 통해 특정 기능을 수행하도록 하는 전자 시스템
  4. Gamining Device (게이밍 디바이스) : 밸브 사의 Steam Linux, NVIDIA 사의 Shield 등
  5. Linux Cluster (리눅스 클러스터)
    1. 고계산용 클러스터 (HPC, High Perfomance Cluster) : 고성능 계산 능력을 제공
    2. 부하분산 클러스터 (LVS, Linux Virtual Server) : Load Balancer를 운영하여 대규모의 트래픽을 여러 대의 서버로 분산하는 기술
    3. 고가용성 클러스터 (High Availability Cluster) : 부하 분산 클러스터와 혼합하여 Primary Node와 Backup Node가 Active - Standby를 하는 이중화 기술

 

 

 


장치명

IDE 방식 하드디스크

첫 번째 하드디스크 : /dev/hda

두 번째 하드디스크 : /dev/hdb

첫 번째 하드디스크 첫 번째 파티션 : /dev/hda1

첫 번째 하드디스크 두 번째 파티션 : /dev/hda2

 

S-ATA, SCSI 방식 하드디스크

첫 번째 하드디스크 : /dev/sda

두 번째 하드디스크 : /dev/sdb

첫 번째 하드디스크 첫 번째 파티션 : /dev/sda1

첫 번째 하드디스크 두 번째 파티션 : /dev/sda2