Halo World

커널과 쉘 본문

개발 지식/OS

커널과 쉘

_Yeony 2017. 7. 6. 00:17

리눅스는 커널이라고 불리는 하드웨어를 직접 제어하는 부분과 그 위에 커널에 명령을 주는 하나 이상의 쉘로 구성되어 있다.




| 커널(Kernel)


- 하드웨어를 직접 제어하는 UNIX의 가장 핵심적인 부분

- 쉘에서 명령을 받아 수행함

- 컴퓨터의 시스템 자원들을 관리

- 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행됨

- 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당

- 프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입/출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능을 수행




| 쉘(Shell)


- 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기

- 쉘이 존재해야 커널에게 명령을 전달할 수 있음

- 시스템과 사용자 간의 인터페이스를 담당

- DOS의 COMMAND.COM과 같은 기능을 수행한다.

- 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조기억장치에서 교체 처리가 가능하다.

- 공용 쉘(Bourne Shell, C Shell, Korn Shell)이나 사용자 자신이 만든 쉘을 사용할 수 있다.

- sh, ash, bash, csh과 같은 다양한 쉘이 존재

- cmd창도 쉘의 일종




| 쉘과 커널로 구분하는 이유는?


운영체제의 핵심이 커널이지만, 기계적인 부분이 많기 때문에 사용자가 바로 커널을 제어하기는 매우 어렵다. 때문에 사용자가 내린 명령을 운영체제의 핵심인 커널 부분이 잏할 수 있도록 번역해주는 프로그램이 필요하고 이 역할을 하는 것이 쉘이다.




[참조]

http://twinjh.tistory.com/12 

http://hackingzone.tistory.com/5

'개발 지식 > OS' 카테고리의 다른 글

프로세스의 개념과 PCB  (0) 2017.07.09
[OS 문제] 2일차  (0) 2017.07.06
리눅스 커널모드와 유저모드  (0) 2017.07.04
페이징 교체 알고리즘  (0) 2017.07.02
[OS 문제] 1일차  (0) 2017.07.02