본문 바로가기

컴퓨터 과학

OS(운영체제)에 대해 알아보기: System Call이란?

시스템 콜이란 무엇인가? 사실 이 내용에 대해서 간단히 찾아보려고 해도, 내용이 전반적으로 복잡하다고 느꼈다. 나중에 들어선, 시스템 콜은 운영체제 전반에 대한 설명 없이는 이해하기 힘들다는 사실을 알았고, 이번에 OS 전반, 시스템 콜에 대해 다뤄보고자 한다.

 

운영체제란 무엇일까?

먼저, 운영체제란 무엇일까? 사실, 이 개념에 대해서는 컴퓨터 과학을 굳이 배우지 않아도 대략 알고들 있다. 윈도우, MAC과 같이, 컴퓨터 전반이 돌아가게 해주는 일종의 시스템... 이런 방식으로 이해를 하고 있을 것으로 보인다. 이 말이 틀린 것은 아니다. 하지만, 정확히 이해하기 위해서는 더 깊게 파고들어야 할 필요가 있다.

운영체제의 역할 (출처: https://en.wikipedia.org)

우리의 컴퓨터를 좀 더 쉽게 표현하자면 위의 이미지와 같이 4개의 층이 있는 집으로 모식도를 그릴 수 있다. User는 말 그대로 사용자이며, 사용자는 한글과 컴퓨터, 엑셀 등의 Application(응용 프로그램)을 조작을 한다. 응용 프로그램이 사용자의 의도대로 조작되기 위해서는 실제 컴퓨터의 하드웨어(CPU, 메모리, 저장장치 등)이 일을 해야 하는데, 이 일을 하는 곳이 바로 운영체제이다.

 

 

운영체제 내 핵심, 커널(Kernel)

운영체제의 역할은 사실 광범위하다. 우리가 사용하는 바탕화면의 구성부터 하여, 각 파일을 클릭하여 접속하도록 만들어진 인터페이스 등.. 이 중에, 컴퓨터의 물리적인 하드웨어에 직접적으로 접근하는 핵심 기능이 있는데, 이를 커널이라고 한다. 위의 이미지와는 살짝 다른 아래 그림을 보자.

더 세부적으로 나눈 단계

커널은 하드웨어에 직접적으로 관여를 한다. 아래 표에서 정리한 커널의 역할을 보듯, 직접적으로 하드웨어를 제어하는 것을 알 수 있다.

프로세스 관리 CPU 스케줄링, 멀티태스킹, 프로세스 생성 및 종료
메모리 관리 RAM에 메모리 할당 및 해제
파일 시스템 관리 파일 입출력, 디스크에 접근
네트워크 관리 네트워크 인터페이스 제어

물론, 위의 이미지에서 커널 아래에 Drivers(드라이버)라는 칸이 하나 더 볼 수 있는데, 이는 하드웨어 내 특정 장치에 OS가 접근할 수 있도록 해준다. 컴퓨터를 하다 보면 '무슨무슨 드라이버를 설치하세요' 하고 나서야 마우스든 그래픽 카드든 설치 이후에서야 말을 들었던 것이 경험이 있는가? 바로 드라이버가 하드웨어 내 특정 장치(마우스, 키보드, 그래픽 카드 등)에 접근이 가능하도록 역할을 해주기 때문이다. 

당연히, 각 드라이버는 각 장치에만 적용이 된다. NVIDIA의 그래픽 드라이버를 설치했다고 해서, 새로 장착한 SSD가 접근 가능해지는 것이 아니란 말씀.

 

 

그래서 결론, System call(시스템 콜)

위에서 드라이버와 커널에 대해 설명을 하였다. 먼저, 커널과 소통을 하기 위해서는 시스템 콜이라는 요청을 통해서 이루어진다. 예를 들어 응용프로그램이 메모리 상에서 변경을 요청을 해야 한다면, 응용 프로그램이 직접 하드웨어를 제어하지 않고, 시스템 콜이라는 요청을 보내어 커널이 제어하도록 한다는 것!

그렇다 보니, 시스템 콜은 직접 사용자가 제어를 하지 않는 경우가 대부분이다. 또한 명령어의 경우만 해도, 하드웨어를 직접 제어하는 명령어임을 알수 있다. 아래 표를 살펴보자.

파일 관리 파일 열기, 읽기, 쓰기 open(), read(), write(), close()
프로세스 관리 프로세스 생성, 종료 fork(), exec(), exit()
메모리 관리 메모리 할당, 해제 brk(), mmap(), munmap()
네트워크 소켓 생성, 데이터 송수신 socket(), bind(), send(), recv()

 

 

글을 작성하는데 도움이 된 출처:

https://youtu.be/M9ZrQX1UgAU

 

그리고 챗gpt