나를 기록하다
article thumbnail
반응형

쉽게 배우는 운영체제

운영체제의 개요

운영체제의 정의

컴퓨터 자원을 효율적으로 관리하는 소프트웨어를 운영체제 혹은 OS라 부른다. 운영체제는 사용자에게 인터페이스를 제공하고 응용 프로그램에 컴퓨터 자원을 골고루 배분하여 작업 환경을 만들어 준다. 적당한 시점에 응용 프로그램으로부터 자원을 회수하고 악의적인 응용 프로그램으로부터 컴퓨터를 보호한다.

 

운영체제의 역할과 목표

컴퓨터 자원을 관리하는 운영체제의 역할은 자원 관리, 자원 보호, 하드웨어 인터페이스 제공, 사용자 인터페이스 제공이다. 운영체제는 이러한 역할을 제대로 수행하여 효율성, 안정성, 확장성, 편리성을 강화할 수 있는 형태로 발전해 왔다.

 

운영체제의 구성

운영체제의 핵심 기능을 모아놓은 것을 커널이라고 하며 커널에 명령을 내리고 그 결과를 알려주는 것을 사용자 인터페이스라고 한다. 커널과 하드웨어의 인터페이스는 디바이스 드라이버라고 한다.

 

운영체제의 역사

작업 방식의 발전

한 번에 하나의 프로그램만 실행할 수 있는 일괄 작업 시스템(또는 일괄 처리 시스템)에서, 키보드와 모니터가 발명되자 대화형 시스템이 가능해졌다. 이후 CPU 시간을 잘게 나누어 여러 프로그램을 동시에 실행하는 시스템인 시분할 시스템이 등장하였다. 시분할 시스템으로 다중 사용자 시스템이 만들어졌고 이때 만들어진 운영체제가 유닉스다.

컴퓨팅 환경의 발전

네트워크상에 분산된 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성한 것이 분산 시스템이다. 이것이 발전하여 언제 어디서나 컴퓨팅 파워와 소프트웨어에 접근할 수 있는 유연한 컴퓨터 환경을 제공하는 클라우드 시스템이 개발되었다.

 

시스템 호출과 API, SDK

시스템 호출

커널은 컴퓨터 자원을 사용할 수 있도록 다양한(시스템) 함수를 제공하는데, 사용자가 자발적으로 커널에 진입할 수 있는 유일한 방법은 시스템 호출 뿐이다.

API

응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스다.

SDK

프로그램 개발자를 위해 API, 코드 편집기, 에뮬레이터 같은 각종 개발용 응용 프로그램까지 하나로 묶어서 배포하는 개발 툴이다.

 

커널의 종류

단일형 구조 커널

핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성된 커널

계층형 구조 커널

비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고, 계층 간의 통신을 통해 운영체제를 구현하는 방식의 커널

마이크로 구조 커널

프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본 기능만 제공하는 커널


연습문제 풀이

1. 소프트웨어는 (     )과 시스템 소프트웨어로 나뉜다. 괄호에 들어갈 적당한 용어는?

  1. 응용 프로그램
  2. 운영체제
  3. 유틸리티
  4. 문서 작성 소프트웨어
소프트웨어의 종류
1. 응용 프로그램: 문서 작성을 위한 MS 워드, 동영상을 보여주는 곰플레이어처럼 특정 작업을 위해 사용하는 프로그램
2. 시스템 소프트웨어: 컴퓨터 하드웨어와 응용 프로그램을 관리하기 위한 소프트웨어. 대표적인 시스템 소프트웨어로 운영체제와 유틸리티가 있다.

 

2. 운영체제의 주요 역할과 가장 거리가 먼 것은?

  1. 인터페이스 제공
  2. 컴퓨터 자원 관리
  3. 그래픽 사용
  4. 자원을 숨김
운영체제의 역할
1. 자원 관리: 운영체제는 저원을 응용 프로그램에 나누어 주어 사용자가 원활하게 작업할 수 있도록 돕는다.
2. 자원 보호: 비정상적인 작업으로부터 컴퓨터 자원을 지키는 것도 운영체제의 역할
3. 하드웨어 인터페이스 제공: 복잡한 과정 없이 다양한 장치를 사용할 수 있도록 해주는 하드웨어 인터페이스를 제공한다. 하드웨어 인터페이스의 지원을 받으려면 드라이버를 컴퓨터에 설치해야 한다. 운영체제는 하드웨어 인터페이스가 자동으로 설치되게 함으로써 하드웨어를 종류에 상관없이 사용할 수 있게 해준다.
4. 사용자 인터페이스 제공: 과거 유닉스, MS-DOS와 같은 운영체제로 작업할 때는 마우스 없이 키보드만 사용했기 때문에 매우 불편했다. 지금은 운영체제가 그래픽 사용자 인터페이스(GUI)를 제공하므로 대부분의 작업을 마우스로 수행한다. 더 나아가 스마트폰에서는 터치스크린을 적용하여 PC보다 편리한 사용자 인터페이스를 제공한다.

 

