Linux - (3)

­이승환·2021년 7월 14일
0

리눅스 정리

목록 보기
3/21

리눅스의 특징


  1. 다중 사용자 및 다중 처리 시스템
    하나의 시스템에서 다수의 사용자들이 동시 접속이 가능(Multi-User)
    각 접속자들은 다수의 응용프로그램 실행가능 (Multi-Tasking)

  2. 공개된 시스템
    운영체제의 핵심인 커널 뿐만 아니라, 내장되어 배포되는 대부분의 응용 프로그램 소스가 공개되어있다. 각 커널별로 웹사이트도 존재하며 버전별로 스스로 업데이트 할 수 있다.

  3. 네트워크 환경
    이더넷, SLIP, PPP, ATM 등의 다양한 네트워크 환경을 지원하며, TCP/IP, IPX, AppleTalk 등의 프로토콜 또한 지원한다.

  4. 다양한 파일 시스템 지원
    ext2, ext3, ext4 등 다양한 파일 시스템을 지원한다. ReiserFS, XFS, JFS 등 시스템이 다운되엇을 때 이를 즉시 복구 할 수 있는 저널링 파일시스템도 지원하며 SMB, CIFS, NFS, NCPFS 등 네트워크 파일 시스템도 지원한다.

  5. 뛰어난 이식성
    리눅스는 약간의 어셈블리와 대부분의 C 언어로 작성된 만큼 C를 컴파일 할 수 있으면 어셈블리 부분만 새롭게 만들고 다시 컴파일 함으로써 쉽게 다른 시스템을 이식 할 수 있다.

  6. 유연성과 확장성
    리눅스는 상업용 유닉스의 모든 특성을 가짐과 동시에 POSIX(유닉스 표준) 을 준수하는 만큼 공개용 유닉스 프로그램을 문제없이 컴파일 해서 사용 할 수 있다. 장치드라이버, 라이브러리, 응용 프로그램, 개발 도구 등 리눅스의 원시코드를 쉽게 접할 수 있다. 리눅스는 특히 커널 소스가 공개되어 있어서 다양한 채널을 통해 하드웨어 지원을 받을 수 있다.

  7. 뛰어난 안전성과 보안성
    리눅스는 커널 소스가 공개되어 있어서 윈도우와 같은 폐쇄형 운영체제에 비해 보안상의 취약점이 쉽게 노출된 가능성은 적으나, 공개용 소프트웨어를 지지하는 수많은 전문 프로그래머들이 상용 운영체제보다 빠르게 오류 수정 및 패치를 발표한다. 물론 이전에 보안문제로 크게 이슈가 된 경험이 있다.

  8. 가성비
    대부분의 기업에서 사용했던 유닉스를 x86시스템에 최적화시켜 효율적인 방식으로 설계했기 때문에 가성비가 좋다.

  9. 다양한 응용 프로그램의 제공
    커널을 비롯하여 셸, X_Window System, 편집기(vi..), 서버 및 클라이언트 프로그램(WEB, Mail, FTP...), 개발도구(C, C++. Java, Python..) 등을 포함하여 배포한다.

  10. 다양한 배포판의 존재
    레드햇, 수세, 데비안, 우분투 등이 있고 국내용 리눅스도 여럿 존재한다. 같은 리눅스 커널을 사용하지만 시스템도구, 관리시스템, 응용프로그램 등에서 일부 차이가 있으며 OS 별 역할이 다른 경우도 간혹 존재한다.

리눅스의 단점


  1. 기술 지원 부족
    비상업적인 프로그램이 대부분인 만큼, 전 세계에 개발자가 흩어져있다. 따라서 빠르게 기술 지원이 힘든 경우가 존재한다.
  2. 특정 하드웨어 문제
    리눅스가 다른 운영체제에 비해 이식성, 확장성이 좋지만서도 여전히 일부 하드웨어에서 문제가 생길 수 있다고 한다.
  3. 사용자의 숙련도가 중요
    X_WINDOW가 보편화 되어있다고 해도 리눅스 시스템 프로그래밍에 익숙한 개발자가 될 필요가 있다. 또한 진입장벽이 그리 낮지는 않다.

리눅수의 기술적 특징


  1. 계층적인 파일 구조
    파일구조가 디테일하게 나뉘어있다.(나중에 자세히 언급 예정) 계층적 파일구조 혹은 트리구조라고 한다.
  2. 장치의 파일화
    하드웨어적 자원을 모두 파일화 해서 사용한다. 따라서 특정 하드웨어에게 명령을 내릴 수도 있다. 이 역할은 커널이 담당한다
  3. 가상 메모리
    가상메모리란 하드디스크의 일부를 메모리(RAM) 처럼 사용하는 것을 말한다. 하드디스크는 데이터가 저장되는 역할을 하고, 메모리는 작업 공간으로 이해하면 된다. 메모리의 공간이 작으면 큰 프로그램을 실행시킬 수 없는 것이 일반적인데 이때 하드디스크를 일부 메모리(램) 처럼 활용할 수 있다. 이 때 서로 데이터를 교환하는 작업을 Swap 이라고 한다. 스왑 용량의 확인은 아래의 명령어를 사용하여 확인한다.
free -h
  1. 동적 라이브러리 지원
    프로그램 개발 시 라이브러리 중에서 필요한 루틴을 받아서 링크시킨다. 반복적인 작업을 매번 컴파일할 때 프로그램에 넣는 것이 아닌 프로그램을 실행할 떄 가져다 사용하는 방식으로 메모리를 아낄 수 있다.
  2. 가상 콘솔
    콘솔은 최대 6개 존재하며 Ctrl + Alt + F#(1 ~ 6) 을 눌러서 전환 할 수 있다.
  3. 파이프라인
    프로세스간에 통신을 위해 도입된 것이다. 명령어를 수행할때 | 를 이용해서 출력이 다른 프로그램에 입력으로 들어가게 할 수 있다.
// 리스트를 more 로 표시하는 명령어
ls | more
  1. 리다이렉션
    어떤 프로세스의 입/출력을 표춘 입출력이 아닌 다른 입출력으로 변경할 떄 사용한다.
profile
Mechanical & Computer Science

0개의 댓글