Linux의 커널과 쉘에 대해 아는 대로 설명해보세요.

  • 커널(Kernel)

리눅스가 다른 운영체제에 비해 안정성이 뛰어나다는 얘기를 많이 하게 되는데 그 운영체제의 안정성과 밀접한 연관이 되는 것이 바로 커널이다. 리눅스의 창시자인 리누즈가 한 일이 바로 유닉스의 커널을 PC에서 사용 가능한 커널로 만들었다는 데에서 의미를 가지는 것처럼 커널은 리눅스라는 운영체제를 사용하게 만드는 근본이 되고 있다. 커널은 운영체제의 핵심 부분으로, CPU·메모리·입출력 장치·파일 시스템 등 하드웨어 자원을 직접 관리한다. 따라서 커널은 하드웨어 의존성이 높아 하드웨어 환경의 변화에 따라 수정 및 확장이 필요하다.

현재 리눅스의 커널은 'kernel.org'에서 지속적으로 업데이트되고 있고 리눅스 운영체제를 더욱 안정적으로 만들고 있다. 2024년 기준 리눅스 커널은 6.x 버전대로 발전하였으며, 보안 강화·성능 최적화·최신 하드웨어 지원이 꾸준히 추가되고 있다. 커널 컴파일이라는 것은 더욱 안전해진 커널을 사용하고 있는 시스템에 설치하기 위해서 꼭 필요한 작업이다.

  • 쉘(shell)

간단히 말하면 사용자와 커널(리눅스 OS의 중심)을 연결해주는 다리 역할을 하는 특별한 프로그램이다. 쉘은 사용자가 로그온 할 때 실행되는 유틸이다. 이것은 사용자가 커맨드라인에 입력한 명령이나, 스크립트 파일의 명령들을 해석하여 커널에게 전달하는 역할을 한다. 즉, 쉘은 사용자가 시스템에 명령을 내리기 위한 인터페이스로, 입력된 명령을 해석하여 커널에 전달하는 역할을 한다. 따라서 쉘은 하드웨어보다는 사용자 편의성과 작업 효율 향상을 중심으로 발전해 왔다.

리눅스를 설치했을 때, 사용자는 표준 유닉스 쉘과 툴이 아닌, GNU 쉘과 툴을 접하게 된다. GNU 배쉬 쉘(GNU Bourne Again Shell)은 리눅스의 기본 쉘로, 본 쉘에서 기능이 강화되어 프로그래밍뿐만 아니라 대화형으로 사용될 때도 사용자가 효율성 향상을 위해 자신의 작업 환경 구성과 단축키 생성이 가능하다.

현재 리눅스에서 주로 사용되는 쉘로는 Bash(Bourne Again Shell) 외에도 Zsh(Z Shell)가 있다. Zsh는 Bash와 호환되면서 강력한 자동완성·플러그인·테마 기능을 제공하며, Oh My Zsh 프레임워크와 함께 개발자들 사이에서 폭넓게 활용되고 있다. macOS는 2019년 Catalina부터 기본 쉘을 Bash에서 Zsh로 전환하였다.

  • 커널과 쉘의 역할

도스에서 A라는 실행 파일을 B라는 실행 파일로 복사하기 위해 COPY 명령을 입력하면 COMMAND.COM에서 컴퓨터로 명령이 전달되고, 복사하는 과정은 IO.SYS에 정의된 open, read, write 등의 명령이 내부적으로 바쁘게 작동하여 이루어지는 것이다. 리눅스에서도 cp 명령을 커널과 쉘이 담당하는 것은 도스와 비슷한 경우라고 볼 수 있다.

리눅스의 쉘 명령어로는 cd, pwd, exit 등이 있고, 커널 명령어로는 fork, open, write, read, exec, iocntl 등이 있다. 리눅스의 외부 명령은 ls, rm, cpp, addusr 이외에 다른 실행 프로그램들이 있다.

  • 쉘의 종류

리눅스에서 쉘은 여러 종류가 있고 쉘마다 특징이 있다. 쉘은 크게 ①본쉘(sh), ②C쉘(csh), ③콘쉘(ksh)이 있으며, 최근에는 ④Zsh가 많은 개발 환경에서 기본 쉘로 사용되고 있다.

본쉘은 최초의 유닉스 쉘이었으며, 현재 사용하고 있는 유닉스 시스템 대부분에서 본쉘을 사용하고 있다. 쉘 프로그래밍이 쉬운 반면 다른 쉘보다는 사용자와의 상호 작용이 부족하다. C쉘은 본쉘보다 사용자와의 상호작용이 더 좋으며 C언어에 익숙한 사용자들이 쉘 프로그래밍을 C언어와 비슷하게 할 수 있다. 콘쉘은 본쉘과 C쉘의 단점을 제거하여 효율적이고 상호작용과 프로그래밍 인터페이스가 모두 좋은 쉘이다.

운영체제

Linux의 장점과 단점이 무엇이라고 생각합니까?

운영체제

CISC와 비교했을 때 RISC 방식의 마이크로프로세서의 특징은?

커뮤니티 Q&A

이론과 관련된 게시글이에요.

이해가 안 되거나 궁금한 점이 있다면 커뮤니티에 질문해 보세요!

게시글 작성하기