리눅스 장점
다중 사용자 및 다중 처리 시스템
하나의 시스템에 다수의 사용자들이 동시에 접속하여 사용할 수 있고, 각 접속자들은 다수의 응용 프로그램을 실행할 수 있다.
완전히 공개된 시스템
운영체제의 핵심인 커널 뿐만아니라, 같이 내장되어 배포되는 대부분의 응용 프로그램이 소스가 공개된 프로그램이다.
뛰어난 네트워크 환경
가장 널리 쓰이는 이더넷, SLIP, PPP, ATM 등의 다양한 네트워크 환경을 지원하며, TCP/IP, IPX, AppleTalk 등 대부분의 네트워크 프로토콜을 지원한다.
다양한 파일 시스템 지원
프로그램과 자료를 저장하기 위해 리눅스 고유의 파일 시스템인 ext2, ext3, ext4 등을 사용한다. 그러나 고유의 파일 시스템만 지원하는 다른 운영체제와 달리 다양한 파일 시스템을 지원한다. DOS의 FAT, Windows의 FAT32 및 NTFS, CD-ROM의 ISO 9660 등
뛰어난 이식성
약간의 어셈블리와 대부분의 C언어로 작성되어 있기 때문에 C를 컴파일 할 수 있으면 어셈블리 부분만 새롭게 만들고 C부분을 다시 컴파일함으로써 쉽게 다른 시스템에 이식이 가능하다.
유연성과 확장성
리눅스는 상업용 유닉스의 모든 특성을 가지고 있으며, 유닉스의 표준인 포직스를 준수하고 있다. 따라서 공개 유닉스 프로그램들을 컴파일해서 사용 가능하며, 리눅스의 원시코드를 쉽게 접할 수 있고 공개 된 커널 소스를 통해 다양한 지원을 받을 수 있다.
뛰어난 안정성과 보안성
커널 소스가 공개되어 있어서 Windows와 같은 폐쇄형 운영체제에 비해 보안 취약점이 쉽게 노출되나, 빠른 피드백으로 보안 패치를 받을 수 있다.
우수한 가성비
리눅스 시스템은 무료로 배포되고 있으며 기업용 시스템 또한, windows 시스템에 비해 저렴한 가격이 소요된다.
리눅스의 단점
기술지원의 부족
대부분의 응용 프로그램들이 비상업적인 제품이므로 개발자들이 개인으로 기술지원 하는 것이 불가능하다. 문제 해결은 사용자 개인의 몫이다.
사용자의 숙련된 기술이 요구
중요한 설정 등 명령어를 입력하거나 환경 설정 파일을 직접 편집기를 이용해 수정하는 텍스트 기반의 CLI 입력 환경은 다른 운영체제에 비해 사용자의 숙련된 기술이 요구된다.
리눅스의 특징
계층적인 파일 구조
파일 구조는 /(root)를 기준으로 하위 디렉터리에 usr, var, bin 등이 존재하고 usr 밑에는 local, src 등의 디렉터리가 존재한다. 이러한 파일 구조를 계층적 파일 구조 == 트리 구조 라고 한다.
장치의 파일화
장치란 하드디스크, 키보드 등 시스템에 설치된 여러 가지 하드웨어적 자원을 말한다. 리눅스는 이러한 장치들을 모두 파일화하여 사용한다. 특정 하드웨어에게 명령을 수행시키려면 해당 장치 파일에 명령을 내리면 된다.
ex) mount /dev/cdrom
가상메모리 사용
가상메모리란 물리적 저장장치의 일부를 메모리처럼 사용하는 것을 말한다. 프로그램 실행시 메모리 공간을 이용하는데, 용량이 부족하면 실행 시킬 수 없게된다. 이 문제점을 해결하기 위한 방법이 가상메모리를 만들어 이용하는 것이다. 이 가상메모리 영역을 스왑 메모리라고 부른다.
스와핑(Swapping)
메모리에 프로그램들이 많이 올라와 공간이 없는 경우 가상메모리 설정을 통해 추가로 실행시킬 수 있게 된다. 이것은 메모리에 있지만 사용하지 않는 프로그램을 스왑 영역으로 보내어 메모리 공간을 확보하고 실행하기 때문인데 이 물리디스크와 메모리간의 데이터 교환을 스와핑이라고 한다.스왑 용량의 확인은 메모리 확인 명령어 free 를 사용하면 알 수 있다. 옵션 -m 으로 MB 단위 확인이 가능하다.
동적 라이브러리 지원
프로그램에서 특정 기능을 하는 루틴들을 모아 놓은 것을 라이브러리라 하여, 프로그램 개발 시 라이브러리 중 필요한 루틴을 받아 링크 시킨다. 리눅스는 같은 기능을 하는 루틴을 모아 동적 공유 라이브러리에 두어 프로그램을 실행할 때 가져다 사용하여 메모리 효율성을 높인다.
가상 콘솔
하나의 모니터를 장착한 시스템에 여러 개의 가상 화면을 제공해서 사용하는 기능이다. CTRL+ALT+F1~F6 까지 6개의 창을 기본 제공한다. ALT+Fn으로 전환이 가능하다.
파이프 ' | '
프로세스의 통신을 위해 도입한 것으로 어느 프로세스의 표준 출력이 다른 프로세스의 표준 입력으로 쓰이게 하는 것을 말한다.
리다이렉션
어떤 프로세스의 입/출력을 표준 입출력이 아닌 다른 입출력으로 변경할 때 사용한다.
출력 결과를 파일로 저장하거나 파일의 내용을 프로세스의 입력으로 사용하는 기법이다.