운영체제(OS, Operating System)란?
개발자가 아니더라도 한 번쯤은 들어 봤을 윈도우, 리눅스, MacOS, 안드로이드(AOS), iOS들이 바로 운영체제이다.
운영체제도 하나의 프로그램이다. 참고로, 현존하는 프로그램 중 가장 규모가 큰 프로그램 중 하나다.
하지만 다른 프로그램들과는 조금 다른 특별한 프로그램이다.
운영체제도 프로그램이므로 다른 프로그램들과 마찬가지로 메모리에 적재되어야하는데, 운영체제의 경우에는 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행되게 된다.
운영체제의 역할
운영체제는 응응프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원을 할당하고 응용 프로그램이 올바르게 실행되도록 관리하는 역할이다.
운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호한다. 오직 운영체제를 통해서만 접근이 가능하도록 한다. 응용 프로그램에 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근하여 요청 받은 작업을 수행한다.
운영체제는 실행할 프로그램을 메모리에 적재하고, 더이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 자원을 관리한다.
또한 운영체제는 최대한 공정하게 여러 프로그램에 CPU 자원을 할당한다.
운영체제의 역할을 구분하자면 CPU 스케줄링과 프로세스 관리, 메모리 관리, 디스크 파일 관리, I/O 디바이스 관리로 나눌 수 있다.
운영체제가 하드웨어를 조작하고 관리하는 기능들을 제공하기 때문에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요없이 운영체제의 도움을 받아 간편하게 개발할 수 있다.
커널영역
메모리는 크게 커널영역과 사용자영역으로 나뉜다.
그 중 커널 영역은 운영체제의 핵심 서비스(프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리)를 담당하는 부분이다.
운영체제에서 제공하는 서비스 중 커널에 포함되지 않는 서비스는 사용자 인터페이스(GUI, CLI), 시스템콜, 드라이버가 있다.
사용자 영역은 실행되는 프로그램이 적재되는 영역이다.
커널 영역에 접근하기 위해서는 커널 모드 상태일 때 가능하다.
커널 모드와 사용자모드
커널 모드는 운영체제 서비스를 제공받을 수 있는 실행 모드를 의미한다. 즉, 커널영역의 코드를 실행할 수 있는 모드이다.
사용자 모드는 운영체제 서비스를 제공받을 수 없는 실행 모드를 의미한다. 즉, 커널영역의 코드를 실행할 수 없는 모드이다.
운영체제는 CPU가 명령어를 실행하는 모드를 구분하는 mode bit를 통해 사용자 모드인지 커널 모드인지 구분할 수 있다.
(CPU가 어떤 모드로 실행중인지는 플래그 레지스터 속 슈퍼바이저 플래그로 확인 가능하다.)
시스템 콜 (=시스템 호출)
시스템 콜이란, 사용자 모드로 실행되던 프로그램이 자원에 접근하는 운영체제 서비스를 제공받기 위한 요청이다.
시스템 콜은 소프트웨어 인터럽트(프로그램을 실행하고있을 때, 입출력하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것)이다.
시스템 콜을 발생시키는 명령어가 실행되면, 1️⃣ CPU는 지금까지 작업을 백업하고 2️⃣ 커널 영역 내 시스템 콜을 수행하는 코드를 실행한 뒤, 3️⃣ 다시 기존에 실행하던 응용 프로그램으로 복귀하여 실행을 계속해나간다.
운영체제를 알아야 하는 이유?
문제해결능력에 도움을 주기 때문이다. 운영체제는 현재 하드웨어의 상태, 코드가 어떻게 실행되었는지 하드웨어상에 어떤 문제가 있었는지 등을 상세히 알려준다. 이를 통해 우리는 문제 해결의 실마리를 찾을 수 있게 된다.
+. 가상머신
소프트웨어적으로 만들어 낸 가상의 컴퓨터를 의미한다. 가상머신을 설치하면 새로운 운영체제와 응용 프로그램을 설치하고 실행할 수 있다. 가상화를 지원하는 CPU는 커널모드와 사용자모드 외에 가상머신을 위한 모드인 하이퍼바이저 모드를 따로 둔다. 가상머신 상에서 작동하는 응용 프로그램들은 하이퍼바이저 모드로 가상머신에 설치된 운영체제로 부터 운영 서비스를 받을 수 있다.
참고) 위 내용은 혼자 공부하는 컴퓨터 구조 및 운영체제, 면접을 위한 CS 전공지식 노트, 위키백과 등을 참고해 정리한 글입니다.
댓글