파게로그
운영체제 서비스 본문
Chapter Two: Operating-System Structures
이번 챕터의 목표는?
운영체제가 사용자, 프로세스, 다른 시스템에 제공하는 서비스를 기술한다.
운영체제를 구축하는 다양한 방법들을 알아본다.
운영체제가 설치되고 커스터마이즈되는 방법과 부팅되는 방법을 설명한다.
2.1 Operating-System Services
운영체제의 서비스
1. 사용자를 위한 서비스
- User interface(UI)
- command-line interface(CLI)
- batch interface(파일을 입력으로 하며, 그 파일이 실행됨)
- graphical user interface(GUI) - Program execution
- I/O operations
- File-system manipulation
- Communications(IPC: shared memory, message passing, etc.)
- Error detection
2. 시스템 동작을 위한 서비스
- Resource allocation
- Accounting(사용량 및 사용 자원 등을 기록)
- Protection and security(시스템 자원에 대한 모든 접근 제어, 외부로부터의 방어
2.2 User and Operating-System Interface
2.2.1 Command Interpreters
어떤 OS는 커널에 command interpreter를 탑재하며, Windows나 UNIX 등 어떤 OS는 command interpreter를 특별한 프로그램으로서 취급한다. 복수의 command interpreters를 선택할 수 있는 시스템에서는 각각은 shell이라 불린다.
주요한 기능은 user-specified command를 얻고 실행하는 것이다. 이러한 명령은 두 가지 보편적인 방법으로 구현된다.
첫째는, command interpreter가 자체적으로 명령 실행을 위한 코드를 포함하는 것이다.
둘째는, 특히 UNIX에서 사용되는 방법으로서, 대부분의 명령을 시스템 프로그램을 통해 구현한다. command interpreter는 아무것도 이해하지 못하며, 단순히 메모리에 로드되고 실행될 파일만 식별할 뿐이다. 예를 들어 UNIX에서 rm file.txt라는 명령은, rm이라는 파일을 찾아 file.txt라는 파라미터와 함께 실행할 뿐이다. rm이라는 명령어와 관련한 것은 모두 rm 파일에 정의되어 있을 것이다. 이 경우에는 프로그래머들은 적절한 이름을 가진 새로운 파일을 생성함으로써 시스템에 새로운 명령을 추가할 수 있다. 이러한 command-interpreter program은 가벼울 수 있고 새 명령을 추가하기 위해 변경되지 않아도 된다.
2.2.2. Graphical User Interface
desktop metaphor를 통해 특성화되는, 마우스 기반의 윈도우-메뉴 시스템을 이용한다. 사용자는 마우스를 (데스크탑) 스크린 위의 이미지, 아이콘 등의 위치로 움직이는데, 이들은 프로그램, 파일, 디렉터리, system function를 표상한다.
2.2.3. Touch-screen Interface
사용자는 터치 스크린 상의 제스처를 통해 기기와 상호작용한다. 아이패드와 아이폰은 모두 Springboard touch-screen interface를 이용한다.
2.2.4. Choice of Interface
인터페이스의 선택은 개인적인 선호에 따른다. 컴퓨터를 관리하는 System administrators와 시스템에 대한 깊은 지식이 있는 power users는 command-line interface를 곧잘 사용한다. ... command-line interfaces는 반복적인 작업을 쉽게 만드는데, 고유의 programmability가 있기 때문이다. 예를 들어, 빈번한 작업이 일련의 command-line steps를 요구할 때, 이러한 steps는 파일에 기록될 수 있고, 그 파일은 하나의 프로그램처럼 실행될 수 있다. 이 프로그램은 실행 가능한 코드로 컴파일되지는 않지만, command-line interface로 해석된다. 이러한 shell scripts는 UNIX나 Linux와 같은 command-line oriented 시스템에서 아주 흔하다.
user interface는 본질적으로 실제적인 시스템 구조에서 제외되었다. 유용하고 직관적인 user interface는 따라서 운영체제의 직접적인 기능이 아니다. 운영체제의 관점에서, 사용자 프로그램과 시스템 프로그램을 구분하지 않는다.