[Backend] OS의 일반적인 동작 방식
Updated:
🖥 OS 는 무엇일까 ?
컴퓨터는 하드웨어와 소프트웨어로 이루어져 있다. 여기서 소프트웨어와 하드웨어를 이어주는 다리 역할을 하는 소프트웨어가 OS 이다.
응용 소프트웨어는 없어도 컴퓨터가 동작하는데 전혀 이상이 없지만 OS 는 없으면 컴퓨터를 사용 할 수 없다.
우리가 아는 대표적인 OS 는 모바일에서는 IOS, 안드로이드가 있고 컴퓨터에서는 윈도우, Mac OS, Linux 등이 있다.
🛠 OS 가 하는 일
OS 의 최우선 목표는 CPU 를 쉬지 않고 일하게 만드는 것 이다. 때문에 OS 는 프로세스 관리, 메모리 관리, I/O 관리 등 여러가지 일을 한다.
특히 I/O 작업은 CPU 가 하는 일에 비해 굉장히 느리다. I/O 작업을 하는 도중에 CPU 는 끝나길 기다리며 쉬고 있을 수 밖에 없다.
하지만 OS 의 최우선 목표는 CPU 를 쉬지 않고 일하게 만드는 것 이라고 하였다.
때문에 OS 는 I/O 작업을 드라이버에 맡긴 뒤 CPU 에게 다른 일을 시킨다.
그래서 우리가 새로운 프린터, 그래픽 카드 같은 것을 구매하면 CPU 를 대신해 일을 해줄 드라이버를 설치하는 것 이다.
👓 Multi Programming
I/O 작업을 하는 경우 CPU 는 잠시 다른 일을 하러 간다. 간단히 말하자면 이 작업이 Multi Programming 이다.
메모리에 여러가지 작업을 올려두고 계속 번갈아 가며 실행을 하는 것 이다. CPU 는 한 번에 한 작업 밖에 하질 못한다.
하지만 우리는 컴퓨터로 동시에 여러 작업을 한다. 멜론으로 노래를 켜두고 코딩을하고 카카오톡을 한다 !!
CPU 가 정말 빠르게 프로세스 Switching 을 해 자원을 할당 해 주는 것이다.
💾 OS 의 일반적인 동작 방식
그렇다면 CPU 는 언제 프로세스를 스위칭 할까 ? 바로 인터럽트를 통해 스위칭 할 때를 알게 된다.
인터럽트는 방해, 중단의 의미를 가지고 있다. CPU 에게 하던 일을 중단하고 다른 일을 하러 가라고 알려주는 신호 이다.
이러한 구조 때문에 OS 는 Interrupt-Driven 방식으로 동작한다고 할 수 있다.
OS 도 소프트웨어 라고 하였다. 다른 소프트웨어와 마찬가지로 메모리에 올라 와 있으면서 CPU 권한을 받아 작업을 한다.
인터럽트가 발생하면 신호를 분석 해 그에 맞는 작업을 하고 프로세스를 스위칭하는 등 일련의 모든 작업을 하는 것 이다.
하지만 이런 중요한 작업을 하려면 그에 맞는 권한을 가져야 한다. 일반 응용 소프트웨어가 중요한 부분에 접근을 할 수 있다면 어떨까 ?
굉장히 많은 문제가 발생 할 것이다. 그래서 프로세스는 User mode, Kernel mode 두 가지 모드를 가진다.
이를 Dual-Mode Execetuion 라고 하는데 운영체제는 Kernel mode 에서 동작한다.
그렇지만 응용 소프트웨어가 Kernel mode 에서만 할 수 있는 작업을 하고 싶은 경우에는 어떻게 할까 ?
바로 System Call 을 사용한다. System Call 을 통해 OS 에게 어떠한 작업을 하고 싶다고 알려 주는 것이다.
이 신호를 받게 되면 OS 가 응용 소프트웨어가 부탁했던 작업을 Kernel Mode 로 대신 수행 한 뒤 결과 값만 알려주는 방식으로 동작한다.
Leave a comment