위로
아래
Linux
Linux (리눅스)
- 운영체제 소프트웨어
- 운영체제의 핵심 요소는 커널
- POSIX표준 (UNIX의 표준 인터페이스)을 따르고 있다
- 특정 벤더의 CPU, 플랫폼에 종속되지 않는 X86 CPU에서 작동하도록 만들어졌다
- 오픈소스 운영체제로 수많은 사용자가 자유롭게 개발 및 배포할 수 있다
- 현재는 FSF (Free Software Foundation)이 GNU 프로젝트를 통해 리눅스 배포판을 제공하므로, GNU/Linux라고도 부른다
부가적인 이야기
- 리누스 토발즈가 학생일 때 개발 (처음에는 커널만 있었음)
- GNU 정신 : 자유로운 개발과 배포
- 마스코트 펭귄 : TUX(턱스). 토발즈가 친근감 있는 동물을 선정한 것으로 Tovolds UniX에서 딴 이름.
용어
- gcc : GNU C 컴파일러
- GNU Emacs : GNU 문서 편집기
- GNOME : X 윈도우
- tar : 파일 압축
- bash : 셸
- Grub : 부트 매니저
리눅스 특징
일반적 특징
- 이식성 (Portability) : 대부분의 코드가 C언어로 작성되어 있어 다양한 하드웨어에 쉽게 이식이 가능
- Free software : 단일 기업 제공이 아니라, 수많은 개발자의 기여를 통해 진화하므로 자유롭게 수정, 사용, 배포할 수 있다
- Multi-User : 다수의 사용자가 네트워크를 통해 한 시스템의 CPU, 메모리, 저장소 등의 자원에 접근하고 사용할 수 있다.
- MultiProgramming : 다수의 프로그램을 메모리에 적재하고 동시에 실행이 가능하다
- 계층적 파일 시스템 (Hierarchical File System) : 표준화된 디렉토리 구조를 사용한다
- Shell : 명령어 기반 프로그램을 제공. 쉘을 통해 커널에게 명령을 내리고 프로그램을 실행한다
- 보안 (Security) : 임의 접근 제어 (DAC, Discretionary Access Control), 강제 접근 제어 (Mandatory Access Control)을 강화한 SELinux (Security Enhanced Linux) 존재
기술적 특징
- 모놀리딕 커널 (monolithic kernel) : 운영체제가 제공하는 서비스(FS, 프로세스 간 통신, IO 등)을 하나의 커널로 구현하여 제공하는 방식
- 장치의 파일화 : 시스템의 모든 자원을 파일로 다룬다.
- 가상 메모리 : 요구 페이징(Demand Paging) 기법을 이용, 동작 중인 프로세스의 메모리만 물리 메모리에 로드하고, 빈도가 낮은 메모리는 디스크에 저장해 물리적인 메모리의 크기를 극복할 수 있다.
- 스왑 (Swap) : 물리 메모리 사용량이 꽉차면 실행 빈도가 낮은 프로세스를 디스크로 옮겨, 물리 메모리를 확보. 동적으로 스왑 크기를 조절할 수는 없어서 하드 디스크의 공간을 차지하는 단점이 있다
- Swap Out : 메모리를 디스크로 옮기는 작업
- Swap In : 디스크에서 메모리로 옮기는 작업
- swap space (스왑 공간) : 메모리에서 디스크로 옮길 때, 디스크에서 사용하는 공간 (이를 위한 전용 파일이나 파티션이 존재해야 한다)
- swap partition (스왑 파티션) : 메모리에 저장된 데이터는 전원 공급이 중단되면 휘발되기 때문에, 휘발되지 않는 디스크에 데이터를 저장하는 것이 필요
- 동적 라이브러리 : 메모리에 한 번 적재하고 나면 여러 프로세스가 매번 동일한 라이브러리를 로드할 필요 없이 공용으로 라이브러리를 사용한다. 메모리 실행 프로그램 크기가 작고 메모리를 효율적으로 활용 가능 / 실행 속도가 느리고 배포에 제약.
- 정적 라이브러리 : 프로세스가 실행될 때 정적 라이브러리가 메모리에 로드되며 여러 프로세스가 같은 정적 라이브러리를 사용해도 중복 적재된다. 실행 속도가 빠르고 배포에 제약이 없음 / 실행 크기가 크다.
- Pipe ( | ) : 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 보낼 수 있는 프로세스 간 통신 방식
- Redirection : 프로세스의 표준 입출력을 파일, 화면, 장치 등에서 입력 받거나 출력할 수 있도록 입출력을 재지정할 수 있는 매커니즘
- 가상 콘솔 (Virtual Console) : 하나의 화면에서 여러 개의 콘솔을 사용할 수 있는 기능을 제공.
리눅스 배포판 계보
Slackware (슬랙웨어) 계열
- 가장 오래된 배포판. 가장 Unix에 가깝다.
- Slackware : 가장 먼저 대중화된 가장 오래된 배포판. 간결함 철학. 유닉스 자체 학습에 적합.
- SUSE : Slackware 리눅스로부터 파생. 유료 라이선스 SUSE Linux Enterprise / 무료 라이선스 openSUSE
- Vector Linux : SOHO, Standard, Light, Live 배포판이 있다
Debian (데비안) 계열
- 기업보다는 자발적 커뮤니티에 의해 탄생한 배포판. APT 패키지 관리자 이용.
- Ubuntu (우분투) : 전세계 사람 누구나 리눅스를 쉽게 사용하자는 철학. 사용자 편의성에 초점을 맞춘 리눅스
- Raspbian (라즈비안) : 라즈베리파이 재단에게 공식 지원을 받는 라즈베리파이 전용 리눅스
- ChromeOS / ChromiumOS : 구글이 설계하고 개발한 웹 애플리케이션 전용 운영체제. 인터넷 탐색을 중점.
- Linux Mint / LMDE : 우분투 기반 Linux Mint와 데비안 기반 LMDE (Linux Mint Debian Edition). 한국 정부가 윈도우에서 벗어나고자 채택하려고 했지만 잘 안 됐다.
RedHat (레드햇) 계열
- 고객 유료 서비스를 통한 수익 창출을 추구. (일반 사용자를 위한 무료 배포판도 있다)
- Fedora (페도라) : 레드햇의 후원과 페도라 커뮤니티의 지원 아래 범용 목적으로 개발된 RPM 기반의 소프트웨어가 결합된 리눅스 배포판 (MeeGo, SailFish OS, Tizen)
- RHEL (RedHat Enterprise Linux) : 페도라를 기반으로 레드햇에서 개발한 리눅스 배포판. 안정성을 목적으로 제작, 유로 라이선스로 레드햇 기술 지원
- CentOS (Community ENTerprise OS) : RHEL가 호환되도록 한 무료 기업용 컴퓨팅 플랫폼 목적
- Oracle Linux : 레드햇 소스코드를 오라클의 어플라이언스에 최적화시킨 리눅스 배포판
- Scientitic Linux : 페르미 국립 가속기 연구소가 RHEL를 기반으로 개발한 상용 기업형 배포판
- Rocky Linux : CentOS 서비스 종료 후 뒤를 잇는 리눅스
Android (안드로이드) 계열
- Android : 휴대용 기기에 최적화. 리눅스 커널을 기반으로 만든 안드로이드 런타임 실행.
- AOSP (Android Open Source Project) : Android는 구글에 의해 개발되지만, 소스코드는 AOSP를 통해 운영. AOSP를 통해 다양한 디바이스에 최적화된 Android를 포팅 및 커스터마이즈할 수 있다.
국내 계열
- 하모니카 : 과기정통부의 전신인 미래창조과학부에서 발표한 "공개 SW 활성화 계획"에서 정부 주도로 개발한 리눅스 민트 기반 개방형 리눅스. 한글화가 잘 되어 있다
- 넘버원 리눅스 : 토종 리눅스 개발을 목표로 PCLinux 기반 KDE 환경을 제공
- 구름 OS : 과학기술정보통신부와 한국전자통신연구원 (ETRI) 산하 국가보안기술 연구소 및 한글과 컴퓨터가 개발한 개방형 OS
리눅스 활용 분야
리눅스 활용 분야
- Server / Mainframe (서버 / 메인프레임) : 낮은 비용과 적은 리소스 사용으로 인해, 대부분의 서버나 슈퍼 컴퓨터에서 사용
- Smart Device (스마트 디바이스) : 스마트폰, 스마트 TV, 태블릿, IVI (차량용) 등의 시스템에서 사용
- Imbeded Device (임베디드 디바이스) : 하드웨어의 제어를 통해 특정 기능을 수행하도록 하는 전자 시스템
- Gamining Device (게이밍 디바이스) : 밸브 사의 Steam Linux, NVIDIA 사의 Shield 등
- Linux Cluster (리눅스 클러스터)
- 고계산용 클러스터 (HPC, High Perfomance Cluster) : 고성능 계산 능력을 제공
- 부하분산 클러스터 (LVS, Linux Virtual Server) : Load Balancer를 운영하여 대규모의 트래픽을 여러 대의 서버로 분산하는 기술
- 고가용성 클러스터 (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