Skip to content

Introduction

리눅스의 특징

  • 다중 사용자 및 다중 처리 시스템
    • Multi-User
    • Multi-task
  • 완전히 공개된 시스템
    • kernel, application이 공개됨.
  • 뛰어난 네트워크 환경
    • 대부분의 네트워크 프로토콜 지원
  • 다양한 파일 시스템 지원
  • 뛰어난 이식성
    • Linux는 어셈블리어와 대부분의 C언어로 짜여짐.
    • 어셈블리어로 짜여진 부분만 수정하면 쉽게 이식 가능
  • 유연성과 확장성
    • UNIX의 특징 상속, 유닉스 표준(POSIX) 준수. 따라서 UNIX 앱 쉽게 컴파일 가능
    • 특정 H/W에서만 동작하는 UNIX와 달리 커널 소스가 공개되어 다양한 H/W지원이 존재.
  • 뛰어난 안정성과 보안성
    • 공개용 S/W를 지지하는 프로그래머들이 오류 수정과 보안 패치를 빠르게 발표.
  • 우수한 가성비
  • 다양한 응용프로그램의 제공
    • Shell, 기본 명령어
    • X Window 시스템(GUI)
    • 편집기(vi, emaxs)
    • 서버 및 클라이언트 프로그램
    • 개발도구, 보안도구
  • 다양한 배포판

리눅스의 단점

  • 기술지원의 부족
  • 특정 하드웨어에 대한 지원 부족
  • 사용자의 숙련된 기술 요구
    • 여전히 중요한 설정은 명령어를 입력해야 함
    • 관련 환경 설정 파일은 vi와 같은 편집기를 사용

리눅스의 기술적인 특징

  • 계층적인 파일 구조
    • /root를 기준으로 하위 디렉터리가 존재(usr, var, bin 등)
    • 트리 구조라고도 함
  • 장치의 파일화
    • H/W 자원을 모두 파일화하여 관리
    • H/W 장치를 사용하기 위해 해당 파일에 명령을 내림.
  • 가상메모리 사용
    • 메모리 상에 올라와 있는 프로그램을 보조 기억장치에 옮기고 새로운 프로그램을 실행하는 것은 스왑핑이라 함.
    • 스왑을 확인하는 명령어: $ free
    • -m옵션을 사용하면 MB단위로 확인 가능
  • 동적 라이브러리 지원
    • 라이브러리: 프로그램에서 특정 기능을 하는 루틴들을 모아다 놓은 것
    • 실행 파일마다 루틴을 끌어다 쓰는 것은 비효율적임.
    • 공유 라이브러리: 공통되는 루틴을 공유
    • 동적 공유 라이브러리: 프로그램 실행시 라이브러리를 참조
  • 가상 콘솔
    • 하나의 모니터에서 여러 개의 가상화면 제공(6개)
    • [CTRL]+[ALT]+[F1~F6]
  • 파이프
    • 프로세스 통신을 위해 도입
    • | 기호를 사용
    • 여러 개를 사용해서 파이프라인을 구성
      예) $ ls | more
  • 리다이렉션
    • 어떤 프로세스의 입/출력을 표준 이외의 것으로 지정할 때 사용.
      • 입출력 표준: 입력(키보드), 출력(모니터)
    • 출력 결과를 파일로 저장하거나 파일 내용을 프로세스 입력으로 사용하는 기법
    • 종류
      • >: 프로세스 출력을 표준이 아닌 것으로 변경
      • >>: 프로세스 출력을 지정한 출력(파일)에 추가
      • <: 프로세스 입력을 표준이 아닌 것으로 변경

리눅스 디렉토리 종류

  • /: 최상위에 있는 디렉토리로 루트(root) 디렉토리라 함.
  • /bin: ‘binary’의 약자로 명령어들이 담겨 있음.
  • /boot: 부팅시 사용, grub도 여기에 있음.
  • /dev: H/W 장치를 파일화하여 관리
  • /etc: 시스템 환경 설정 파일 및 부팅과 관련된 여러 스크립트 파일
  • /home: 개인 사용자들이 사용하는 파일이나 디렉터리
  • /lib: 각종 라이브러리, 커널 모듈도 여기에 있음.
  • host+found: fsck 명령어로 파일 시스템 복구 시 사용, RHEL 7버전부터 미지원
  • mnt: 하드디스크를 비롯한 저장장치를 마운트
  • /misc: 자동 마운트 프로그램(autofs)에 의해 생성
  • /opt: 응용프로그램 설치에 사용
  • /proc: 가상 파일 시스템으로 운영되는 다양한 프로세스 상태, H/W, 기타 시스템 정보
  • /root: 시스템관리자인 root사용자의 홈 디렉토리
  • /sbin: ‘System Binary’의 약자로 주로 시스템 관리에 대한 명령어들이 담겨 있음.
  • /tmp: 임시 저장 디렉토리, 각종 프로그램이나 소켓 파일, 프로세스 작업 시 임시 파일
  • /usr: 시스템 운영에 필요한 명령, 응용프로그램이 위치(커널소스, 개발도구 등)
  • /var: 시스템 운영 로그 파일과 스풀링과 같은 가변 데이터 보관

리눅스 배포판

초기 리눅스는 커널만을 지칭했으나, 리눅스 커널과 GNU 프로젝트의 라이브러리와 도구들이 포함되면서 OS로 발전되었다. 이렇게 탄생한 OS를 GNU/Linux라 한다. 리눅스 배포판은 리눅스 커널과 GNU 정신을 바탕으로 만들어진 다양한 자유소프트웨어와 공개프로그램으로 구성된 OS이다. 누구나 패키징하여 자유롭게 배포가 가능하기 때문에 다양한 버전이 존재한다.

최초의 리눅스 배포판

1992년 피터 맥도널드에 의해 만들어진 소프트랜딩 리눅스 시스템이 최초의 배포판이다. 리눅스 커널과 GNU 프로그램, 기본적인 유틸리티, X 윈도 시스템을 갖추고 있었다. 당시 인기있는 배포판이었지만, 사용자에 의해 버그가 존재함이 알려졌다. 이는 새로운 리눅스 배포판이 등장하게 되는 계기가 되었다.

주요 리눅스 배포판

  • 슬랙웨어(Slackware)
  • 데비안(Debian)
  • 레드핫(Red Hat)
  • 수세(SUSE)
  • 우분투(Ubuntu)

리눅스 등장 계기

  • GNU: GNU is Not UNIX의 약어로 UNIX와 호환되면서 더 강력한 운영체제를 만들고자 하는 프로젝트
  • FSF(Free Software Foundation): 리처드 스톨먼이 설립한 자유 소프트웨어 재단
    • 자유 소프트웨어
    • 목적에 상관없이 프로그램을 실행시킬 수 있는 자유
    • 프로그램이 어떻게 동작하는 지 학습하고, 필요에 따라서 프로그램을 개작할 수 있는 자유
    • 무료 혹은 유료로프로그램을 재배포할 수 있는 자유
    • 프로그램을 개선시킬 수 있는 자유와 개선된 이점을 공동체 전체가 누릴 수 있는 자유
  • GNU GPL(General Public License)
    • Copyleft: 자유소프트웨어를 의미, S/W를 개인의 소유에 두지만 자유로운 상태를 유지
    • 리처드 스톨만은 관련 라이선스를 GNU GPL로 명명

Last update : 19 juin 2023
Created : 13 septembre 2019