01. 운영체제의 정의
- Operating System
- 사용자와 컴퓨터 하드웨어의 간의 중간 관리자 역할로, 사용자에게 편리한 인터페이스 환경(GUI)을 제공하고, 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어이다.
- 사용자와 응용 프로그램은 OS 위에서 작업을 하게 된다.
- 운영체제를 소프트웨어와 하드웨어의 결합 형태인 firmware(펌웨어)라고 부르기도 한다.
02. 운영체제의 역할과 목표
1) 자원 관리 → 효율성
- 여러 응용 프로그램을 동시에 작동시킬 때, OS는 컴퓨터 자원을 응용 프로그램에 적절히 분배해 사용자가 작업을 원활하게 진행하도록 돕는다.
- 자원 관리의 목표는 효율성에 있다. 같은 자원을 사용해서 더 많은 작업량을 처리하거나, 같은 작업량을 처리하는데 보다 적은 자원을 활용하는 것이라 할 수 있다.
2) 자원 보호 → 안정성
- 사용자나 응용 프로그램이 직접 자원에 접근하는 것을 막아, 손실이나 침범과 같은 비정상적인 작업으로부터 컴퓨터 자원을 보호한다.
- 자원 보호의 목표는 안정성이다.
- 사용자와 응용프로그램의 안전 문제와 하드웨어적 보안을 보장해야 한다.
- 시스템에 문제가 발생했을 때 이전으로 복구하는 결함 포용 기능을 수행해야 한다.
3) 하드웨어 인터페이스 제공 → 확장성
- 사용자가 다양한 장치(하드웨어)와 상호 작용할 수 있도록 해주는 하드웨어 인터페이스를 제공한다.
- 제조사가 다른 하드웨어를 일관된 방법으로 사용할 수 있도록 지원(feat. 확장성) 한다.
- 하드웨어 인터페이스를 드라이버라고 부른다.
- 운영체제를 설치할 때 대부분의 드라이버가 자동으로 설치된다.
- 프린터기와 같은 크고 복잡한 장치는 따로 드라이버를 설치해야 한다.
- 확장성: 다양한 시스템 자원(하드웨어)를 추가하거나 제거하기가 편리해야 한다.
4) 사용자 인터페이스 제공 → 편리성
- 사용자가 운영체제를 편리하게 사용할 수 있도록 제공되는 기능(사용자 인터페이스)을 지원한다.
- Graphical User Interface(GUI)를 제공한다.
- 스마트폰의 터치스크린, 윈도우의 아이콘 환경
- 편리성을 지향한다.
03. 운영체제의 필요성
- 여러 작업을 동시에 할 수 있는 컴퓨팅 환경이 조성되면서 사용 규칙이 요구되었다.
- 복잡한 작업 환경에 규칙이 없으면 컴퓨터를 망가뜨릴 수 있다. → 자원 관리 및 자원 보호
- 운영체제가 있는 기계는 새로운 기능의 추가나 성능의 변경이 가능하다.
04. 운영체제의 구조
1) 커널
- 프로세스 관리, 메모리 관리, 저장장치 관리 등 운영체제의 핵심적인 기능을 수행한다.
- 운영체제의 성능은 커널이 좌우한다.
- 운영체제의 커널은 자동차의 엔진과 같다. (운영체제의 GUI는 자동차의 계기판에 비유할 수 있다.)
1.1 시스템 호출(system call)
- 커널이 자신을 보호하기 위해 만든 인터페이스이다.
- 커널이 제공하는 시스템 자원의 사용과 연관된 함수이다.
- 사용자나 응용프로그램이 자원을 이용하기 위해서는 시스템 호출이라는 인터페이스를 이용하여 접근해야 한다. 그 외의 방법으로는 접근할 수 없다.
💡 사용자 & 응용 프로그램 → GUI → system call → 커널 → 하드웨어 자원 접근
1.2 드라이버(driver)
- 커널과 하드웨어의 인터페이스
- 하드웨어는 커널과 직접 연결되기도 하고, 하드웨어 제작자가 제공하는 드라이버를 통해 연결되기도 한다.
2) 인터페이스
- 커널에 사용자의 명령을 전달하고, 실행 결과를 사용자 및 응용 프로그램에 돌려준다.
- 운영체제는 커널과 인터페이스를 분리하여 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다.