쉘(Shell)
- also known as a command-line interpreter or command-line interface(CLI)
- User와 kernel 사이의 매개체 역할을 하는 프로그램
👉 즉, Shell은 User로부터 명령을 받아 그것을 processing하기 위해 kernel에게 넘겨주는 일을 함
Bash
- abbreviation of Bourne Again Shell
- 가장 널리 사용되는 Unix Shell이자, 리눅스와 Unix-base의 OS에서 주로 사용됨
- User와 interact하고, command를 실행할 수 있도록 하는 CLI를 제공함
Bashrc
- also called ".bashrc"
- 새로운 interactive shell이 launch됐을 때 bash에 의해 실행되는 shell script로, command들과 shell의 행동들을 customize할 수 있는 setting들을 포함 (such as alias, environment variables, and shell options, ...)
- User는
bashrc
를 실행하여 shell환경의 functionality를 더하거나 변경할 수 있음
커널(Kernel)
커널(Kernel)이란 운영체제의 핵심으로써 하드웨어와 프로세스 및 쓰레드의 관리를 위한 소프트웨어
- 운영체제의 복잡한 H/W 내부를 일관되고 추상적으로 볼 수 있도록 interface를 제공
- 커널이라고 하면 운영체제를 말하기도 하고, Application들의 실행 환경을 이루고 운용하는 것을 말하기도 함
👉 시스템의 자원은 제한되어 있지만 동작되고 있는 프로그램들은 많기 때문에 커널은 언제, 얼마나 자원을 사용해야할 지 결정하고 운영해야 함
커널의 특징 및 기능
- 커널은 디스크에 파일로써 존재하는 프로그램이며, 시스템이 가동될 때 boot 프로그램에 의해 구동되며 메모리에 상주
- 기본적으로 프로세스 관리 및 파일 관리를 수행
- 그 밖에 I/O 장치 관리, 메모리 관리 및 시스템 콜 Interface 기능을 수행
👉 커널은 메모리, 디스크, 네트워크 카드, 비디오 카드 등 모든 HW를 관리하며, Application이 이러한 HW에 접근하는 것을 가능하게 해주는 통로 역할
시스템 콜(System call)
운영체제의 커널이 제공하는 서비스에 대해, Application의 요청에 따라 커널에 접근하기 위한 Interface
- 운영체제의 구성 상, 커널과 Application은 CPU의 권한 수준이나 하드웨어 접근 능력이 다름
- 사용자 프로그램이 Disk File에 접근하거나 화면에 결과를 출력하는 등의 작업이 필요할 경우, 즉 Privilege instruction을 필요로 하는 경우 운영체제에게 Privilege instruction의 대행을 요청하는 것이 시스템 콜
인터럽트(Interrupt)
인터럽트(Interrupt)란 CPU가 프로그램을 실행하고 있을 때, 입출력 H/W나 예외상황 등이 발생해 작업처리가 필요할 경우 CPU에 알려 이를 처리해달라고 요청하는 것
- 커널은 각 장치와 통신을 해야만 H/W를 관리할 수 있는데, 일반적으로 H/W와 통신속도는 프로세서 속도보다 훨씬 느림
- 따라서 커널 처리가 필요한 순간에 I/O 장치들이 인터럽트 요청
- 하드웨어는 프로세스 클럭(clock)과 상관없이 비동기적으로 인터럽트를 발생시킴
- 따라서 인터럽트 처리로 인해 커널은 언제라도 방해받을 수 있음
프로세스 관리
- 운영체제는 수많은 프로세스(실행중인 프로그램)를 관리하고, CPU나 메모리 자원을 사용해서 이러한 프로세스를 수행
- 이 때 커널은 이러한 프로그램들이 동시에 수행되는 것처럼 동작하도록 함