운영체제가 제공하는 기능들을 정리해본다. 공룡책(Operating System Concepts)을 참고했다.
- User Interface: CLI, GUI, Touch-screen Interfaces
- Program Execution
- I/O Operation: 효율성과 보호(Protection)를 위해 I/O device control은 OS의 책임
- File-system Manipulation: 파일에 대한 CRUD 뿐만 아니라 그 파일에 대한 권한(permission), 파일시스템과 디렉토리 구조에 대한 부분, 파일의 searching, listing 등 파일과 파일시스템 전반에 대한 일련의 기능들을 제공
- Communications: 프로세스간 커뮤니케이션. shared memory나 message passing을 통해 이뤄지며 한 컴퓨터 내에서 이뤄지거나 네트워크를 통해 이뤄지기도 한다.
- Error Detection and Handling: Error를 탐지하고, 적절하게 처리하는 루틴을 실행.
- Resource Allocation
- Logging: 사용량을 체크하고 과금하는데도 도움이 되고, 사용성 통계를 내거나 버그 수정에도 도움 됨.
- Protection and Security: Protection은 system resource에 대한 접근을 제어하는 것. Security는 외부에서 시스템에 대해 인가되지 않은 접근을 제한하는 것.
Command Interpreter
- 한 시스템에서 여러 command interpreter를 제공할 경우, 그 interpreter를 shell이라 한다. Bash(Bourne-Again shell) 등이 있다.
- command interpreter(shell)의 핵심 기능은 유저가 선택한 다음 명령을 실행하는 것이다.
rm file.txt
위 코드는 어떻게 실행될까?
rm
은 파일을 지우는 명령이다.
원론적으로, 파일을 지우라는 명령은 command interpreter로 하여금 명령에 해당하는 코드 섹션으로 이동하고 파라미터를 설정한 후 적적한 시스템 콜을 진행하게 한다. 이런 방식의 시스템의 경우, command interpreter의 용량은 실행할 수 있는 명령 수에 비례해 커지게 되고, 명령을 추가하려면 command interpreter를 새로 만들어야 한다.
한편 UNIX에서는 다른 접근방식을 사용한다. rm
은 단순 명령어가 아닌 파일이다. 이 파일은 rm 명령어가 수행해야할 기능, 즉 ‘파일 삭제’에 대한 코드를 담고 있다. 이런 방식에서 command interpreter는 명령을 이해할 필요가 없다. 사용자가 명령을 입력하면 다음과 같은 순차적 방식으로 실행만 하면 된다.
rm file.txt
rm
이라는 파일을 찾는다rm
을 메모리에 적재한다- “file.txt”라는 파라미터와 함께 적재된
rm
파일을 실행한다.
즉 명령어로 사용되는 rm
은 사실 파일이다. 모든 명령어는 각각 파일로 되어있다. 이 말은, 명령어를 추가하고 싶으면 파일을 짜서 추가하면 된다는 것이다. command interpreter를 새로 짤 필요도 없고, command interpreter가 비대해질 필요도 없다.