리눅스

  • 리눅스(Linux)는 컴퓨터 운영체제 중 하나이며, 다중 사용자, 다중 작업(멀티 태스킹, 다중 쓰레드)을 지원하는 네트워크 운영체제(Network Operation System)이다.

  • 독점/배타되지 않는 프리 소프트웨어 중 하나로 ‘GNU 프로젝트’에 따라 쉽게 이용할 수 있게 배포되고 있다. 아래는 여러 배포판 종류

    • Ubuntu
    • Debian
    • CentOS
    • Red Hat

    Linux_distro

  • 리눅스 배포판은 리눅스 커널과 자유 소프트웨어(GNU소프트웨어 등)로 구성된 운영체제를 뜻함

    • 리눅스 커널: 유닉스 계열 운영체제의 커널
    • 커널(Kernel): 운영체제의 핵심 부분으로서, 운영체제의 다른 부분 및 응용 프로그램 수행에 필요한 다양한 서비스를 제공
    • GNU 소프트웨어: GNU 프로젝트를 통해 개발된 유닉스 호환 자유 소프트웨어

리눅스 구조

  • 리눅스의 구조는 크게 3가지로 나눠져 있다.

linux_arch

  1. 커널(Kernel)
    • 하드웨어를 직접 제어하고, 프로세스 관리, 메모리 관리, 파일시스템 관리 등을 수행하는 운영체제의 핵심으로, 사용자가 실행시키는 응용프로그램과 하드웨어 사이의 관리자 역할을 수행하며 쉘과 연관되어 쉘에서 명령하는 작업을 수행하고 그 결과를 쉘로 보내는 일을 한다.
  2. 쉘(shell)
    • 쉘은 운영체제에서 사용자가 입력하는 명령을 대신 해석해 커널에게 전달, 실행해주는 프로그램이다. 쉘은 사용자가 입력한 문자열을 해석하고 해당하는 명령어를 찾아서 커널에 작업을 요청하게 된다.
  3. 응용프로그램(Application)
    • 각종 프로그래밍 개발도구, 문서 편집도구, 네트워크 관련 도구 등 다양한 응용프로그램을 제공한다. (Editor, 통신프로그램, X윈도우, 웹서버, DB서버 등)

리눅스 시스템 프로그래밍

  • 시스템 프로그래밍이란 커널 및 핵심 시스템 라이브러리를 직접 사용하면서 하위레벨에서 동작하는 시스템 소프트웨어를 작성하는 기술이다.

    • 쉘, 컴파일러, 디버거, 시스템 유틸리티 및 시스템 데몬은 모두 시스템 소프트웨어에 속함
  • 시스템 프로그래밍은 주로 커널 및 시스템 라이브러리를 사용하고, 애플리케이션 프로그램은 고급 라이브러리를 사용한다.

  • 아래는 파일 시스템 관련하여 파일복사 프로그램의 소스파일

    filecpy_code