■ 리눅스 개요
Linux는 리눅스 토르발스(Linux Torvalds)가 1991년에 개발한 오픈소스 운영 체제(OS)이다.
전 세계의 활발한 사용자 커뮤니티에 힘입어 소매 매장의 POS 시스템부터 세계에서 가장 강력한 슈퍼컴퓨터에 이르기까지
모든 종류의 기기에서 사용되고 있다.
1. 컴퓨터와 운영체제
(1) 컴퓨터시스템의구성요소
◆ 하드웨어 구성 요소
- 프로세서(CPU) , 메모리(주기억장치) , 디스크(보조기억장치) , 다양한입출력장치–네트워크, 그래픽, 키보드, 마우스, USB …
◆ 소프트웨어 구성 요소
- 운영체제(OS), 유탈리티, 패키지 등
(2) 운영체제(Operating System)
- 하드웨어의 각 장치들을 효율적으로 사용하도록 통합하고 제어 함
- 응용프로그램이 장치들을 사용할 수 있도록 서비스를 제공 함
- 사용자/응용프로그램과 하드웨어 간의 인터페이스 역할
- 컴퓨터 사용자들은 운영체제를 통하여 컴퓨터시스템을 사용 함
◆ 운영체제의 종류
• MS-DOS, OS/2
•Windows 95/98, Windows NT/2000/XP/Vista /7 /8 /10
• UNIX(Solaris, FreeBSD, AIX, HPUX, …), Linux
• classical Mac OS, OS-X (NeXT OS/BSD UNIX 기반), mac OS Sierra
• MVS (IBM System/370 mainframe 용), OS/390, z/OS
• VMS, OpenVMS– VAX (DEC사, 현재 HP에 인수됨) 등
2. 유닉스
◆ 유닉스(UNIX) 개발
► 미국 Bell 연구소의 Ken Thompson이1969년에 개발
► 빠르고, 작은 효과적인 간단한 운영체제를 목표로 함
- MULTICS : 저자가 사용했던 복잡하지만 느린 성능의 운영체제
- UNIX : 저자가 개발한 운영체제(UNI : 한 가지일을 잘함)
► PDP-7 시스템용으로 개발
► 어셈블리언어로 작성
◆ UNIX를 고급언어인 C언어로 다시 작성
▪ Dennis Ritchie가 C언어를 개발하고,UNIX 코드 재작성 제안
▪대부분 C언어로 작성되어 이식성이 좋고, 기능 확장 및 개선이 용이함
◆ UNIX source code를 연구용으로 무상 제공
▪ 특히 Berkeley대학교에서 UNIX에 대한 많은 연구가 이루어져서 많은 개선이 이루어짐 : 네트워크, 메모리관리 등...
→ BSD 버전(현재 FreeBSD로 이어짐
◆ 인터페이스 표준
▪운영체제 인터페이스 표준의 필요성
- 유닉스 버전이 다양해 짐에 따라서 응용프로그램 호환성에 문제가 발생
→ 운영체제 버전에 관계없이 이식성 높은 응용프로그램 개발이 필요
◆ POSIX(Portable Operating System Interface)
▪ UNIX System V의 응용 프로그램인터페이스와사용자인터페이스를 기반으로 운영체제 interface 표준안이 제정 됨
→ 그렇지만 BSD UNIX 기능들의 대부분을 포함 ( POSIX.1 (IEEE standard 1003.1) )
▪ 대부분의 UNIX와Linux가 표준을 지원함
◆ POSIX와 응용프로그램 호환성
▪ POSIX를 사용하여 작성된 프로그램은 POSIX를 지원하는 운영체제에서실행시킬 수 있다.
▪ UNIX/Linux가 아닌 많은 운영체제들도 POSIX를 지원하고 있음
3. 리눅스
◆ 리눅스 개발
▪헬싱키 대학교 학생이던Linus Torvalds가 1991년에 개발한 유닉스호환 운영체제
▪UNIX 소스코드와는 독립적으로 교육용 운영체제인 Minix를 학습한 경험을 바탕으로 개발 : Linus’ Minix = Linux
◆ 리눅스의 발전
▪ Linux 1.0 : 1994년 소스코드를 GPL 라이선스로 공개
▪ Linux 2.0 : 1996년 Linux 2.6.39까지 발전
▪ Linux 3.0 : 2011년 Linux 3.18.48까지 발전
▪ Linux 4.0 : 2015년 2017년 2월말 현재 Linux 4.10까지 발전
◆ GNU GPL (General Public License)
▪ 누구나 소스코드를 변경, 개발하여 재배포할 수 있다.
▪ GPL로 공개된 프로그램에서 파생된 프로그램도저작권을 인정하지 않고 GPL로 공개해야 함.
▪ 리눅스가 안정적이고 강력한 운영체제로 발전한 원동력이 됨.
◆ 리눅스의 활용 정도
▪ 슈퍼컴퓨터용 운영체제의 약 95%
▪ 서버용 운영체제의 약60%
▪ 데스크톱은 윈도우에 비해서 적음
- 일반인들이 사용할 수 있는 응용프로그램들이 부족
- 최근에 Vmware, VirtualBox와 같은 가상 머신을 사용하여 기존 운영체제와 함께 Linux를 설치하여 사용하는 사용자가 증가 추세임
▪ Android, Tizen과 같은 임베디드 시스템용 운영체제도 리눅스커널 기반으로 개발 됨
▪ 많은 소형 임베디드 시스템들이 임베디드 리눅스를 사용
◆ 리눅스의 특징
1) 오픈 소스 운영체제이다.
: 소스코드 및 모든 관련 자료가 공개되어 있는 운영체제이다.
2) 멀티유저(다중사용자), 멀티태스킹(다중작업) 운영체제이다.
・ 멀티유저 기능은 여러 사용자가 동시에 동일한 시스템에 접근이 가능한 것을 의미한다.
・ 멀티태스킹은 여러 개의 태스크를 동시에 실행하고, 교대로 컴퓨터의 자원을 사용할 수 있는 기능이다.
・ 가상 터미널 환경으로 하나의 모니터에 여러 개의 가상 화면(가상 콘솔)을 두어 화면마다 다른 작업을 실행할 수 있다.
3) 다중 스레드를 지원하는 네트워크 운영체제이다.
・ 하나의 프로세스 내에서 여러 개의 네트워크 작업을 동시에 처리할 수 있기 때문에 강력한 네트워크 지원이 가능하다.
・ 네트워크 서버로 이용이 가능하며 인터넷과 이더넷에 안정적으로 연결이 가능하다.
・ 웹브라우저, 메일, 뉴스, 웹 서버 등의 모든 인터넷 서비스 기능을 갖추고 있다.
4) 여러 종류의 파일 시스템을 지원하는 운영체제이다.
・ 리눅스의 기본 파일 시스템인 ext2, ext3, ext4, DOS의 FAT, WINDOWS의 FAT3, NTFS, 네트워크 파일 시스템 SMB, CIFS, NFS 등도 지원한다.
◆ 리눅스 장점
1) 리눅스는 유닉스와 완벽하게 호환이 가능하다.
・ 리눅스는 POSIX(Portable Operationg System Inferface) 규격을 따르고 있다.
・ POSIX는 유닉스 운영체제에 기반을 두고 있는 표준 운영체제 인터페이스이다.
・ 리눅스는 POSIX 표준화를 기반하기 때문에 유닉스 소스코드를 전혀 사용하지 않고 개발되었다.
・ POSIX 규격을 따르기 때문에 유닉스용 프로그램은 별도의 수정 없이 리눅스에서 동작할 수 있다.
2) 리눅스는 PC용 운영체제보다 안정적이다.
・ 일반 PC는 업무가 끝나면 전원을 끄지만 리눅스는 네트워크 사용을 전제로 설계되었기에 특별한 사항을 제외하고
항상 켜놓아도 안정적으로 운영된다.
・ 네트워크 기반하의 멀티유저, 멀티태스킹이 가능하여 리눅스 시스템을 많은 작업자가 동시에 사용해도 안정적인 시스템 운영이 가능하다.
3) 하드웨어 기능을 효과적으로 사용한다.
・ 다른 운영체제보다 적은 양의 메모리만을 필요로 한다.
・ SWAP 방식을 통해 RAM이 부족한 경우 SWAP 영역을 늘려 메모리의 효율성을 높일 수 있다.
4) 리눅스는 오픈 소스 운영체제이다.
・ 많은 우수 인력이 확보되어 있기 때문에 우수한 소프트웨어 개발이 가능하고 여러 배포판 개발 업체들이 있기 때문에 사용자에게 선택권이 주어진다.
・ 다양한 배포판들이 존재하여 운영체제뿐만 아니라 여러 가지 유틸리티 프로그램과 응용 프로그램들을 사용자 편의에 맞춰 무료로 사용할 수 있다.
◆ 리눅스 단점
1) 공개 운영체제이기 때문에 문제 발생시 기술 지원을 받는 데 한계가 있다.
・ 예상치 못한 오류 발생 시 개발자들의 기술 지원을 직접적으로 받는 것은 불가능하다.
2) 한글 지원이 미흡하다.
・ 배포판마다 별도의 한글 지원 패키지를 설치한 후 사용해야 한다는 불편함이 있다.
3) 보안상의 취약점이 쉽게 노출될 가능성이 있다.
・ 공개 운영체제이기 때문에 보안에 취약할 것이라는 선입관이 있으나 꾸준한 기술 개발로 비교적 높은 보안성을 지원하고 있다.
・ 많은 프로그래머들이 리눅스를 연구하고 있기 때문에, 보안 문제가 발생하였을 경우 신속하게 해결될 수 있다.