운영체제(Operating System)
- 운영체제는 컴퓨터 하드웨어를 다루는 소프트웨어 입니다.
- 운영체제는 컴퓨터의 하드웨어와 사용자 사이의 중개자 역햘을 합니다.
- 운영체제의 목적은 사용자가 편리하고 효율적인 방식으로 프로그램을 실행할 수 있는 환경을 제공하는 것입니다.
- 운영체제에는 Windows, MacOs, Linux, Android 등이 있습니다.
- 하나의 컴퓨터에는 단 하나의 운영체제만 설치가 가능합니다.
운영체제의 역할
- 운영체제는 사용자들에게 도움을 주는 여러 기능들을 제공합니다.
- 컴퓨터에는 프로세스, 메모리, 하드디스크 등 하드웨어 자원이 존재하고, 이를 효율적으로 사용해야 합니다.
- 운영체제는 애플리케이션들의 요청에 따라 적절히 자원을 분배합니다.
- 운영체제는 효과적인 자원 관리를 위해 프로세스 관리, 메모리 관리, 디스크 관리, 네트워크, 보안 등 기능이 나눠져 있습니다.
운영체제의 구조
운영 체제는 프로그램 실행을 위한 환경을 제공합니다.
하드웨어
- 컴퓨터나 컴퓨터에 붙어 있는 주변 장치들을 하드웨어라고 합니다.
ex) 마우스, 모니터, 키보드, 컴퓨터 본체, CPU, 하드 디스크, 비디오 카드, 사운드 카드 등
디바이스 드라이버
- 하드웨어 제작자가 만든 소프트웨어입니다.
- 커널과 하드웨어의 인터페이스를 담당합니다.
- 하드웨어의 종류는 다양하고 직접 각 하드웨어에 맞는 인터페이스를 개발하기는 어렵기 때문에 커널은 입출력의 기본적인 부분만 제작하고, 하드웨어의 특성을 반영한 소프트웨어를 하드웨어 제작자에게 받아 커널이 실행될 때 함께 실행되도록 합니다.
커널
- 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아두었습니다.
- 운영체제의 종류는 다양하지만 성능을 결정하는 것은 커널입니다.
시스템 콜
- 응용 프로그램과 커널의 인터페이스를 담당합니다.
- 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단합니다. 따라서 자원을 이용하기 위해서 시스템 콜을 사용하여 접근해야 합니다.
인터페이스
- 거의 모든 운영 체제에는 사용자 인터페이스(UI)가 있습니다.
- 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 합니다.
- 대표적인 인터페이스로는 GUI(graphical user interface)와 CLI(command-line interface)가 있습니다.
응용 프로그램
- 응용 프로그램 소프트웨어는 운영 체제 내에서 특정 작업을 수행하도록 설계된 소프트웨어입니다. 이러한 작업 중 일부에는 문서 처리, 계산 처리, 이미지 편집, 비디오 편집이 포함됩니다.
- ex) 워드 프로세서, 엑셀, 캡처 도구 등이 있습니다.
- 소프트웨어: 컴퓨터에게 동작 방법을 지시하는 명령어 집합의 모임
API 와 SDK
API (Application Programming Interface)
- 모듈화하여 만들어진, 어떤 기능을 제어/제공하는 인터페이스를 말합니다.
- 대부분의 애플리케이션은 API에 의존하고 있습니다.
SDK (Software Development Kit)
- 소프트웨어 개발 도구 모음이라고도 합니다.
- SDK는 API, IDE, 문서, 라이브러리, 코드 샘플 및 기타 유틸리티가 포함됩니다.
- SDK는 프로그램 및 응용 프로그램 개발의 복잡성을 줄이는 강력한 기능들을 가지고 있습니다.
- 자바에선 JDK(Java Development Kit)가 있습니다.
JDK와 자바 컴파일러
- 모든 JDK는 자바 애플리케이션 구동에 이용되는 환경이 JRE뿐만 아니라, 자바 컴파일러도 포함하고 있습니다.
- 자바 컴파일러는 .java 파일을 받아서 .class 파일로 만드는 기능이 있는 소프트웨어어입니다. 그 후 운영체제에 요청하여 받은 메모리 공간에 .class파일 적재하여 프로그램을 실행하는 과정은 JVM이 담당합니다.