1. 운영체제의 정의
운영체제란 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하고 그 결과를 돌려주는 시스템 소프트웨어로, 응용 프로그램이나 사용자에게 모든 컴퓨터 자원을 숨기고 정해진 방법으로만 컴퓨터 자원을 사용할 수 있도록 제한한다. 운영체제는 하드워에어 대한 책임을 맡으며, 소프트웨어에 하드웨어 자원들을 적절히 분배한다. 따라서 응용프로그램과 사용자는 운영체제를 거치지 않고서는 하드웨어에 접근할 수 없다.
PC 운영체제에는 윈도우, MAC OS, 유닉스, 리눅스 등이 있으며 모바일 운영체제에는 IOS와 안드로이드 등이 존재한다.
2. 운영체제의 역할
1) 자원 관리
운영체제는 컴퓨터 시스템의 자원을 응용 프로그램에 배분하여 사용자가 원활하게 작업을 진행할 수 있도록 돕는다.
2) 자원 보호
비정상적인 작업으로부터 컴퓨터 자원을 보호한다.
3) 하드웨어 인터페이스 제공
다양한 하드웨어를 일관된 방법으로 사용할 수 있도록 지원한다. (CPU나 마우스, 키보드 등의 종류가 달라도 같은 방법으로 사용할 수 있도록 지원한다.)
4) 사용자 인터페이스 제공
사용자가 운영체제를 편리하게 사용할 수 있도록 지원한다. (예컨대 과거에는 키보드만으로 운영체제를 다루어야 했기 때문에 컴퓨터 사용법 습득이 어려웠으나, 현대에는 GUI의 제공으로 대부분의 작업을 마우스로 수행할 수 있다.)
3. 운영체제의 구조
운영체제는 크게 커널과 인터페이스로 구성된다. 커널은 프로세스,메모리,저장장치 등을 관리하며 운영체제의 핵심 기능을 수행하며, 사용자는 커널에 접근할 수 없다. 인터페이스는 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 커널과 사용자의 매개체 역할을 한다.
시스템 호출은 사용자나 응용 프로그램이 컴퓨터 자원에 직접 접근하지 못하도록 막아 자원을 보호한다.
시스템 호출을 통하여 자원에 접근하게 되면 직접 자원에 접근할 때보다 오작동이나 사용자의 부주의로 인하여 컴퓨터 자원이 망가지는 일을 방지할 수 있다. 따라서 응용 프로그램은 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용할 때 시스템 호출을 사용한다.
이때 시스템 호출은 함수 형태로 제공되는데, 예를 들어 응용 프로그램이 하드디스크에 데이터를 저장해달라고 요청할 땐 write() 함수를 사용하며, 데이터를 읽어올 때는 read() 함수를 사용한다.
드라이버는 하드웨어와 드라이버의 인터페이스 역할을 수행한다.
컴퓨터 하드웨어는 종류가 아주 많은데, 운영체제가 많은 하드웨어를 사용하기 위해서는 각 하드웨어에 맞는 프로그램을 직접 개발해야 한다. 그러나 운영체제가 이를 직접 모두 개발하는 것은 현실적으로 어렵고 하드웨어의 특성은 하드웨어의 개발자가 더 잘 알고 있기 때문에 하드웨어 제작자가 직접 이와 관련된 소프트웨어를 개발하는 것이 일반적이다. 이때 하드웨어 제작자가 직접 개발한 소프트웨어를 디바이스 드라이버라고 한다. (물론 운영체제에서 직접 개발한 드라이버도 존재한다.)
4. 가상머신
가상머신은 운영체제와 응용프로그램 사이에서 작동하는 프로그램이다.
예를 들어 C언어로 만든 코드는 유닉스에서는 잘 작동하지만 C언어와 윈도우의 호환성이 떨어져 이를 윈도우 코드에 맞게 수정해야 한다. 따라서 C언어로 프로그램을 만들게 되면 윈도우용, 유닉스용 두 개를 만들어야 하는 번거로움이 생긴다. 이를 해결한 것이 JAVA 언어인데, JAVA가 이러한 문제를 해결한 원리가 가상머신을 이용한 것이다. 운영체제 위에 가상머신을 만들고 그 위에서 응용 프로그램을 작동하게 한 것이다.
위 그림처럼 운영체제가 응용프로그램 B와는 호환이 잘 되지만 응용프로그램 A와 호환성이 떨어진다면 응용프로그램 B는 가상머신 없이 운영체제 위에서 잘 작동하지만, 응용프로그램 A를 원활하게 시행하기 위해서는 응용프로그램 A와 운영체제를 연결하는 가상머신이 필요할 것이고, 이 가상머신 위에서 응용프로그램 A가 작동할 것이다.
'운영체제' 카테고리의 다른 글
7. 메모리 관리 기법 - 절대주소와 상대주소/메모리 오버레이와 스왑/가변분할방식과 고정분할방식 (0) | 2022.06.08 |
---|---|
5. 프로세스 동기화 - 프로세스 간 통신/공유자원/임계구역/피터슨&데커 알고리즘 (0) | 2022.06.07 |
4. CPU 스케줄링 - 개요/우선순위/종류 (0) | 2022.06.04 |
3. 프로세스와 스레드 - 프로세스의 정의/구조/상태/생성과 복사/스레드 (0) | 2022.06.03 |
1. CPU - 구성 요소/명령어 처리/명령어 형식 (0) | 2022.05.25 |