본문 바로가기

면접질문[CS]/알고리즘 & OS

운영체제 그리고 커널. [ 운영제체(OS) 면접질문 0 ]

 

WHY

 

본격적인 운영체제 면접 질문으로 들어가기 전에 넘어가야 할 질문이다.

 

가장 기초적인 질문이어서 면접에서 물어보지 않을 수 있다. 갑자기 질문받으면 "이거다"싶은 대답이 떠오르지 않을 수도 있다.

 

간단하면 간단하게, 복잡하면 복잡하게 답변이 될 수 있는 질문.

 

이후의 살펴볼 OS와 관련된 질문들로 넘어가기 전에

 

운영체제의 정의와 목적을 이해한다면 이후의 지식들이 오래 기억될 것이다.

 

출저 : 위키

 

프로그램이 돌아가는 과정을 추상화하면 위의 그림과 같아진다.

 

사용자는 원하는 프로그램을 실행시키고, 프로그램은 자신이 사용해야 할 자원들에 대해서

 

운영체제에 사용 요청(시스템 호출)을 보낸다.

 

운영체제는 해당 시스템 호출을 확인하고 필요한 하드웨어에 접근해서 작업을 처리하고 응답한다.

 

운영체제는 사용자에게는 사용의 "편리함"을 제공해주고,

 

시스템의 자원에 입장에서는 시스템 자원을 안전하고 효율적으로 사용할 수 있도록 해주는 "관리자"인 셈이다.

 

메인보드 [ 여러 디바이스를 장착할 수 있다. ]

조립 PC를 맞춰본 사람들이 고민하는 부분은 바로 메모리와 CPU 부분이다. [ 최근에는 그래픽카드에 대한 가격.. ]

 

모든 하드웨어 장치를 연결해주는 메인보드를 살펴보면 정말 많은 하드웨어를 사용하는구나는 알 수 있다.

 

사용자가 하드웨어 하나하나를 직접 다루는 방법을 살펴보고 해당 하드웨어를 사용하는 것은 시간적으로나

 

비용적으로나 비효율적이다.

 

우리는 실행 방법에 대한 세부사항이 아니라 실행에 필요한 요구와 그에 대한 응답만을 원한다.

 

그러면 사용자가 아니라 누군가는 하드웨어에 대해서 "전문적인 지식"을 갖추어서

 

나의 요구만 들어도 "아! 이거군요!" 하고 응답을 해줄 수 있는 대리인이 필요하다.

[ 사용자에게 하드웨어 사용에 대한 편리한 인터페이스 환경을 제공하는 것 ]

 

그와 동시에 수많은 요구가 쏟아질 때 "이것부터 처리해야 겠군요"하며 작업의 우선순위와 작업의 가능성을 확인해주는 유능한 대리인도 필요하다.

[ 시스템의 자원을 효율적으로 사용하고 관리하는 것 ]

 

동시에 악의적인 요구나 들어줘서는 안되는 요구에는 거부할 수 있는 보수적인 대리인도 필요하다.

[ 자원을 안전하게 관리하는 것 ]

 

만능적인 대리인이 바로 "운영체제"인 셈이다.

 

운영체제는 커널이라는 소프트웨어를 활용해서 사용자의 요구에 맞는 응답을 제공하는 이 시스템 환경을 관리한다.

 

시스템 환경이 안정적으로 관리되기 위해서는 3가지 자원을 효율적으로 사용해야 한다.

 

1. 연산처리 장치 : CPU.

 

2. 주기억 장치인 메모리.

 

3. 데이터 영속 저장장치인 디스크.

 

수많은 디바이스가 발명되고 메인보드에 추가되고 있지만 운영체제의 가장 핵심적인 기능은

 

바로 위의 핵심 3가지 자원을 안전하면서도 효율적으로 다루는 것이다.

 

운영체제는 사용자 인터페이스 + 시스템 호출 + 커널 + 하드웨어 드라이버

로 구성된다.

 

이 중에서 핵심은 "커널과 시스템 호출"이다. 이 둘이 운영체제의 전부라고 봐도 무방하다.

커널(Kernel) : 모든 프로그램을 제어하는 시스템 프로그램(시스템 프로세스)

커널은 3가지 자원을 핵심적으로 관리한다.

1. 프로세스

2. 메모리

3. 저장장치.

이외에도 다른 하드웨어를 이용할 수 있도록 핵심적인 기능들을 제공하지만 가장 중요한 자원은 위의 3가지이다.

 

운영체제의 성능과 안전이 달려있는 영역이기 때문이다.

끝내주는 설명이다. 

시스템 호출(System call)

 

커널이 자신을 보호하기 위해서 만든 인터페이스이다.

 

사용자는 커널이 제공하는 API를 통해서 커널을 다룰 수 있다. 

 

사용자로 하여금 직접적으로 컴퓨터 자원에 접근하지 못하도록 중단 단계를 두는 것이다.

 

사용자가 하드웨어를 사용하고자 한다면 시스템 호출을 통해 커널로부터 허가를 받고 응답을 받아야 한다.

 

디바이스 드라이버

 

보통은 똑똑한 운영체제가 대량의 유명한 하드웨어 벤더들이 제공하는 하드웨어 디바이스 드라이버를 갖춰둔다.

 

하지만 문제가 되면 우리는 이 디바이스 드라이버를 교체하거나 수정하는 방식으로 하드웨어를 세팅하게 된다.

 

디바이스 드라이버는 하드웨어 벤더에서 제공하는 소프트웨어로 운영체제로 하여금 해당 디바이스를 다룰 수 있도록 

 

기능을 제공하는 소프트웨어이다. 운영체제는 디바이스 드라이버를 통해 하드웨어를 다룬다.

 


마무리

 

커널, 자원(컴퓨터 아키텍처)에 깊게 들어가면 정리해야 할 부분들이 많아져서 여기까지만 정리해 봤다.

 

워낙 유명한 개념이기도 해서 인터넷에 많은 정리자료가 존재하는데 내 스타일에 맞게 다시 정리해봤다.

 

혹시나 틀린(혹은 잘못된) 부분이 있다면 답글로 남겨주시면 감사하겠습니다.

 


참고자료

  • 쉽게 배우는 운영체제

블로그

  • goodmilktea님의 글 : link
  • 수연이님의 글 : link
반응형