본문 바로가기
Computer Science/컴퓨터공학(김용담 강사님)

운영체제(OS)란? 개념과 구조(커널, 시스템콜 등)

by 코듀킹 2023. 4. 18.

운영체제(Operating Systems, OS)란?

운영체제(OS)란 유저가 컴퓨터를 편하게 사용할 수 있게 모든 하드웨어 자원을 관리해주는 프로그램이다. 모든 하드웨어 자원을 관리? 그게 무슨 말일까? 하드웨어 자원에는 CPU, 메모리, I/O 디바이스 등이 있다. 묶어서 컴퓨터 자원(resource)이라고 한다. (하드웨어 관련 부가적이 설명이 더 필요하다면, 이글을 보면 된다.) 유저들은 구글이나 카카오톡같은 프로그램을 사용하거나, 키보를 입력하는 등의 작업을 할 때, 동작원리가 어떻게 되는지 알지 못해도, 프로그램이 알아서 연동되는 것처럼 이러한 것들을 OS가 다 관리를 해주는 것이다. 아이폰도 iOS가 있고, 아이패드OS, 맥OS, 윈도우, 리눅스 등 이러한 것들이 전부 운영체제라는 큰 틀안에 들어가 있다.

 

OS는 중간자 역할을 한다고 말할 수 있다. 사용자 입장에서는 하드웨어의 이용과 성능을 편리하게 해주는 프로그램이고, 시스템 입장에서는 CPU, memory, I/O  디바이스 등의 자원을 총괄하는 프로그램인 것이다. 가장 기초적인 OS의 목적은 프로그램을 실행하고, 유저의 문제를 쉽게 풀 수 있도록 만드는 것에 있다.

 

운영체제(OS)는 보통, 컴퓨터 공학 3학년 1학기 정도 많이 배우는데, 가장 어려운 과목이다. 대신 한 번 이해하고 나면, 컴퓨터에 대한 관점이 많이 바뀐다. 다양한 데이터로 다양한 환경에서 개발하는 것에 대한 이해도가 올라갈 수 있다. 그럼 이제 본격적으로 운영체제에 대해 자세히 알아보자.

 

 

운영체제 구조(Architecture of Operating System)

크롬, 엑셀, 카카오톡 같은 프로그램과 실제 하드웨어 사이에 통신을 시켜주는 것을 운영체제(OS)라고 했다. 운영체제는 커널, 인터페이스, 시스템 콜, 드라이버 총 4가지 구성요소로 이루어져있다.

 

운영체제란

 

커널(Kernel)

첫번째로 가장 중요한 것은 커널이다. 커널은 용어 자체도 '핵심의' 같은 의미이다. 운영체제 커널이라고 하면, 전반적인 프로세스를 뜻한다.(프로세스는 아래에서 설명하겠다. 지금은 프로그램이라고 생각하면 된다.) 프로세스 관리, 메모리 관리, 저장공간 관리, 연결된 장치 관리 등 컴퓨터에 속한 모든 자원을 관리하는 역할을 한다. 

 

인터페이스(Interface)

인터페이스는 사용자의 명령을 컴퓨터에 전달하고 결과를 사용자에게 알려주는 소통의 역할을 한다. 인터페이스는 대표적으로 2가지 종류가 있다. GUI(Graphical User Interface)와 CLI(Command Line Interface)다. GUI는 윈도우 바탕화면처럼 아이콘과 마우스 클릭이 되게끔 만들어져서 사용자 편의성을 가진 인터페이스다. CLI는 터미널로 연결하면, 마우스가 없고 명령어를 키보드로 입력하면 글씨만 나오는 인터페이스다.(ex. MS-DOS). 

 

시스템 콜(System Call)

시스템 콜은 사용자나 프로그램이 직접적으로 컴퓨터 자원에 접근하는 것을 막고 커널을 보호하기 위해서 만든 코드 집합이다. 시스템 콜 함수를 통해 커널에 접근할 수 있다. 커널이라는 굉장히 중요한 여러가지 코드나 중요한 내용이 있는데, 그걸 아무나 접근할 수 있게 만들면, 중요한 걸 누가 바꾸거나 할 수 있게 때문에 운영체제는 시스템 콜을 통해서만 호출할 수 있게 디자인 되어있다.

 

드라이버(Driver)

드라이버는 프린터, 키보드 및 디스크 드라이브와 같은 하드웨어 장치와 운영체제 간의 통신을 가능하게 하는 소프트웨어이다. 몇년 전만해도 컴퓨터에 새로운 기기를 연결하기 위해 드라이버를 설치했어야했던 걸 알고있다면, 이해하기 쉽다. 프린터라고 하는 기계는 컴퓨터가 일반적으로 이해하는 구조랑 좀 다르게 생겼다. 특수한 목적을 가지고 있는 하드웨어이기 떄문이다. 그래서 드라이버를 설치함으로써 그 디바이스와 소통을 할 수 있게 만들어주는 것이다.

 

 

운영체제를 통해 안정적이고, 효율적인 동작을 하기 위해서는 사용자 또는 응용프로그램이 직접 하드웨어에 접근하는 것을 막아야 한다. 이 때문에 User Mode(CPU 명령어 사용을 제한)와 Kernel Mode(CPU 명령어를 사용해 하드웨어를 직접 제어)로 분리해 운영체제를 사용하게 된다. 그리고 User Mode와 Kernel Mode 사이는 시스템 콜(System Call)을 통해서 전환된다. 유저모드, 커널모드, 시스템 콜에 대한 자세한 동작 원리는 다음 포스팅에서 다뤄보겠다.

댓글