리눅스 커널 디자인의 기술을 읽으면서 책 내용 정리하기 (티스토리부터 이전 된 자료 입니다.)
Shell은 유저 인터페이스 프로세스다. 쉘을 통해서 컴퓨터와 사용자는 모니터와 키보드를 사용해서 OS와 소통한다.
쉘 프로세스의 원리는 다음과 같다. 키보드를 이용해서 데이터를 입력하면 문자를 특정 문자 버퍼 큐에 저장한다. 이 내용은 tty0 터미널 디바이스가 사용하게 된다. 쉘 프로세스는 버퍼큐에서 데이터를 반복적으로 읽어들인다. 유저가 명령을 입력하지않으면 버퍼에 저장되는 데이터가 없어지게 되고, 쉘 프로세스는 인터럽터블 상태가 된다. 유저가 키보드로 명령을 입력하면 키보드 인터럽트가 발생한다. 이 시그널은 쉘 프로세스를 깨운다. 그럼 그 쉘 프로세스는 버퍼 큐에서 데이터를 계속 읽어 들여 처리한다. 완료가 되면 다시 대기상태가 되어서 키보드 인터럽트가 발생할 때까지 기다린다.