1. 운영체제 주요개념
운영체제
- 운영체제란 OS(Operating System)의 줄임말로 주요 운영체제는 윈도우, 리눅스, MacOS 등이 있다.
- OS는 커널(Kernel)을 의미하며, 일반적으로 커널에 여러가지 추가된 상태를 OS라고 한다.
쉘(Shell)
- 쉘이란 사용자가 운영체제의 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램을 말한다.
- 터미널환경(CLI)와 GUI환경으로 분류된다.
시스템 콜(System Call)
- 시스템콜 또는 시스템 호출 인터페이스라고 불리며, 운영체제가 각각의 기능을 사용할 수 있도록 시스템콜 이라는 명령 또는 함수를 제공한다.
API란
- Application Programming Interface의 약자로 응용프로그램을 만들기 위한 함수 또는 라이브러리이다.
- API내부에는 필요시 해당 운영체제의 시스템콜을 호출하는 형태로 만들어진다.
응용 프로그램이란
PC에서 사용하는 프로그램, 소프트웨어는 모두 같은 의미로 스마트폰에서는 APP(앱)이라고도하며 엑셀, 파워포인트 등 다양한 응용 프로그램이 존재한다.
2. 왜 프로그램이 OS별로 있을까?
우리가 흔히 사용하는 Visual Studio Code의 경우 리눅스, 윈도우, 맥처럼 OS 별로 별도의 프로그램이 존재한다. 이는 각 운영체제별 API와 시스템콜이 다르기 때문이다. 하지만 JAVA언어로 작성할 경우 OS별로 프로그램을 만들 필요 없이 하나의 프로그램만 만들어도 된다.JRE(JDK)를 통해 각각의 운영체제에 맞게 설치할 수 있기 때문이다.
3.사용자 모드와 커널 모드
특정 응용 프로그램을 사용할때 해당 프로그램이 전체 컴퓨터 시스템을 해치지 못하게 하기 위해서 사용자모드와 커널모드가 별도로 존재며 사용자 모드는 응용프로그램이 사용하고 커널모드는 OS가 사용하게 된다.
조금더 자세히 보면 커널모드에서만 실행 가능한 기능들이 있으며 커널모드로 실행하려면 반드시 운영체제에서 제공하는 시스템 콜을 거쳐야 한다.
정리를 하자면,
- 운영체제는 시스템 콜을 제공하며
- 프로그래밍 언어별 운영체제 지원을 위해 운영체제별 API를 제공한다.
- 응용 프로그램 개발시, 운영체제 기능이 필요한 경우 해당 API를 사용해서 프로그램을 작성한다.
- 응용 프로그램 실행시, 해당 API를 호출 → 시스템콜 호출 → 커널모드로 변경 → OS 내부에서 해당 명령실행 → 응용프로그램에 결과 리턴 과정으로 진행된다.
4. 운영체제 역할
운영체제는 다음과 같은 3가지 역할을 가진다.
- 시스템 자원(System Resource) 관리자
- 각 프로그램이 얼마나 CPU를 사용할지 결정한다.
- 각 프로그램이 어느 주소에 저장돼야 하는지, 어느정도 메모리 공간을 차지할지 결정한다.
- HDD, SSD등의 저장매체가 어떻게, 어디에 저장할지 결정한다.
- 사용자와 컴퓨터간 커뮤니케이션 지원
- 응용프로그램 제어
- 응용프로그램이 효율적이고 적절하게 동작하도록 지원한다.
5. 운영체제의 구조
운영체제의 구조는 다음과 같다.
유저 프로그램이 맨 위에 있고 그다음으로 GUI, 시스템콜, 커널, 드라이버가 있으며 가장 밑에 하드웨어가 있는 구조이다. 여기서 GUI ~ 드라이버 부분이 운영체제를 지칭한다.