Lined Notebook

[OS] 운영체제

by HeshAlgo

실무에 직접 개발을 하면서 내가 느끼는 것은 CS에 대한 기본지식이 많이 부족하다고 느낍니다. 그중에서도 운영체제 부분이 내가 알고 있는 CS 지식 중 가장 모르는 부분이라고 항상 느끼고 있었습니다. 그동안 기술적인 것들을 공부하는데 집중을 했었는데 아무래도 신입 개발자인 만큼 기본적인 것이 가장 중요하다고 생각되어 운영체제 부분을 좀 익혀둘 필요가 있다고 생각됩니다. 그래서 오늘부터 운영체제 책을 참고하면서 그동안 내가 몰랐던 부분이나 놓쳤던 부분들을 정리해나갈 생각입니다.

 

1. 운영체제 

운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어입니다.

그렇다면 운영체제는 어떻게 시스템의 자원을 효율적으로 관리하게 되는걸까요?? 

기술이 발달하면서 메모리 크기가 커지고 하드디스크, 마우스, 사운드 카드 등 다양한 주변 장치가 등장하게 되었는데 이렇게 컴퓨터에 부착된 모든 장치를 컴퓨터 자원이라고 합니다. 운영체제는 사용자가 직접 자원에 접근하는 것을 막음으로써 자원을 보호하고 관리하게 됩니다.

예를 들어서 사용자가 하드디스크에 데이터를 저장하려는 경우 사용자는 하드 디스크의 특정 위치에 데이터를 저장할 수 없으며, 운영체제에 부탁하면 운영체제가 알아서 적당한 위치에 저장합니다. 만약에 사용자가 하드디스크에 데이터를 저장할 수 있다면 악의 적인 사용자가 데이터를 지우거나 덮어쓰는 일이 발생할 수 도 있기 때문에 이를 방지하기 위해 운영체제는 응용프로그램과 사용자에게 모든 자원을 숨깁니다. 

운영체제 정의

 

2. 운영체제의 역할

1) 자원 관리

우리는 컴퓨터로 문서를 작성하고, 음악을 듣고, 인터넷 서핑을 합니다. 이 때 키보드, 사운드 카드 등의 컴퓨터 자원을 사용하는데, 운영체제는 이러한 자원을 응용프로그램에 나누어주어 사용자가 원활하게 작업할 수 있도록 돕습니다. 만약 자원을 요청한 프로그램이 여러 개라면 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 다른 응용프로그램에 나누어 줍니다. 

 

2) 자원 보호

어떤 응용프로그램이 남의 영역을 침범해 다른 사람의 작업을 망치거나 데이터를 지울 수 있는 경우가 발생할 수도 있기 때문에 이러한 비정상적인 작업으로부터 컴퓨터 자원을 지키는 일도 하게 됩니다.

 

3) 하드웨어 인터페이스 제공

우리는 다양한 종류의 하드웨어를 사용하는데 이런 하드웨어를 복잡한 과정 없이 다양한 장치를 사용할 수 있도록 해주는 하드웨어 인터페이스를 제공합니다. 

 

3. 운영체제의 구조

1) Kernel (커널)

커널은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 자동차에 비유하자면 엔진에 해당됩니다. 즉, 운영체제의 성능은 커널이 좌우하게 됩니다. 

운영체제는 크게 인터페이스와 커널, 두 부분으로 나누어 집니다. 

사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려주는 인터페이스와 운영체제의 핵심 기능을 모아놓은 커널 구조입니다.

 

2) System Call (시스템 호출)

커널이 자신을 보호하기 위해 만든 인터페이스입니다. 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단합니다. 따라서 자원을 이용하려면 System Call이라는 인터페이스를 이용하여 접근해야 합니다.

그렇다면 사용자가 자원에 직접접근 하는것과 System Call을 이용해 접근하는 방식에 차이가 있을까??

물론 엄청난 차이가 있다. 사용자가 커피를 마시는 경우를 빗대어 표현해보겠습니다.

 

- 직접 접근 하는 경우

사용자가 직접 커피를 마시려 하는 경우, 사용자는 커피와 설탕이 어디 있는지, 커피 머신은 어떻게 사용하는지 등 모든 과정 등을 알고 처리해야 된다. 이런 경우, 자신의 부주의로 커피머신을 고장낼 수도 있고 주변을 어질러 놓을 수도 있고 여러 가지 불편한 사항이 생기게 됩니다.

 

- System Call을 통해 접근하는 경우

사용자는 누군가에게 지겁 요청하여 작업의 결과만 받는 방식이다. 우리가 카페에 가는 경우를 생각해보면 될 것입니다. 우리는 카페에 가게 되면 마시고 싶은 커피를 주문만 하면 직원분들께서 알아서 직접 제조를 해주시기 때문에 우리는 주문한 커피를 받기만 하면 됩니다. 그렇기 때문에 커피 머신을 고장낼 일도 없을 뿐만 아니라 커피와 설탕의 위치 등 이런 부가적인 요소를 알 필요가 없어집니다. 

이처럼 운영체제는 사용자나 응용프로그램이 하드웨어에 직접 접근하지 못하도록 막음으로써 컴퓨터 자원을 보호합니다.

대신 하드웨어와 같은 시스템 자원을 사용할 수 있도록 인터페이스를 제공하는데 이것이 바로 System Call 입니다.

 

 

'운영체제' 카테고리의 다른 글

[OS] Deadlock  (0) 2022.03.03

블로그의 정보

꾸준히 공부하는 개발 노트

HeshAlgo

활동하기