메모리에 항상 상주하는 C프로그램이다. 메모리에 항상 상주하는게 큰 의미가 있는데 커널을 제외한 모든 유틸리티는 모두 비상주이며 필요에 의해 디스크에서 메모리로 로딩한다.
command 라고도 하며, 디스크에 상주하며 필요시 요청하면 메모리에 로딩한다. (utility, command, job 모두 같다.)
유틸리티중 하나로써, Job Control을 한다.
Job Control은 수많은 프로그램들들이 언제 메모리에 올라가고 해제하는지를 관리하는 일이다.
유닉스에서는 파일을 sequence of bytes라고 부른다. 말 그대로 바이트의 배열이라는 뜻인데, 모든 정보는 결국 기계어로 0,1 로 이루어져있다. 파일 또한 0,1로 이루어진 덩어리를 저장해둔 것이다.
I/O 디바이스도 file 취급을한다. (/dev 디렉토리에 저장되고 입출력 기계와 1:1로 대응된다.)
터미널은 standard file이라고 부른다. (stdin은 키보드에서 입력을 받고, stdout은 터미널에 출력한다.)
시스템을 부팅시 커널프로그램이 메인 메모리에 올라오게되고,
유저가 터미널을 키면(로그인을 하면) 터미널에 쉘프로그램이 올라오게된다. 여기서 새로운 유저가 터미널을 키면 새로운 쉘이 할당된다.
쉘에서는 커맨드를 기다리고 커맨드를 입력하면 프로그램이 실행된다.