3. 운영체제의 목표와 가장 거리가 먼 것은?

  1. 효율성
  2. 복잡성
  3. 안정성
  4. 확장성
운영체제의 역할에 해당하는 운영체제의 목표
자원 관리 → 효율성
자원 보호 → 안정성
하드웨어 인터페이스 제공 → 확장성
사용자 인터페이스 제공 → 편리성

 

4. 운영체제의 구성 요소가 아닌 것은?

  1. 유틸리티
  2. GUI
  3. 드라이버
  4. 커널
운영체제의 구성 요소

운영체제의 구성요소

 

5. 나머지 셋과 종류가 다른 것은?

  1. 드라이버
  2. GUI
  3. 명령 프롬프트
시스템 호출과 드라이버
GUI, 셸, 명령 프롬프트는 시스템 호출(커널이 자신을 보호하기 위해 만든 인터페이스)이고,
드라이버(디바이스 드라이버)는 커널과 하드웨어의 인터페이스이다.

System Call Interface & Device Driver Interface

 

6. 운영체제의 핵심 기능을 모아놓은 것은?

  1. 유틸리티
  2. 사용자 인터페이스
  3. 디바이스 드라이버
  4. 커널
커널
커널은 운영체제의 핵심 부분으로 다음과 같은 역할을 수행한다.
1. 프로세스 관리: 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다.
2. 메모리 관리: 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.
3. 파일 시스템 관리: 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.
4. 입출력 관리: 필요한 입력과 출력 서비스를 제공한다.
5. 프로세스 간 통신 관리: 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.

 

7. 초기의 컴퓨터이며 전선을 바꿔 프로그래밍하는 시스템은?

  1. 하드와이어링 시스템
  2. 일괄 작업 시스템
  3. 시분할 시스템
  4. 실시간 시스템

 

8. 한 번에 하나의 프로그램만 실행할 수 있는 시스템은?

  1. hard wiring system
  2. batch job system
  3. time sharing system
  4. real-time system
1. 하드와이어링 시스템 (Hardwired System): 초기의 컴퓨터는 소프트웨어로 프로그래밍되기 전에 전선 등의 하드웨어 수준에서 직접 프로그램을 설정하는 방식. 프로그램 변경이나 수정이 매우 어려웠고, 하드웨어를 물리적으로 변경하여 프로그램을 수정했다. 이는 유연성이 부족하며 유지보수가 어려운 단점이 있었다.
2. 일괄 작업 시스템 (Batch Processing System): 여러 작업들을 일괄적으로 처리하는 시스템으로, 초기 컴퓨터에서 사용된 프로그램들이 일괄로 입력되고 처리된 후에 결과가 출력되는 방식
3. 시분할 시스템 (Time-Sharing System): 여러 사용자가 동시에 컴퓨터를 사용할 수 있는 시스템으로, 시간을 쪼개어 각 사용자에게 할당하는 방식. 다수의 사용자가 동시에 컴퓨터를 사용할 수 있어 효율적인 시스템
4. 실시간 시스템 (Real-time System): 실시간 데이터를 처리하고 반응하는 데 중점을 둔 시스템으로, 실시간 응답이 필요한 환경에서 사용된다. 예를 들어 제어 시스템이나 의료장비 등에서 사용될 수 있다.

 

 

9. 키보드와 모니터가 발명되면서 실현 가능하게 된 시스템은?

  1. 대화형 시스템
  2. 일괄 작업 시스템
  3. 시분할 시스템
  4. 실시간 시스템
대화형 시스템 (Interactive System)
키보드와 모니터 등의 입력 및 출력 장치를 사용하여 사용자와 실시간으로 상호작용할 수 있는 시스템. 이는 사용자가 직접 컴퓨터에 명령을 입력하고 결과를 볼 수 있게 되어, 일괄 작업 시스템에서 발전한 형태. 사용자는 키보드로 명령을 입력하고, 결과는 화면에 출력되어 사용자와 컴퓨터 간의 실시간 대화가 가능해졌다.

 

