본문 바로가기
IT개발/Linux

[유닉스/리눅스] 유닉스/리눅스 시스템 구조

by Thompson 2024. 3. 13.
728x90

유닉스와 리눅스는 강력하고 안정적인 운영체제로, 그 구조는 명확한 계층으로 나뉩니다. 이 시스템 구조는 하드웨어, 커널, 셸, 그리고 다양한 유틸리티 도구로 구성됩니다. 각 계층은 특정 역할을 맡고 있으며, 상호작용을 통해 시스템의 효율적인 작동을 보장합니다.

1. 하드웨어 (Hardware)

하드웨어는 운영체제가 동작하는 가장 기본적인 물리적 장치입니다. 여기에는 CPU, 메모리, 디스크, 네트워크 장치, 키보드, 마우스, 모니터 등 모든 물리적 컴퓨터 장치들이 포함됩니다. 유닉스/리눅스 운영체제는 이러한 하드웨어 장치와 상호작용하며, 각 장치가 효율적으로 사용될 수 있도록 관리합니다.

2. 커널 (Kernel)(제일 중요한 요소)

커널은 운영체제의 핵심 부분으로, 하드웨어와 사용자 공간 간의 중재자 역할을 합니다. 사용자가 실행하는 프로그램이나 셸이 하드웨어에 직접 접근하지 않고, 커널을 통해서 간접적으로 자원(메모리, CPU 등)을 사용합니다.

커널의 주요 기능:

  • 프로세스 관리: 여러 프로그램이 동시에 실행될 때, 커널은 각 프로그램이 자원을 효율적으로 사용할 수 있도록 관리합니다. 이를 통해 멀티태스킹이 가능해집니다.
  • 메모리 관리: 커널은 프로그램이 필요로 하는 메모리를 할당하고, 메모리 자원을 효율적으로 관리합니다.
  • 파일 시스템 관리: 커널은 파일의 읽기/쓰기 작업을 처리하고, 디스크 저장 장치의 파일 시스템을 관리합니다.
  • 장치 드라이버: 커널은 하드웨어 장치(모니터, 키보드, 마우스 등)와 직접 소통하며, 장치 간의 통신을 관리합니다.
  • 네트워크 관리: 커널은 네트워크 통신을 관리하고, 시스템 간의 데이터 전송을 효율적으로 처리합니다.

3. 셸 (Shell)

셸은 사용자와 커널 사이의 중간 인터페이스 역할을 합니다. 사용자가 명령을 입력하면, 셸이 이를 해석하고 커널에게 전달합니다. 커널은 그 명령을 수행한 후 결과를 셸에 다시 전달하고, 셸은 이를 사용자에게 출력합니다.

셸은 텍스트 기반의 인터페이스를 제공하며, 주로 명령어를 통해 시스템과 상호작용할 수 있습니다. 대표적인 유닉스/리눅스 셸로는 Bash, Zsh 등이 있습니다.

셸의 주요 기능:

  • 명령어 해석: 사용자가 입력한 명령을 해석해 커널에게 전달합니다.
  • 스크립트 실행: 반복적인 작업을 자동화하기 위해 셸 스크립트를 실행할 수 있습니다.
  • 프로세스 제어: 백그라운드에서 실행 중인 프로세스를 관리하고 제어할 수 있습니다.

4. 유틸리티 (Utility)

유틸리티는 유닉스/리눅스 시스템에서 제공하는 다양한 프로그램으로, 사용자가 특정 작업을 수행할 때 사용됩니다. 이러한 유틸리티는 시스템 운영을 보조하거나 프로그래밍 개발, 파일 관리, 네트워크 관리 등의 다양한 기능을 제공합니다.

대표적인 유틸리티 도구:

  • 텍스트 편집기: vim, nano와 같은 텍스트 편집 도구는 프로그래밍이나 문서 작성에 사용됩니다.
  • 파일 관리 도구: cp, mv, rm과 같은 명령어는 파일을 복사하거나 이동, 삭제하는 데 사용됩니다.
  • 네트워크 유틸리티: ping, ssh, scp와 같은 명령어는 네트워크 연결 상태를 확인하거나 원격 서버에 접속할 때 사용됩니다.

5. 유닉스/리눅스의 주요 기능

  • 프로세스 관리: 커널은 시스템 내에서 여러 프로그램이 동시에 실행될 수 있도록 프로세스를 관리합니다. 각 프로세스가 자신의 자원을 차지하고, 서로 간섭하지 않도록 제어합니다.
  • 파일 시스템 관리: 유닉스/리눅스는 효율적인 파일 관리 기능을 제공합니다. 모든 데이터는 파일로 관리되며, 디렉토리 구조를 통해 파일들을 체계적으로 정리할 수 있습니다.
  • 메모리 관리: 운영체제는 시스템의 메모리를 효율적으로 관리하여, 프로세스들이 메모리를 최적화하여 사용할 수 있도록 도와줍니다. 스왑 메모리를 사용해 물리적 메모리가 부족할 때 디스크를 일시적으로 메모리로 활용하는 기능도 제공합니다.
  • 주변 장치 관리: 커널은 프린터, 마우스, 키보드, 네트워크 어댑터 등의 하드웨어 장치들을 제어하고, 장치 간의 통신을 원활하게 처리합니다.
  • 통신 관리: 유닉스/리눅스는 TCP/IP 네트워크 프로토콜을 통해 컴퓨터 간의 데이터를 효율적으로 전송하고 관리할 수 있습니다. 이를 통해 서버 간 통신이나 인터넷을 통한 정보 교환이 가능합니다.