리눅스의 개요

김명주·2025년 1월 13일

리눅스의 특징

  1. 오픈소스 운영체제
  • 소스코드 및 모든 관련 자료가 공개되어 있는 운영체제
  1. 멀티유저(다중 사용자), 멀티 태스킹(다중 작업) 운영체제
  • 멀티 유저 기능은 여러 사용자가 동시에 동일한 시스템에 접근이 가능한 것을 의미한다.
  • 멀티 태스킹은 여러개의 태스크를 동시에 실행하고 교대로 컴퓨터의 자원을 사용할 수 있는 기능이다.
  • 가상 터미널 환경으로 하나의 모티터에 여러개의 가상 화면을 두어 화면마다 다른 작업을 실행할 수 있다.
  1. 다중 스레드 지원
  • 하나의 프로세스 내에서 여러개의 네트워크 작업 동시 처리 가능
  • 네트워크 서버로 사용이 가능하며 인터넷과 이더넷에 안정적인 연결 가능
  • 모든 인터넷 서비스 기능 갖추고 있음
  1. 여러 종류의 파일 시스템 지원
  • 리눅스의 파일 시스템과 윈도우와 네트워크 파일 시스템까지 지원

리눅스는 누가 개발했나?

  • 리누스 토발즈가 버전 0.01 최초 작성 및 개발, 학습을 목적으로 사용하던 Minix를 기반으로 개발함. 리누스 토발즈는 커널만 개발함.
  • Minix는 앤드루 타넨바움이 개발.
  • Unix는 켄 톰슨이 개발.

리눅스의 장점

  1. 유닉스와 완벽하게 호환
  • 리눅스는 POISX 규격을 따른다.
    • POSIX는 유닉스 운영체제에 기반을 둔 표준 운영체제 인터페이스
    • 리눅스는 POSIX 표준화를 기반, 그렇기에 유닉스 소스코드를 사용하지 않고 개발됨
    • POSIX 규격을 따르므로 유닉스용 프로그램은 수정 없이 리눅스에서 동작 가능
  1. PC 운영체제보다 안정적
  • 리눅스는 네트워크 사용을 전제로 설계됨
  • 항상 켜 놓아도 안정적으로 운영됨
  1. 하드웨어 기능을 효과적으로 사용함
  • 다른 운영체제보다 적은 양의 메모리 필요
  • SWAP 방식을 통해 램이 부족한 경우 Swap 영역을 늘려 메모리 효율을 높일 수 있음
  1. 오픈소스 운영체제
  • 사용자에게 넓은 선택권
  • 여러 유틸프로그램과 응용프로그램을 무료로 사용 가능

리눅스의 단점

  1. 오픈소스이기에 문제 발생 시 기술 지원에 한계 있음
  2. 한글 지원 미흡
  3. 보안상의 취약점이 쉽게 노출될 수 있음
  • 꾸준한 기술 개발로 비교적 높은 보안성 지원
  • 신속한 해결 가능

운영체제의 구조와 기능