10. CPU 시간을 잘게 나누어 여러 프로그램이 동시에 실행되는 것처럼 보이는 시스템은?

  1. hard wiring system
  2. batch job system
  3. time sharing system
  4. real-time system

 

11. 클라이언트/서버 시스템의 서버 과부하 문제를 해결하기 위해 고안된 시스템은?

  1. 실시간 시스템
  2. 클라우드 컴퓨팅
  3. P2P 시스템
  4. 사물 인터넷

 

12. 언제 어디서나 컴퓨팅 파워나 소프트웨어에 접근할 수 있는 유연한 컴퓨터 환경을 위해 고안된 시스템은?

  1. real-time system
  2. cloud computing
  3. P2P system
  4. Internet of Things
2. 클라우드 컴퓨팅 (Cloud Computing): 클라이언트/서버 모델을 기반으로 하며, 서버 리소스를 유연하게 확장 가능한 데이터 센터의 클라우드 환경에서 제공하는 모델. 클라우드 컴퓨팅을 통해 서버 과부하 문제를 해결할 수 있다. 클라우드 서비스 제공업체는 필요에 따라 자원을 동적으로 할당하고 확장하여 서버 부하를 분산시킨다.
3. P2P 시스템 (Peer-to-Peer System): 개별 노드들이 서로 직접 통신하며 리소스를 공유하는 분산 시스템. 서버는 중재만 하고 파일을 얻고자 하는 말단 사용자(peer)가 파일을 가진 말단 사용자로부터 직접 다운로드하는 시스템
4. 사물 인터넷 (Internet of Things, IoT): 사물들이 네트워크를 통해 연결되어 정보를 교환하는 시스템. 클라이언트/서버의 개념을 넘어선 분산 아키텍처를 제공한다.

 

13. 사용자가 커널에 진입할 수 있는 유일한 수단은?

  1. 시스템 호출
  2. 사용자 정의 함수
  3. 디바이스 드라이버
  4. 사용자 인터페이스
1. 시스템 호출(System Call): 사용자가 커널에 진입하는 유일한 수단은 시스템 호출이다. 시스템 호출은 사용자 프로그램이 운영체제의 기능을 호출하는 인터페이스를 제공하며, 이를 통해 사용자 프로그램은 커널 모드로 전환되어 운영체제의 특권 명령어를 실행할 수 있다.
2. 사용자 정의 함수 (User-Defined Function): 일반적으로 사용자 정의 함수는 사용자 모드에서 실행되며, 직접적으로 커널에 진입할 수 없다.
3. 디바이스 드라이버 (Device Driver): 디바이스 드라이버는 커널 모드에서 실행되지만, 사용자가 직접 호출하는 것이 아니며, 디바이스와 상호작용하기 위한 운영체제의 일부이다.
4. 사용자 인터페이스 (User Interface): 사용자 인터페이스는 주로 사용자와 상호작용하기 위한 운영체제의 일부이지만, 직접적으로 커널에 진입하는 수단이 아니다. 사용자 인터페이스는 시스템 호출을 통해 운영체제와 통신한다.

 

14. 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스는?

  1. interface
  2. API
  3. shell
  4. kernel
정답: 2. API (Application Programming Interface): API는 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공되는 인터페이스를 나타낸다. 응용 프로그래머들이 다른 소프트웨어 컴포넌트와 상호작용하고 통합할 수 있도록 필요한 함수와 프로시저 등을 정의한 인터페이스를 제공한다. API를 통해 응용 프로그램은 운영체제, 라이브러리, 혹은 다른 소프트웨어와 통신할 수 있다.
1. Interface (인터페이스): 상호작용하는 두 개체 간의 경계 또는 통신 수단
3. Shell (셸): 사용자와 운영체제 간 상호 작용을 담당하는 프로그램 또는 명령어 해석기. 응용 프로그램 간 연관성을 갖는 인터페이스를 직접적으로 제공하지는 않는다.
4. Kernel (커널): 운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 간의 상호작용을 관리한다. 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 직접적으로 제공하는 인터페이스는 아니다.

 

15. 프로그램 개발자를 위해 API, 코드 편집기, 에뮬레이터 같은 각종 개발용 응용 프로그램까지 하나로 묶어서 배포하는 개발 툴은?

  1. SDK
  2. 시스템 호출
  3. 드라이버
  4. 커널
