-
운영체제가 사용자에게 제공하는 서비스
사용자 인터페이스
유저 인터페스로는 크게 3가지가 있다.
- 명령어 라인 인터페이스 CLI(Command Line Interface)
- 그래픽 기반 사용자 인터페이스 GUI(Grapic Uer Interface)
- 터치스크린 인터페이스 TSI(Touch-Screen Interface)
CLI는 windows의 cmd창 UNIX/LINUX의 terminal 등이 있다. CLI는 GUI에 비해 훨씬 가벼워서 대부분의 서버는 CLI로 구성되어 있다. CLI는 명령어 해석기라고도 하며, 사용자가 명령어를 직접 입력한다. 때때로 kernel에서 구현되거나 시스템 프로그램으로 구현된다. 그리고 사용자의 취향에 따라 여러 명령어들을 조합해서 자동화 프로그램(.sh)을 만들 수 있는 있는데, 이것을 쉘(Shell) 파일이라고 한다.
GUI는 대부분에 사용자에게 익숙한 windows가 있다. 모니터에 창이 띄워지고 마우스, 키보드를 통해 값을 입력하면 모니터에 출력되는 형식이다. CLI와 달리 아이콘으로 파일들이 시각화가 되어서 굉장히 직관적이고 컴퓨터를 처음 사용하는 사용자도 쉽게 사용할 수 있다.
- Microsoft Windows는 "command"나 "cmd" 쉘인 CLI를 가진 GUI다.
- Apple Mac의 OS X는 유닉스 커널 하부에 쉘이 가능하게 하는 Aqua GUI다.
- Linux는 선택적으로 GUI(GNOM, KDE)를 지원하는 CLI다.
TSI는 새롭게 증가하고 있는 UI다. 스마트폰이나 아이패드 같은 것들이다. 모바일 기기는 키보드와 마우스로 조작하기에는 실용적이지 못 하기 때문에 터치 Interface를 제공함으로써 사용자에게 입력 값을 받고 있다.
프로그램 실행
시스템은 메모리에 프로그램을 적재하고 실행할 수 있어야 하고 정상적이든 비정상적이든 언제든지 프로그램을 종료 할 수 있어야 한다.
입출력 연산
수행 중인 프로그램은 파일이나 입출력 장치를 포함하는 입출력을 요구할 수 있다. 이러한 입출력에는 파일 또는 입출력 장치가 연관될 수 있다.
파일 시스템 조작
파일 시스템 조작은 굉장히 중요하다. 특히 Linux는 모든 것이 file로 이루어져 있다. 심지어 하드웨어도 모두 file로 이루어져 있다. 운영체제는 파일과 관련하여 프로세스에게 다음과 같은 기능을 제공한다.
- 파일/디렉토리를 읽기, 쓰기, 생성하기, 삭제하는 등의 기능
- 파일/디렉토리를 검색하는 기능
- 파일/디렉토리 정보를 리스트하는 기능
- 파일/디렉토리에 대한 권한관리 기능이 있다.
통신
프로세스나 스레드들은 정보 교환및 동기화를 위해, 서로 간(혹은 네트워크를 통해 다른 컴퓨터의 프로세스들 사이에서)의 통신이 필요하다. 통신은 공유 메모리나 메시지 전송(운영체제에 의한 패킷 전송)을 통해 가능하다.
오류 검출
운영체제는 가능한 오류를 끊임없이 감지할 필요가 있다. 한 개의 오류 때문에 프로그램이 작동을 하지 못 할 수도 있고 심각하게는 시스템의 일부분이 망가질 수가 있다. 오류는 CPU, 메모리, 입출력 장치, 사용자 프로그램 내에서 발생할 수 있다. 각 오류 종류에 따라, 운영체제는 이를 정정하고 지속적 컴퓨팅을 계속할 수 있도록 적절한 행동을 취해야 한다. 이러한 오류들을 잡는 것으로 디버깅 도구들은 사용자와 프로그래머가 시스템을 효율적으로 사용할 수 있도록 도와준다.
운영체제가 시스템에게 제공하는 서비스
자원 할당
자원을 할당하고 작업이 끝난 프로세스로부터 자원을 회수하는 작업은 굉장히 중요하다. 왜냐하면 프로세스와 스레드 등은 자원이 없으면 작업을 할 수 없기 때문이다. 컴퓨터 시스템이 관리하는 자원으로는 CPU 사이클, 메인 메모리, 파일 저장소 등이 있다. 이런 자주 사용되는 자원들은 특정 할당 코드(Special allocation code)를 가진다. I/O 장치 등 다른 자원들은 일반적 요청 및 반환 코드(General request and release code)를 가진다.
기록 장성
어떤 프로그램이 어떤 종류의 컴퓨터 자원을 얼마나 많이 사용하는지 추적하는 기능이다. 기록 작성이 제대로 이루어지지 않는다면 메모리 누수가 일어날 것이고, 컴퓨터는 느려질 것이다.
보호와 보안
멀티 유저 컴퓨터 시스템에서 정보 소유자는 정보의 사용을 제어 하기를 원한다. 자신만이 개별적으로 가진 정보를 다른 누군가가 보거나 사용하기를 원치 않기 때문이다. 동시에 수행되는 프로세스들은 서로 간섭하지 않도록 해야한다. 이러한 것들을 운영체제가 제공해주는데 보호와 보안이 있다.
- 보호 : 시스템 자원에 대한 모든 접근 권한이 통제되는 것을 보장한다. 예를 들어 운영체제의 사용자 모드와 커널 모드로 나눈 이중 모드 연산이 있다.
- 보안 : 외부인으로부터 시스템에 대한 사용자 인증을 요구한다. 유효하지 않는 접근으로 부터 입출력 장치를 방어한다. EX) 운영체제를 실행 시 화면에 뜨는 로그인 화면이 있다.