본문 바로가기
동굴 속 정보

인터뷰에서 중요한 운영체제 질문 1

by 도시형닌자 2020. 4. 29.

[ 운영체제 기초 ]

운영체제의 이해

직업을 구할 때 요청받는 인터뷰에는 다소 기술 질문이 오간다.

이때 진행했던 프로젝트의 내용이 아닌

정말 기초적인 질문을 받고 또 나는 준비가 되어있지 않다면.....

매우 안좋은 결과로 이어질 수 있다.

 

이러한 실수를 반복하지 않기 위해 준비한 이야기이다.

함께 모든 인터뷰를 타파하자.

 

 

[ 컴퓨터 시스템의 구성요소 ]

 

- 하드웨어(Hardware)

컴퓨터가 컴퓨팅하기 위해 사용하는 자원이라고 볼 수 있다.

CPU, Memory, I/O Devices을 말한다.

 

- 운영체제(Operating System, OS)

사용자와 컴퓨터 하드웨어 사이의 중개역할을 맡고 있다.

 

- 어플리케이션(Application Program)

사용자가 요구하는 컴퓨팅을 수행한다.

하드웨어 자원을 사용하여 동작한다.

Word, Compiler, Web Browser, DB, 겜임 등이라고 볼 수 있다.

 

- 사용자(Users)

시스템을 사용하는 건 사람와 기계이다.

이 두가지 모두 사용자로 볼 수 있다.

 

 

 

 

 

[ 운영체제란? ]

사용자와 컴퓨터 하드웨어 사이의 중개역할을 맡고 있다.

HW > OS > Program(Application) > User

 

OS 기준으로 아래가 저레벨 위가 고레벨이라고 한다.

그래서 저레벨은 HW 관점이라고 하고 시스템 관점이라고 한다.

고레벨은 서비스 관점이라고 하고 사용자 관점이라고 한다.

 

시스템 관점으로는

프로그램들의 동작을 제어하고 자원을 할당한다.

시스템에서 사용하는 자원을 보호하고 효율적으로 사용하는 것을 목적으로 한다.

 

사용자 관점으로는

프로그램을 실행하고 그 프로그램을 편리하게 사용하기 위한 목적이다.

 

 

 

 

 

[ 운영체제의 시작 ]

OS에서 가장 핵심 동작을 하는 건 커널이다.

커널은 항상 메인 메모리 위에서 작업을 수행한다.

 

커널은 DISK에 존재하는데

Bootstrap 이라는 녀석이 전원이 커질 때 메모리로 로드시킨다.

이뿐만 아니라 전원의 인가와 재인과 그리고 시스템 초기화도 같이 한다.

 

Bootstrap은 ROM 내에 Firmware 형태로 존재한다.

실제로 건드리게 될 일은 거의 희박하다.

하지만 Kernel을 메모리에 올려서 OS가 작동하게 하는 중요한 놈이다.

 

 

 

 

 

[ 운영체제의 동작 ]

메모리를 제외한 각각의 구성요소들은 Bus를 통한다.

Bus를 통해서 Memory Access를 경쟁적으로 수행한다.

가장 먼저 도착한 놈일수록 먼저 수행될 확률이 높기 때문이다.

 

모든 프로그램은 Access가 2회 일어난다.

1회 Disk => Memory

2회 Memory => CPU

2회를 통해서 작업이 수행된다.

 

I/O Device들은 I/O Device 내에 있는 컨트롤러(Controller)를 통한다.

Controller 안의 버퍼(Buffer)에 데이터를 저장하고 있다가 Memory에 Data를 전달한다.

전달된 값은 다시 CPU가 읽고 쓰고 하면서 연산한다.

디바이스와 CPU의 소통 방법

 

 

 

 

 

[ 운영체제의 인터럽트(Interrupt) 다루는 방법 ]

OS는 Interrupt Driven 방식으로 Device를 다룬다.

이게 무슨 말이냐 하면,

외부장치의 입출력을 인터럽트로 인지하겠다는 말이다.

 

인터럽트(Interrupt)는 I/O Device에서 발생한 이벤트를 CPU에게 알려준다.

종류는 2가지로 하드웨어 인터럽트와 소프트웨어 인터럽트가 있다.

하드웨어 인터럽트는 말 그대로 하드웨어에서 발생한 이벤트를 CPU에 알려주는 것이다.

소프트웨어 인터럽트는 대표적으로 System Call과 Exception이 이다. 

 

OS는 Interrupt Vector를 이용해서 필요한 Service를 호출한다.

Interrupt Vector는 필요한 서비스의 특정 메모리를 가리키고 있다.

 

소프트웨어 인터럽트인 System Call은 OS가 제공하는 프로그래밍 인터페이스다.

그래서 System Call로 애플리케이션이 OS를 통해 시스템 서비스를 이용할 수 있게 해 준다.

대부분 API(Application Programming Interface) 같은 Livrary 형태로 제공이 되어 사용이 편리하다.