SDK는 Software Development Kit의 약자로, 프로그램 개발자들이 소프트웨어를 개발할 때 필요한 도구와 라이브러리, 문서 등을 포함한 개발 도구 세트를 제공하는 패키지를 나타낸다. SDK는 API, 코드 편집기, 에뮬레이터 등을 포함하여 개발을 용이하게 하고 효율적으로 진행할 수 있도록 도움을 주는 도구 모음이다.

 

16. 커널과 하드웨어의 인터페이스를 가리키는 것은?

  1. SDK
  2. system call
  3. driver
  4. API
디바이스 드라이버(Device Driver)
커널과 하드웨어의 인터페이스를 디바이스 드라이버 또는 드라이버라고 부른다. 그림을 살펴보면 시스템 호출을 거치지 않으면 커널에 진입할 수 없다는 의미다. 반면에 드라이버는 커널 전체를 감싸고 있지 않다. 이는 커널이 제공하는 드라이버도 있고 하드웨어 제작자가 제공하는 드라이버도 있기 때문이다.

컴퓨터 시스템의 구조

 

17. 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성된 커널은?

  1. 마이크로 구조 커널
  2. 와이드형 구조 커널
  3. 계층형 구조 커널
  4. 단일형 구조 커널

 

18. 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고, 계층 간 통신을 통해 운영체제를 구현하는 방식의 커널은?

  1. micro architecture kernel
  2. wide architecture kernel
  3. layered architecture kernel
  4. monolithic architecture kernel

 

19. 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본 기능만 제공하는 커널은?

  1. micro architecture kernel
  2. wide architecture kernel
  3. layered architecture kernel
  4. monolithic architecture kernel
커널의 종류
단일형 구조 커널 (Monolithic architecture Kernel): 초창기 운영체제의 구조로, 커널의 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성되어 있다. 단일형 구조에 속하는 대표적인 운영체제는 MS-DOS, VMS, 초기의 유닉스 운영체제다. 초기에 운영체제를 만들 때는 기능을 구현하기에 바빴기 때문에 모듈을 분리하여 구현할 만한 여력이 없었다. 단일형 구조를 프로그램에 비유하면 함수를 거의 사용하지 않고 main()에 모든 기능을 구현한 형태와 같다.

와이드형 구조 커널 (wide architecture kernel): 응용 프로그램에 더 많은 제어 권한을 주는 형태로, 핵심 기능은 최소한으로 유지하고 응용 프로그램이 직접 자원을 관리하도록 한다.

계층형 구조 커널 (layered architecture kernel): 단일형 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식이다. 비슷한 기능을 모아 모듈화했기 때문에 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있다. 오류가 발생했을 때 전체 커널을 고치는 것이 아니라 해당 계층만 따로 수정하면 되기 때문에 디버깅하기도 쉽고 Microsoft의 window를 비롯해 오늘날의 운영체제는 대부분 이 구조로 이루어져 있다.

마이크로 구조 커널 (micro architecture kernel): 다양한 하드웨어와 사용자의 요구를 수용하기 위해 커널의 크기가 계속 커지고 하드웨어의 용량도 늘어났으며, 커널의 소스가 방대해짐에 따라 발생한 오류를 잡기도 어려워진다는 계층형 구조의 문제를 해결하기 위해 계층형 구조의 접근 방식과 반대되는 접근 방식으로 개발된 것이 마이크로 구조 커널이다. 마이크로 구조 커널의 운영체제는 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공한다. 운영체제의 많은 부분이 사용자 영역에 구현되어 있다. 커널은 메모리 관리와 프로세스 간의 동기화 서비스를 제공하며, 메모리 관리자와 동기화 모듈은 프로세스 간 통신 모듈로 연결되어 있다. 그러므로 각 모듈은 세분화되어 존재하고 모듈 간의 정보 교환은 프로세스 간 통신으로 이루어진다. 각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다. 또한 커널이 이식하기 쉽고 가벼워서 CPU 용량이 작은 시스템에도 적용할 수 있다. 이 구조를 사용하는 대표적인 운영체제인 마하(Mach)는 애플의 PC 운영체제인 OS X와 모바일 운영체제인 iOS의 커널로 사용되며 유명해졌다.

 

단일형 구조 커널

 

계층형 구조 커널
마이크로 구조 커널

 

20. 서로 다른 운영체제에서 동일한 작업 환경을 만들어 주는 것은?

  1. 객체지향
  2. 컴파일러
  3. 가상머신
  4. 인터프리터
