[운영체제] 1. 운영체제의 역할과 구조
운영체제 역할
컴퓨터 시스템이란
사용자 프로그램을 실행하고, 사용자 문제의 해결을 보다 쉽게 해주기 위해 존재한다.
이러한 목적을 위해 하드웨어가 등장했고, 하드웨어를 제어하는 소프트웨어 및 데이터도 등장했다.
운영체제란
다양한 소프트웨어(프로그램)들이 하드웨어(입출력장치)를 이용해 연산을 할 필요가 생겼고, 각 프로그램에게 자원을 할당해주고 반환해가는 소프트웨어가 필요해졌는데 이게 바로 운영체제이다.
운영체제는 컴퓨터 시스템이 동작할 때 이들 자원(CPU시간, 메모리 공간, 파일 저장 공간, 입출력장치 등) 을 적절하게 사용할 수 있는 방법을 제공한다.
운영체제의 역할
운영체제는 환경에 따라 다양한 역할을 한다.
1. 대형컴퓨터의 OS: 주로 하드웨어의 이용을 최적화하는 데 주안을 두고 있다.
2. 퍼스널컴퓨터의 OS (ex 윈도우, 리눅스) :복잡한 게임, 비즈니스 응용 등 모든 응용프로그램을 지원한다.
3. 휴대용 컴퓨터 OS (ex apple mac os x ) :사용자가 프로그램을 쉽게 실행하기 위해 컴퓨터와 쉽게 인터페이스 할 수 있는 환경을 제공하기 위해 설계되었다.
4. 임베디드 OS: 가전제품이나 자동차 내의 내장형 컴퓨터는 사용자의 개입없이 작동하도록 설계되었다.
하드웨어에 따른 다양한 역할의 OS가 있지만, OS의 공통점은 자원을 할당하고 제어하는 기능을 한다는 것이다.
운영체제가 제공하는 서비스
운영체제는 프로그램 실행환경을 제공한다.
1. 사용자 인터페이스: GUI(Graphical User Interface) 또는 CLI(CommandLine Interface)의 형태로 제공된다.
2. 프로그램 실행: 시스템은 프로그램을 메모리에 적재해 실행한다.
3. 입출력 연산: 실행중인 프로그램은 입출력(CD, 디스플레이, 키보드 등)을 요구할 수 있는데, 이를 운영체제가 제어한다.
4. 파일시스템 조작: 파일을 생성/삭제/읽고/쓰는 기능 뿐만 아니라, 권한에 따른 허가/거부 역시 운영체제가 제어한다.
5. 통신: 한 프로세스가 다른 프로세스에게 메시지를 전달 할 때, 패킷들은 운영체제에 의해 제어된다.
운영체제의 구조
운영체제 구성
1. 커널: 운영체제의 코어로써, 프로세스나 메모리 관리 등 핵심기능을 수행한다.
- 프로세스 관리
- 메모리 관리
- 파일 시스템 관리
- 입출력 관리
- 프로세스 간 통신관리
2. 인터페이스: 사용자의 목적을 수행하기 위해, 명령을 전달하는 역할을 수행한다.
- 명령 해석기 (CI: command-Interpreter): 사용자가 지정한 명령을 가져와서 그것을 실행한다. shell이라고 불린다.
- 그래피컬 사용자 인터페이스 (GUI: Graphical User Interfase): 마우스 포인터를 기반으로 하는 프로그램 호출
3. 시스템 호출:
커널이 제공하는 서비스에 대한 인터페이스를 제공한다. 저수준 작업(어셈블리 명령)으로 보통 C, C++ 로 작성된다.
API와 SDK
응용 프로그래밍 인터페이스(API: Application programming Interface)
API의 등장으로 대부분의 사용자(개발자 포함)는 시스템호출에 필요한 저수준의 명령을 알 필요가 없어졌다.
API에는 함수에 전달되어야 하는 매개변수와 반환값 등이 명시되어 있고, API에 따라 프로그래밍을 하면 어느 시스템에서건 컴파일 되고 실행되기 때문에 호환성 측면에서 이점이 있다.
소프트웨어 개발자 도구모음(SDK: Software Development Kit)
SDK 에는 프로그래밍을 편리하게 할 수 있도록 API 뿐만 아니라 IDE, 문서, 라이브러리, 코드 샘플 등을 제공한다.
예를 들면, iOS SDK는 iOS어플리케이션을 개발하는 개발자들에게 유용하다. 컴퓨터에서 아이폰을 시뮬레이션 할 수 있도록 시뮬레이터를 제공하기도 한다. 또한 안드로이드 앱을 위한 JDK: Java Development Kit도 있고, GCP(Goole Cloud Platform)을 위한 Cloud SDK 도 있다.
참고1) 공룡책 8판
참고2) https://rapidapi.com/blog/api-vs-sdk/