리눅스의 특징
- 다중 사용자 및 다중 처리 시스템
- 커널을 포함한 대부분의 응용 프로그램의 소스가 공개된 시스템
- 다양한 네트워크 프로토콜 및 환경 지원
- 다양한 파일 시스템 지원
- 약간의 어셈블리 언어와 C언어로 이루어짐 → 뛰어난 이식성
- 유연성, 확장성
- 안정성, 보안성
- 다양한 배포판 및 프로그램
리눅스의 단점
- 기술지원의 부족 → 커뮤니티 기반
- 특정 하드웨어에 대한 지원 부족 → NVIDIA의 그래픽 드라이버 소스코드 비공개
- 특정 하드웨어에 설치 불가능 및 모든 플랫폼에서 작동하진 않음
- 사용자가 전문 지식을 가지고 있어야 함
리눅스의 기술적 특징
- 계층적 파일 구조 → 루트를 기준으로 하위 디렉터리를 배치하는 구조(트리 구조라고도 부름)
- 장치의 파일화 → 장치들을 모두 파일처럼 다룸
- 가상메모리 사용 → 하드디스크 일부를 메모리 처럼 사용하는 것. 이를 리눅스에서는 스왑 이라 부름
메모리와 하드디스크 사이의 데이터 교환을 스와핑이라 부르며, 스왑 용량의 확인을 위해서는
free
명령을 사용함.
- 동적 라이브러리 지원 → 프로그램에서 특정한 기능을 하는 루틴들을 모아놓은 것을 라이브러리라 부름.
이를 공유하는 것이 공유 라이브러리.
정적 → 컴파일 할 때 라이브러리를 프로그램에 넣음
동적 공유 → 실행 파일 내부에 넣어놓지 않고 실행할 때 가져다 씀 → 메모리 효율성 증가
- 가상 콘솔 → 모니터를 장착한 시스템에 여러가지 가상 화면을 제공해서 사용하는 것