본문 바로가기

프로그래밍 서적/쉽게 배우는 운영체제

Part1. 운영체제와 컴퓨터(chap 01)

반응형

올해는 공부를 좀 해보자. 개발과 관련된 글은 미디움에, 지식 및 정리는 티스토리에 쓸 예정이다.

차근차근 책을 읽고 정리하자. 제발 올해는 꼭 기본 지식 쌓기에 성공하자!!!! 올해 목표 다 이루기!!!

Chapter 01 운영체제의 개요

운영체제는 윈도우, 맥, 유닉스, 리눅스, iOS, Android 등을 일컫는 말이며, MP3, 스마트폰, 전자사전 등에도 운영체제가 있다.

컴퓨터는 운영체제가 없어도 잘 동작하지만, 없는 컴퓨터는 만들 당시에 구현한 기능 외 아무것도 수행할 수 없다. 운영체제가 있다면, 기능을 추가하거나 성능 향상, 자원 관리 등을 기대할 수 있다.

운영체제의 역할 중 하나인 자원관리는 우리가 흔히 들어본, 인터페이스(interface)"라는 것을 통해 진행되는데, 자원(HDD, 마우스, 등 주변장치들)에 직접적인 접근을 막는 역할을 한다.

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

예를 들어, 식당에 가서 음식을 주문하면, 웨이터가 요리사에게 전달하고, 요리사는 요리를 해 웨이터가 가져다 준다. 여기서, 내가 직접 요리를 주문하고 요리를 하게 된다면? 주방은 엉망이 될 것이다. 이처럼, 운영체제는 응용 프로그램이나 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하고 그 결과를 돌려준다.

 

그렇다면, 운영체제의 역할은 무엇일까? 위의 설명대로, 자원을 관리하고, 보호하며, 하드웨어와 사용자 인터페이스를 제공하는 역할을 한다.

예를 들어, 자원을 요청한 프로그램이 많다면, 순서에 맞는 자원을 배분함으로써 자원을 관리하고, 하드웨어의 저장소에 직접적인 접근을 통한 데이터 변경을 막기 위해 자원을 보호한다. 또, 특정 기능을 제공하는 하드웨어 사용 시 연결만 하면 알아서 설치가 되며, 마우스로 화면을 조작하거나 터치하는 등의 하드웨어/소프트웨어 인터페이스를 제공한다.

 

운영체제의 목표는, 역할과 연관을 지어보면, 자원 관리는 효율성을, 자원 보호는 안정성을, 하드웨어 인터페이스 제공은 확장성, 소프트웨어 인터페이스 제공은 편리성을 목표로 한다.

 

운영체제의 구조를 살펴보자.

운영체제는 크게 두 부분으로 나눠지는데, 인터페이스커널이다. 인터페이스는 사용자와 응용 프로그램에 인접해 커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려준다. 커널은 프로세스 관리, 메모리 관리 등 운영체제의 핵심적인 기능을 모아놓은 것이다. 즉, 같은 커널이라도 다른 인터페이스라면 다른 운영체제처럼 보인다.

여기서, 커널은 시스템호출드라이버라는 영역이 있다. 시스템 호출은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 이용할 수 있게 해주는 인터페이스이다. 예를 들어, 커피를 직접 만들어 먹는 경우(시스템 호출이 없는 경우)와 커피를 바리스타에게 주문하는 경우(시스템 호출이 있는 경우)라고 생각하면 된다. 드라이버는 많이 들어봤을텐데, 맞다. 마우스를 연결하는 등 하드웨어를 컴퓨터에 연결해 사용하고자 할 때 필요한 인터페이스이다.

*시스템 호출과 유사한 용어로는 API(Application Programming Interface)와 SDK(System Developer's Kit)이 있다. API는 필요한 기능을 제공하는데 사용되는 인터페이스이며, SDK는 API부터 사용 방법 등 모든 것을 포함한 개발 툴이다. 나는 안드로이드 개발자이기에 Android Stuiod라는 SDK가 있다.

 

연습 문제를 풀며 정리하자.

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

운영체제

2. 가전 제품과 같이 CPU의 성능이 낮고 메모리 크기도 작은 시스템에 내장하도록 만든 운영체제는?

임베디드 운영체제

3. 사용자가 원하는 기능을 수행하기 위해 컴퓨터 자원을 사용하는 소프트웨어는?

응용 프로그램

4. 운영체제가 없는 컴퓨터에서는 어떤 문제가 발생하는지 설명해보자.

만들 당시 기능만 사용 가능하므로, 기능 추가 또는 성능 향상, 자원 관리 등을 기대할 수 없다.

5. 기계와 사용자 사이에 명령을 전달하고 처리한 결과를 알려주는 것은?

인터페이스

6. 프로그램과 데이터를 한 번에 입력한 후 작업의 최종 결과만 얻는 운영체제의 방식은?

일괄 작업 시스템

7. 프로그램이 진행되는 도중에 사용자로부터 데이터를 입력받아 프로그램 진행에 반영할 수 있는 운영체제 방식은?

대화형 시스템

8. CPU 사용 시간을 쪼개어 여러 개의 프로그램이 동시에 실행되는 것처럼 보이는 운영체제 방식은?

시분할 시스템

9. 멀티프로그래밍 수준은 동시에 실행되는 작업의 개수를 나타낸다. 멀티프로그래밍 수준이 1인 시스템은?

일괄 작업 시스템

10. 멀티프로그래밍 수준이 2보다 크거나 같은 시스템을 두 개 이상 쓰시오.

다중 사용자 시스템, 시분할 시스템

11. 특정 작업이 일정 시간 안에 처리되도록 보장하는 시스템은?

실시간 시스템

12. 작고 싼 컴퓨터를 네트워크로 묶어 대형 컴퓨터와 같은 일을 할 수 있도록 만든 시스템은?

분산 시스템

13. 서버 없이 말단 노드끼리 데이터를 주고 받는 시스템은?

P2P(Peer to peer) 시스템

14. 커널이 자신의 자원을 보호하기 위해 만든 함수의 집합은 무언인가?

시스템 호출

15. 커널과 하드웨어 사이의 인터페이스는 무엇인가?

드라이버

16. 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성되어 있는 커널 구조는?

단일형 구조 커널

17. 커널의 기능을 최소화하여 여러 컴퓨터에 이식하기 쉽게 만든 커널 구조는?

마이크로 구조 커널

18. 서로 다른 운영체제에서 하나의 응용 프로그램으로도 작동할 수 있도록 만든 시스템은?

가상머신

 

 

심화문제는 책을 읽으며 찾아보도록 하자.(절대 쓰기 귀찮아서 아니다..)

다시 한 번 읽어보며 상기하자.

 

반응형