
그렇다면 왜 시스템과 직접 소통을 하지 못하고 shell이라는 것을 통해서 하드웨어와 통신을 해야할까??
그 이유는 운영체제는 기계가 이해할 수 있는 형태로만 명령을 받아들이기 때문이다.
예를 들어 종료를 의미하는 어셈블리 코드는 아래와 같다고 하면, 사용자가 쓰고 이해하기 힘들다
MOV AX, 4C00
INT 21h
그래서 우리는 쉘을 통해 아래와 같이 입력하면
exit
쉘이 알아서 이걸 번역한 후에, 시스템 호출을 진행하고 운영체제에 전달해주는 것이다.
즉 정리하자면, 운영체제는 사용자(개발자)가 사용하기 어려운 어셈블리어를 사용하기 때문에 쉘을 통해 이용을 편리하게 한다.
그렇다면 여기서 또 다른 하나의 의문점이 들게된다. 왜 운영체제는 이해하기 쉬운 언어가 아닌 어셈블리어로 개발이 됐을까??
그 이유는 운영체제는 컴퓨터 하드웨어와 가장 밀접하게 작동하기 때문이다. 운영체제는 CPU, 메모리, 디스크, 네트워크, 키보드 등과 직접 대화해야 하기 때문에 정밀하고 빠른 하드웨어 친화적인 언어가 필요하다. 그래서 어셈블리어나 C언어가 사용된다.