[TIL] Operating System Services

운영체제가 제공하는 기능들을 정리해본다. 공룡책(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
  1. rm이라는 파일을 찾는다
  2. rm을 메모리에 적재한다
  3. “file.txt”라는 파라미터와 함께 적재된 rm 파일을 실행한다.

즉 명령어로 사용되는 rm은 사실 파일이다. 모든 명령어는 각각 파일로 되어있다. 이 말은, 명령어를 추가하고 싶으면 파일을 짜서 추가하면 된다는 것이다. command interpreter를 새로 짤 필요도 없고, command interpreter가 비대해질 필요도 없다.