컴퓨터공학의 기초가 되는 cs지식을 되새기면서 이 후 있을 기술면접을 대비 하고자한다.
운영체제는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어이다.
우리가 일반적으로 컴퓨터를 사용하면서 실행한 모든 프로그램들은 운영체제에서 관리하고 제어한다.
대표적인 운영체제로는 Windows, Linux, Mac OSX, iOS 등이 있다.
운영체제를 사용하는 가장 주된 목적은 컴퓨터의 하드웨어를 관리하는 것이다. 컴퓨터에는 수 많은 하드웨어가 존재한다. CPU, 메모리, 디스크, 키보드, 마우스, 모니터, 네트워크 등이 있으며 이를 잘 관리해주어야 컴퓨터를 효율적으로 사용할 수 있다. 운영체제의 성능이 좋을수록 컴퓨터의 성능 역시 좋아진다고 할 수 있다.
또한 운영체제는 사용자에게 편의를 제공하는 목적도 가지고 있다. 운영체제가 없다면 위에서 말한 하드웨어에 관한 모든 관리를 사용자가 해야한다는 점과 같이 컴퓨터를 사용하는데 매우 불편함을 겪을 것이다. 하지만 현재 많은 발전을 거쳐온 운영체제가 설치된 컴퓨터는 사용하기에 매우 편리하다는 것을 느낄 수 있다.
즉, 운영체제는 컴퓨터의 성능을 높이고(performance), 사용자에게 편의성 제공 (Convenience)을 목적으로 하는 컴퓨터 하드웨어 관리하는 프로그램이다.
컴퓨터의 구조를 단순화하면 아래의 그림과 같다.
Processor는 일반적으로 CPU를 말한다. main memory를 보면 ROM과 RAM으로 나누어져 있다.
ROM: 비휘발성 으로 메모리에서 극히 일부를 차지한다.(수 KB)
RAM: 휘발성 으로 메모리의 대부분을 차지하며 실제 프로그램이 할당되는 곳이다.(수 MB ~ 수 GB)
ROM은 하드디스크와 같이 비휘발성으로 전원이 꺼져도 그 안의 내용이 계속 유지된다. RAM은 휘발성이므로 전원이 꺼지면 메모리안의 모든 내용이 지워진다.
컴퓨터의 전원이 켜지면 프로세서(CPU)에서 ROM에 있는 내용을 읽는다. ROM안에는 POST(Power-On Self-Test), 부트 로더(boot loader)가 저장되어 있다. POST는 전원이 켜지면 가장 처음에 실행되는 프로그램으로 현재 컴퓨터의 상태를 검사한다. POST 작업이 끝나면 부트 로더가 실행된다. 부트 로더는 하드디스크에 저장되어 있는 운영체제를 찾아서 메인 메모리(RAM)에 가지고 온다. 이러한 부트 로더의 과정을 부팅이라고 한다.
위 그림은 부트 로더가 진행하는 모습이다. 위와 같은 상태가 되면 운영체제가 수행할 준비를 마친 것이다. 운영체제가 종료하는 시점은 컴퓨터의 전원이 꺼지는 시점이다.
운영체제는 크게 커널(kernel)과 명령어 해석기(Command interpreter, shell)로 나뉜다.
커널은 말그대로 운영체제의 핵심으로 운영체제가 수행하는 모든 것이 저장되어있다. 명령어 해석기는 사용자가 커널(운영체제)에 요청하는 명령어를 해석하여 커널에 요청하고 그 결과를 출력한다.
사용자는 GUI(Graphical User Interface)나 CLI(Command Line Interface) 같은 방식으로 운영체제에 명령을 요청할 수 있는데, 예를 들어 현재 디렉토리의 파일 리스트 불러오기, 프로그램 실행하기, 디스크 용량 확인 등 다양하게 존재한다.
사용자 프로그램(Application)은 특정 운영체제에 맞춰서 만든다. 그러므로 한 애플리케이션은 서로 다른 운영체제에서 수행할 수 없다. (하드웨어가 같은 것은 전혀 상관이 없다.)
예를 들면 Windows에서 수행하는 프로그램을 그대로 Linux에 옮기면 수행되지 않는다.
애플리케이션은 위의 그림과 같이 운영체제 위에서 수행한다. 즉, 하드웨어 자원을 직접적으로 사용하지 않고 운영체제가 제공하는 자원만을 사용할 수 있다.
운영체제는 실제 세상의 정부(Goverment)와 유사하다. 정부가 하는 일은 다음과 같다.
운영체제가 하는 일은 다음과 같다.
자원관리
편의성제공
가상 계산기란?
한대의 컴퓨터를 여러 대의 컴퓨터처럼 보이게 하는 가상 컴퓨터 운영체제에 의해 만들어지며 사용자의 관점에서는 가상 컴퓨터가 실제 컴퓨터처럼 보일 수도 있고 아주 다르게 보일수도 있습니다.
References (참고 자료)