디렉터리

  1. 디렉터리란 파일 저장소를 의미하며 리눅스 디렉터리는 항상 최상위 디렉터리 '/' 를 기준으로 하위 디렉터리들이 존재하는 계층적 트리 구조로 구성되어 있다.
  2. 디렉터리 간에는 부모자식 관계를 가진다. 상위 디렉터리와 하위 디렉터리는 부모 디렉터리와 자식 디렉터리로 구분한다.
  3. 디렉터리별 저장 내용은 다음과 같다.
  • / (루트 디렉터리)

    • 모든 리눅스 파일 시스템의 최상위 디렉터리
    • 모든 파일과 디렉터리는 이 디렉터리에서 시작된다
  • /bin (binary)

    • 시스템의 기본 명령어가 저장되는 디렉터리
    • 시스템이 부팅될 때 필요한 기본 명령어들을 포함한다
      예: ls, cp, mv
  • /sbin (System Binary)

    • 시스템 관리자용 명령어들이 저장되는 디렉터리
    • 주로 시스템 설정, 네트워크 구성, 디스크 관리 등과 관련된 명령어들이 포함된다
      예 : fdisk, ifconfig, mount
  • /etc (Etc.)

    • 시스템의 설정 파일들이 저장되는 디렉터리
    • 사용자 계정, 네트워크 설정, 시스템 서비스 설정 등 중요한 설정 파일들이 이 디렉터리에 위치한다.
      예: passwd, hosts, fstab
  • /home (홈 디렉터리)

    • 일반 사용자들의 개인 디렉터리가 위치하는 곳
    • 각 사용자는 자신의 이름으로 된 하위 디렉터리를 가지며, 여기에 개인 파일과 설정을 저장
      예 : /home/username
  • /var (Variable)

    • 시스템의 가변적인 데이터를 저장하는 디렉터리
    • 로그 파일, 메일 큐, 임시 파일 등 시간에 따라 크기가 변하는 파일들이 저장된다.
      예 : /var/log (시스템 로그), /var/spool (프린트 스풀), /var/mail(메일 큐) 등
  • /tmp (Temporary)

    • 임시 파일들을 저장하는 디렉터리
    • 시스템이나 프로그램이 임시로 사용하는 파일들이 이 디렉터리에 저장됨
    • 시스템 재 부팅 시 이 디렉터리의 내용은 삭제된다.
  • /usr (User Binary and data)

    • 사용자의 시스템 관련 프로그램, 라이브러리, 문서 등이 저장되는 디렉터리
    • 시스템의 기본 운영에 필요한 대부분의 프로그램과 데이터가 이 디렉터리에 위치한다.
    • 주요 하위 디렉터리로는 /usr/bin (사용자 명령어), /usr/lib(라이브러리), /usr/share(공유 데이터) 등이 있다.
  • lib (Libraries)
    • 시스템의 핵심 기능을 수행하는 데 필요한 공유 라이브러리 파일들이 저장되는 디렉터리

    • 공유 라이브러리에는 많은 프로그램에서 공통으로 사용하는 함수들이 있어 디스크의 공간을 절약할 수 있으며 동일한 코딩을 할 필요가 없다.

    • 동적 공유 라이브러리를 저장하고 있음.

      • 정적 라이브러리는 컴파일 과정에서 프로그램 내에 라이브러리 루틴의 복사본을 갖도록 컴파일 한다
      • 동적 라이브러리는 실핼 파일 내부에 라이브러리를 넣어두지 않고 프로그램을 실행할 때 가져와 사용하므로 메모리의 효율성이 높다.
    • 커널 모듈과 디바이스 드라이버도 이 디렉터리에 포함됨.

    • 예 :libc.so(C 라이브러리), ld-linux.so (동적 링커) 등

  • /dev (Device Files)

    • 시스템의 하드웨어 장치들을 파일로 표현한 디렉터리, 따라서 특정 장치를 실행하기 위해서는 해당 장치 파일을 실행해야 한다.
    • 모든 하드웨어 장치는 이 디렉터리에 파일로 표현되어 있어, 프로그램이 하드웨어에 접근할 수 있게 한다.
    • 예 : /dev/sda (첫번째 하드디스크), /dev/tty(터미널), /dev/null (널 장치) 등
  • /proc (Process information)

    • 프로세스와 시스템 정보를 제공하는 가상 파일 시스템
    • 실행중인 프로세스의 정보와 시스템 리소스에 대한 실시간 정보를 포함한다.
    • 이 디렉터리의 내용은 실제로 디스크에 저장되지 않고, 커널에 의해 동적으로 생성된다.
    • 디렉터리에서 볼 수 있는 것은 실제 드라이브가 아닌 메모리 상에 저장되어 있다.
    • 예 : /proc/cpuinfo (cpu 정보), /proc/meminfo(메모리 정보), /proc/[PID] (특정 프로세스 정보) 등
  • /sys (System)

    • 시스템 및 하드웨어 정보를 제공하는 가상 파일 시스템
    • 주로 장치 드라이버와 커널 모듈에 대한 정보를 포함
    • 하드웨어 설정을 변경하거나 시스템 정보를 조회할 때 사용된다
    • 예 :/sys/devices (시스템의 모든 장치), /sys/bus (시스템 버스 정보), /sys/class(장치 클래스 정보) 등
  • /boot

    • 부트 디렉터리로 부팅 시 커널 이미지와 부팅 정보 파일 저장
  • /root

    • 시스템 관리자용 홈 디렉토리
  • /mnt

    • 파일 시스템을 일시적으로 마운트할 때 사용
  • /lost+found

    • 결함이 있는 파일에 대한 정보가 저장되는 디렉터리

리눅스 배포판의 특징

  1. 전체 시스템을 구성하는 소프트웨어 패키지 형태

  2. 리눅스 커널, GNU 소프트웨어 및 여러가지 자유 소프트웨어로 구성된 운영체제

    • 쉘, 리눅스 커널, GNU 표준 유틸리티 등으로 구성.
  3. 여러가지 배포판이 있으며 배포판을 구성하는 소프트웨어도 자유롭게 구성되어 있음.

  4. 대표적인 예는 슬랙웨어, 데비안 레드햇 등이 있다.

profile
개발자를 향해 달리는 사람

0개의 댓글