본문 바로가기

공부 기록/OS

[OS/공룡책] Chapter 2. 운영체제 구조 - 운영체제 서비스, 사용자와 운영체제 인터페이스, 시스템 콜

운영체제 서비스

- 운영체제는 프로그램 실행 환경을 제공한다. 또한 운영체제는 프로그램과 그 프로그램의 사용자에게 특정 서비스를 제공한다.

 

- 사용자 인터페이스 : GUI, CLI, 터치스크린 인터페이스

- 프로그램 수행 : 시스템은 프로그램을 메모리에 적재해 실행하고, 끝낼 수 있어야 한다.

- 입출력 연산 : 효율과 보호를 위해, 사용자들은 통상 입출력 장치를 직접 제어할 수 없다. 따라서 운영체제가 입출력 수행의 수단을 제공해야 한다.

- 파일 시스템 조작 : 많은 운영체제들은 때로는 개인의 선택에 따라, 때로는 특정 특성과 성능 특성을 제공하기 위하여 다양한 파일 시스템을 제공한다.

- 통신 : 통신은 동일한 컴퓨터에서 수행되고 있는 프로세스들 사이에서 일어나고, 또한 네트워크에 의해 함께 묶여 있는 서로 다른 컴퓨터 시스템상에서 수행되는 프로세스들 사이에서 일어난다. 통신은 공유 메모리나 메시지 전달 기법을 사용하여 구현될 수 있다.

- 오류 탐지 : 운영체제는 모든 가능한 오류를 항상 의식하고 있어야 한다. 디버깅 설비는 시스템을 효율적으로 사용할 수 있는 사용자와 프로그래머의 능력을 향상시킨다.

 

사용자에게 도움을 주는 것이 목적이 아니라 시스템 자체의 효율적인 동작을 보장하기 위한 운영체제 기능들도 존재한다.

- 자원 할당 : 다수의 프로세스나 다수의 작업이 동시에 실행될 때, 그들 각각에 자원을 할당해 주어야 한다.

- 기록 작성 : 회계, 사용 통계를 내기 위해 사용된다.

- 보호와 보안 : 보호는 시스템 자원에 대한 모든 접근이 통제되도록 보장하는 것을 필요로 한다. 외부로부터의 시스템 보안 또한 중요하다. 시스템이 보호되고 보안이 유지되려면, 시스템 전체에 걸쳐 예방책이 제정되어야 한다.


사용자와 운영체제 인터페이스

명령 인터프리터(CLI)

- 여러 명령 인터프리터를 제공하는 시스템에서 이 해석기는 셸(shell)이라고 불린다.

- 중요한 기능은 사용자가 지정한 명령을 가져와서 그것을 수행하는 것이다.

 

그래픽 기반 사용자 인터페이스(GUI)

- 사용자가 직접 명령어를 입력하는 것이 아니라 데스크톱이라고 특징지어지는 마우스를 기반으로 하는 윈도 메뉴 시스템을 사용한다.

 

터치스크린 인터페이스

- 스마트폰 및 휴대용 태블릿 컴퓨터에서 일반적으로 사용한다.

- 사용자는 손가락으로 누르거나 스와이프 하는 등의 제스처를 취하여 상호 작용한다.

 

인터페이스의 선택

- 컴퓨터를 관리하는 시스템 관리자와 시스템에 대해 깊게 알고 있는 파워 유저들은 CLI를 사용한다.

- 사용자 인터페이스는 시스템마다, 심지어 한 시스템의 사용자마다 다를 수 있다.


시스템 콜

- 운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스를 제공한다.

 

응용 프로그래밍 인터페이스

- 간단한 프로그램이라도 운영체제의 기능을 아주 많이 사용하게 된다. => 종종 초당 수천 개의 시스템 콜을 수행한다.

- 대부분의 응용 개발자들은 응용 프로그래밍 인터페이스(API)에 따라 프로그램을 설계한다.

- 가장 흔한 세 가지 API는 Windows API, POSIX API, Java API이다.

- 응용 프로그래머가 실제 시스템 콜을 부르는 것보다 API에 따라 프로그래밍 하는 것을 선호하는 이유 => 프로그램의 호환성. 실제 시스템 콜은 종종 좀 더 자세한 명세가 필요하고 프로그램상에서 작업하기가 API보다 더 어려움

- 시스템 콜을 처리하는 데 있어 중요한 또 다른 요소는 실행시간 환경(RTE)이다.

   * 실행시간 환경(RTE) : 컴파일러 또는 인터프리터를 포함하여 특정 프로그래밍 언어로 작성된 응용 프로그램을 실행하는 데 필요한 전체 소프트웨어 제품군과 라이브러리 또는 로더와 같은 다른 소프트웨어를 함께 가리킨다.

- RTE는 시스템 콜 인터페이스를 제공한다 => 시스템 콜에 대한 연결고리 역할

 

시스템 콜의 유형

- 시스템 콜은 프로세스 제어, 파일 조작, 장치 조작, 정보 유지 보수, 통신과 보호 등으로 묶을 수 있다.

- 실행 중인 프로그램은 수행을 정상적으로(end()) 또는 비정상적으로(abort()) 멈출 수 있어야 한다.

- 공유되는 데이터의 일관성을 보장하기 위해서 운영체제는 종종 프로세스가 공유 데이터를 잠글 수 있는 시스템 콜을 제공한다.

- 입출력 장치와 파일 간에는 유사성이 매우 많기 때문에, UNIX를 포함한 많은 운영체제가 이들 둘을 통합된 파일-장치 구조로 결합하였다. 이 경우 같은 시스템 콜이 파일과 장치에 대해 사용된다.

- 네트워킹과 인터넷의 출현으로 서버에서 휴대용 컴퓨터까지 모든 컴퓨터 시스템에서 보호를 고려하여야 한다.