리눅스(linux) 익히기 - 리눅스 기본 이해

1. 리눅스 기본 이해

1.1. 초간단 리눅스 배경 이해

  • 컴퓨터의 운영체제 중 하나로 리누스 토르발스(Linus Torvalds)에 의해 시작된 다중 사용자, 다중 작업을 지원하는 유닉스(UNIX)와 유사한 운영체제

  • GNU 프로젝트

    • GNU = Gnu is not Unix
    • 유닉스(UNIX) 운영체제를 여러 회사에서 각자 개발하며, 소스를 공유하지 않는 문화에 반발
    • 리차드 스톨먼이라는 사람이 초기 컴퓨터 개발 공동체의 상호협력적인 문화로 돌아갈 것을 주장하며 1985년 3월에 GNU 선언문을 발표
    • GNU 프로젝트를 지원하기 위해 자유 소프트웨어 재단(FSF) 설립과 GNU 공개 라이선스(GPL)라는 규약 제공

  • GNU 프로젝트와 리눅스

    • 초기 운영체제 개발에 필요한 라이브러리, 컴파일러, 에디터, 유닉스 쉘 개발
    • 이를 지원하는 운영체제 커널 개발 시도 (GUN Hurd: https://ko.wikipedia.org/wiki/GNU_%ED%97%88%EB%93%9C)
    • 리누스 토발즈가 리눅스 커널 발표. 이를 GNU 프로젝트에서 수용하면서, GNU 프로젝트 산출물과 통합 및 개발 지속

  • 리눅스 특징

    1. 유닉스 기반
      • 리눅스 커널 자체가 유닉스의 미닉스(Minix)를 참고하여 개발

    2. 다중 사용자와 멀티 태스킹을 지원
      • 리눅스는 다중 사용자 (하나의 컴퓨터에 여러 사용자가 로그인 및 사용 가능) 와 멀티 태스킹(한번에 여러 프로세스 실행 가능)을 지원

    3. 자유 소프트웨어
      • 리눅스 자유 소프트웨어 라이센스
      • 누구나 소스 코드 활용 및 수정, 재배포 가능
      • 리눅스 커널 및 관련 다양한 소프트웨어를 패키지로 묶어서 배포하는 것을 리눅스 배포판이라고 함(예: ubuntu)

1.2. 초간단 리눅스 구조

  • 리눅스는 리눅스 커널 + 쉘 + 컴파일러 + 다양한 소프트웨어를 포함한 하나의 패키지를 지칭


  • 다양한 소프트웨어가 리눅스 커널이 관리하고 있는 시스템 자원을 마구 사용할 경우, 시스템 안정성에 심각한 문제가 초래됨
  • 운영체제가 시스템 자원을 관리하고, 다양한 소프트웨어는 리눅스 커널이 제공하는 시스템 콜을 통해 시스템 자원 사용을 요청
  • 시스템 콜은 쉘, 다양한 언어별 컴파일러, 라이브러리를 통해 호출되게 됨
  • 리눅스 커널은 시스템 자원을 관리
    ■ 프로세스 관리(Process Management)
    ■ 메모리 관리(Memory Management)
    ■ 파일 시스템 관리(File System Management)
    ■ 디바이스 관리(Device Management)
    ■ 네트워크 관리(Network Management)