가상머신은 운영체제와 응용 프로그램 사이에서 작동하는 프로그램으로, 가상머신을 설치하면 응용 프로그램이 모두 동일한 환경에서 작동하는 것처럼 보인다. 따라서 개발자가 하나의 코드만 만들면 여러 운영체제에서 똑같이 실행할 수 있다. 자바는 유닉스와 윈도우에서 작동하는 다양한 가상머신을 만들어 배포하는데 이를 자바 가상머신(JVM)이라고 한다.

가상 머신

 

21. (          )는 컴퓨터 전체를 관리하고 운영하는 소프트웨어다.

  • 운영체제

22. (          )은 운영체제에서 커널에 명령을 내리고 그 결과를 알려주는 것이다.

  • 인터페이스

23. (          )은 CPU 성능이 낮고 메모리 크기가 작은 기계에 탑재된 컴퓨터다.

  • 임베디드 시스템

24. 컴퓨터가 일반 기계와 다른 점은 (          )을 할 수 있다는 것이다.

  • 프로그래밍

25. 운영체제는 (          )을 효율적으로 관리하는 소프트웨어다.

  • 자원(resource)

26. (          )은 운영체제의 핵심 기능을 모아놓은 것이다.

  • 커널

27. (          )은 초기의 컴퓨터로, 전선을 바꿔 프로그래밍하는 시스템이다.

  • 하드 와이어링 시스템

28. (          )은 한 번에 하나의 프로그램만 실행할 수 있는 시스템이다.

  • 일괄 처리 시스템(batch processing system)

29. (          )은 키보드와 모니터가 발명되면서 실현 가능하게 된 시스템이다.

  • 대화형 시스템(interactive system)

30. (          )은 CPU 시간을 잘게 나누어 여러 프로그램이 동시에 실행되는 것처럼 보이는 시스템이다.

  • 시분할 시스템(time sharing system)

31. (          )은 클라이언트/서버 시스템의 서버 과부하 문제를 해결하기 위해 고안된 시스템이다.

  • P2P 시스템(peer to peer system)

32. (          )은 언제 어디서나 컴퓨팅 파워와 소프트웨어에 접근할 수 있는 유연한 컴퓨터 환경을 위해 고안된 시스템이다.

  • 클라우드 시스템(cloud system)

33. 사용자가 자발적으로 커널에 진입할 수 있는 유일한 방법은 (          )뿐이다.

  • 시스템 호출

34. (          )는 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스다.

  • API

35. (          )는 프로그램 개발자를 위해 API, 코드 편집기, 에뮬레이터 같은 각종 개발용 응용 프로그램을 하나로 묶어서 배포하는 개발 툴이다.

  • SDK

36. 커널과 하드웨어의 인터페이스를 (          )라고 한다.

  • 디바이스 드라이버

37. (          )은 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성된 커널이다.

  • 단일형 구조 커널

38. (          )은 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고, 계층 간의 통신을 통해 운영체제를 구현하는 방식의 커널이다.

  • 계층형 구조 커널

39. (          )은 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본 기능만 제공하는 커널이다.

  • 마이크로 구조 커널

 

40. 컴퓨터와 기계의 차이를 컴퓨터와 계산기의 차이를 이용해 설명하시오.

  • 기계는 성능을 높이거나 기능을 추가하려면 기계 자체를 새로 제작해야 한다. 하지만 컴퓨터의 경우 프로그래밍이 가능하기 때문에 프로그램을 변경하면 된다.

41. 운영체제의 정의를 간단히 설명하시오.

  • 컴퓨터 자원을 효율적으로 관리하는 소프트웨어이다.

 

42. 시분할 시스템에 대하여 설명하시오.

  • CPU 시간을 매우 작은 단위로 나누어 여러 프로그램이 동시에 실행되는 것처럼 보이는 시스템

 

43. 운영체제를 이루는 커널과 인터페이스에 대해 설명하시오.

  • 커널: 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리, 프로세스 간 통신 관리와 같은 운영체제의 핵심 기능을 구현한 프로그램이다.
  • 인터페이스: 사용자와 응용 프로그램에 인접하여 커널에 명령을 내리고 실행 결과를 사용자와 응용 프로그램에 알려준다.

 

44. API와 SDK를 비교하여 설명하시오.

  • API: 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스
  • SDK: 프로그램 개발자를 위해 API, 코드 편집기, 에뮬레이터와 같은 각종 개발용 응용 프로그램까지 하나로 묶어서 배포하는 개발 툴
반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...