본문 바로가기

📘 Computer Science/운영체제

[운영체제] 운영체제란?

스스로 공부하고 개인적으로 기록해보는 공간입니다. 틀린 부분이 있다면 알려주시면 바로 수정하겠습니다. 감사합니다. 😄

📘 운영체제란 무엇인가?

📖 운영체제(Operating System)가 무엇인가?

컴퓨터를 이용하는 사용자가 컴퓨터 하드웨어와 상호작용할 수 있도록 도와주는 소프트웨어를 말한다. 사용자가 직접 하드웨어에 접근하여 정보를 처리하는 것은 어렵기 때문에 그 역할을 운영체제가 도와준다.

하나의 예시를 들어보면 컴퓨터는 0과 1로 데이터를 표현하는데, 만약 운영체제가 없다면 사용자는 직접 0과 1로 구성된 데이터를 이용하여 직접 컴퓨터와 상호작용해야하는 어려움이 있다.

대표적인 운영체제로는 Windows, MacOS, Linux, IOS 등이 있다.

image

📖 Bootstrap Program이 무엇인가?

컴퓨터나 노트북을 처음에 켜면 windows 아이콘이나 mac 아이콘이 뜨면서 뭘 로딩하는 화면을 볼 수 있다. 이처럼 하드웨어를 사용하기 위해서 전원을 켜면 운영체제를 실행시켜줘야하는데 이 역할을 해주는 것이 바로 Bootstrap Program이다.

즉, Bootstap Program은 전원을 켰을 때, 가장 먼저 작동하는 프로그램을 말하고 이 프로그램은 RAM이 아닌 ROM에 저장되어 있습니다. 전원이 켜지면 CPU는 ROM에 저장된 Bootstrap Program을 읽고, Disk로 부터 OS(운영체제)를 Load하고 실행시키는 역할을 합니다.

🤔 왜 Bootstrap Program은 ROM에 저장되어있을까?
ROM은 Read Only Memory로서 비휘발성 메모리이다. 즉, 전원이 꺼지면 정보가 날라가는 RAM과는 다르게 전원이 꺼져도 정보가 날라가지 않는 특징이 있기 때문에 Bootstrap Program은 ROM에 저장이 된다.

image

📖 사용자가 운영체제를 통해서 하드웨어와 어떻게 상호작용하는가?

그럼 운영체제를 실행시키고 사용자는 어떻게 운영체제와 상호작용하여 하드웨어를 제어할 수 있을까라는 의문이 든다. 운영체제는 크게 Shell(명령어 해석기)과 Kernel(커널)로 나눌 수 있습니다. 아래 그림과 같은 방법으로 사용자가 운영체제를 통해서 하드웨어와 상호작용할 수 있습니다.

사용자는 Shell(ex. bash)을 통해서 명령어를 치면 명령어를 해석해서 Kernel에 요청을 보냅니다. 그럼 Kernel에서는 요청받은 로직(일)을 처리하고 결과를 출력합니다.

주로 사용자들은 CLI(Command Line Interface)나 GUI(Graphical User Interface)를 통해서 운영체제에 명령을 요청합니다.

image

📖 커널(kernel)은 무엇일까?

Shell을 사용해서 우리는 명령어를 치고 그에 대한 결과를 받을 수 있었다. 그럼 커널(Kernel)은 무엇일까?

커널은 프로세스, 메모리, 저장장치를 관리하는 핵심적인 기능을 합니다. 즉 운영체제의 가장 핵심적인 부분이라고 할 수 있습니다. 이러한 커널에는 System Call드라이버라는 것이 존재합니다.

 

  1. System Call (시스템 호출)image
    우리가 응용 프로그램을 사용하는 모든 부분은 user mode일 때 실행됩니다. 커널의 경우 Hardward을 직접적으로 제어할 수 있기 때문에 보호장치라고 할 수 있는 System Call이 존재합니다. System Call의 경우 write(), read(), printf()와 같은 메서드를 이용하여 사용할 수 있습니다. user mode에서 이런 System Call이 들어온다면 Kernel mode로 들어가 Hardware를 제어할 수 있습니다.

 

  1. 드라이버
    Kernel과 Hardware 사이의 인터페이스를 드라이버라고 합니다. 커널의 입출력의 기본적인 부분만 제작되어 있어서 마우스, 키보드와 같은 hardware의 경우 노트북이나 컴퓨터에 꽂기만 해도 작동이 되는 것을 볼 수 있습니다. 하지만 프린터와 같은 장치들은 사용할 때 해당 제작사에서 제공하는 드라이버를 다운로드 받아서 사용했던 경험을 해본적이 있으실 겁니다. 이때 사용하는 것을 디바이스 드라이버라고 합니다.

🔎 Reference

[운영체제(OS)] 1. 운영체제란?
[운영체제(OS)] 운영체제란 무엇인가?