1장 - 운영체제와 컴퓨터

Log·2022년 9월 4일
0
post-thumbnail

문서 목적

해당 문서는 쉽게 배우는 운영체제 책을 읽고 연습 문제에 대한 답을 개인적으로 정리하기 위해 작성된 문서이다.(틀린 내용이 적혀 있을 수도 있음)

운영체제의 개요

연습문제

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

  2. 가전제품과 같이 CPU의 성능이 낮고 메모리 크기도 작은 시스템에 내장하도록 만든 운영체제를 임베디드 운영체제 또는 임베디드 시스템이라고 한다.

  1. 사용자가 원하는 기능을 수행하기 위해 컴퓨터 자원을 사용하는 소프트웨어를 응용 프로그램이라고 한다.
  1. 운영체제가 없는 컴퓨터에서는 처음 설계한 대로만 사용 가능하고, 다른 기능을 추가 또는 성능 향상할 수 없다.
  1. 인터페이스는 기계와 사용자 사이에 명령을 전달하고 처리한 결과를 알려준다.
    운영체제는 응용 프로그램 또는 사용자에게 컴퓨터 자원을 사용할 수 있는 인터페이스를 제공하고 그 결과를 돌려준다.

  2. 일괄 작업(처리) 시스템은 프로그램과 데이터를 한 번에 입력한 후 작업의 최종 결과만 얻는 운영체제 방식이다.
    모드 작업을 한꺼번에 처리하며, 프로그램 실행 중간에 사용자가 데이터를 입력하거나 수정하는 것이 불가능하다.

  3. 대화형 시스템은 프로그램이 진행되는 도중에 사용자로부터 데이터를 입력받아 프로그램 진행에 반영할 수 있는 운영체제 방식이다.

  4. CPU 사용 시간을 쪼개어 여러개의 프로그램이 동시에 실행되는 것처럼 보이는 운영 체제 방식을 시분할 시스템이라고 한다.
    다중 작업 시스템이라고도 불리며, 잘게 나뉜 시간 한 조각을 타임 슬라이스(퀀텀)이라고 한다.

  5. 멀티프로그래밍 수준(멀티프로그래밍 정도)은(는) 동시에 실행되는 작업의 개수를 나타낸다. 멀티프로그래밍 수준이 1인 시스템을 일괄 작업 시스템이라고 한다.

  6. 멀티프로그래밍 수준이 2보다 크거나 같은 시스템으로는 시분할 시스템, 다중 사용자 시스템이 있다.

  7. 특정 작업이 일정 시간 안에 처리되로록 보장하는 시스템을 실시간 시스템이라고 한다.

    • 경성 실시간 시스템 : 지정한 응답 시간을 정확히 지키는 시스템
    • 연성 실시간 시스템 : 지정한 응답 시간을 최대한 지키되, 융통성이 어느 정도 허용된 시스템
  8. 작고 싼 컴퓨터를 네트워크로 묶어 대형 컴퓨터와 같은 일을 할 수 있도록 만든 시스템을 분산 시스템이라고 한다.

  9. 서버 없이 말단 노드끼리 데이터를 주고받는 시스템을 P2P 시스템이라고 한다.
    그 예시로는 메신저와 파일 공유가 대표적인 예이다.

  10. 커널이 자신의 자원을 보호하기 위해 만든 함수의 집합을 시스템 호출이라고 한다.
    응용 프로그램이 하드웨어 자원에 접근하거나 응용체제가 제공하는 서비스 이용이 필요할 때에는 시스템 호출을 사용하여야 한다.

  11. 커널과 하드웨어 사이의 인터페이스를 드라이버라고 한다.

  12. 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성되어 있는 커널 구조를 단일형 구조 커널이라고 한다.

  13. 커널의 기능을 최소화하여 여러 컴퓨터에 이식하기 쉽게 만든 커널 구조를 마이크로 구조 커널이라고 한다.

  14. 서로 다른 운영체제에서 하나의 응용 프로그램으로도 작동할 수 있도록 만든 시스템을 가상 머신이라고 한다.

심화 문제

1 ~ 8 번까지 책, 그 외는 개인적으로 추가한 내용

  1. 운영체제의 역할

    1. 자원관리
      키보드 등 컴퓨터 자원을 사용하는데, 이런 자원을 응용 프로그램에 나누어 주어 사용자가 원할하게 작업할 수 있도록 돕는다.
    2. 자원보호
      비정상적인 작업(남의 영역 침범 등)으로 부터 컴퓨터 자원을 지킨다.
    3. 하드웨어 인터페이스 제공
      다양한 장치를 사용할 수 있도록 하드웨어 인터페이스를 제공한다.
    4. 사용자 인터페이스 제공
      사용자가 운영체제를 편리하게 사용하도록 지원하며, GUI, 터치 스크린 등이 있다.
  2. 운영체제의 목표

    1. 효율성
      자원을 효율적으로 관리하여, 같은 자원을 사용하여 더 많은 작업량을 처리하거나, 같은 작업량에 대해 적은 자원을 사용하게 한다.
      일반적으로 운영체제의 크기를 최소화하고 운영체제가 사용하는 코드를 최적화 한다.
    2. 안정성
      운영체제의 역할중 자원보호와 연관 있으며, 사용자와 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제를 처리할 수 있어야 한다.
      또한, 시스템에 문제가 발생했을 때 이전으로 복구하는 결함 포용(fault tolerant)기능을 수행해야 한다.
    3. 확장성
      다양한 시스템 자원을 추가하거나 제거하기 편해야 한다.
      하드웨어의 종류와 상관없이 plug & play 기능을 제공해야 하며, 사용자의 편리성, 하드웨어 제작자의 편리성도 고려해야 한다.
    4. 편리성
      사용자가 편리하게 작업할 수 있는 환경을 제공해야 한다.
  3. CPU 집중 작업과 입출력 집중 작업

    • CPU 집중 작업
      일괄 작업 시스템에서 프로그램이 실행되는 동안에 입출력이 불가능하기 때문에 대부분 작업이 CPU만 사용하는 계산 작업이었는데 이를 CPU 집중 작업 또는 CPU 편향 작업이라고 한다.
      수학 계산과 같은 프로그램이 대표적인 예이다.
    • 입출력 집중 작업
      대화형 시스템에서 생겨났으며, 대부분의 작업 시간을 주변장치의 입력과 출력에 사용
      동영상 플레이어, 데이터베이스와 같은 프로그램이 대표적인 예이다.
  4. 실시간 시스템
    특정 시스템에서 일정 시간 안에 작업이 처리되도록 보장하는 방식을 실시간 시스템이라고 한다. 경성 시스템 방식과 연성 시스템 방식으로 구분된다.

    • 경성 실시간 시스템 : 지정한 응답 시간을 정확히 지키는 시스템(e.g. 미사일 요격)
    • 연성 실시간 시스템 : 지정한 응답 시간을 최대한 지키되, 융통성이 어느 정도 허용된 시스템(e.g. 동영상 재생기)
  5. 클라우드 컴퓨팅
    언제 어디서나 응용 프로그램과 데이터를 자유롭게 사용할 수 있는 컴퓨팅 환경으로 그리드 컴퓨팅과 SaaS를 합쳐놓은 형태이다.
    하드웨어를 포함한 시스템이 구름에 가려진 것처럼 사용자에게 보이지 않는 컴퓨팅 환경이라는 의미로 클라우드라는 명칭이 부여되었다.

  6. API와 SDK의 비교

    • API(Application Programming Interface) : 응용 프로그램이 자신과 연관된 프로그램을 만들 수 있도록 제공하는 인터페이스이다.
    • SDK(System Developer's Kit) : 프로그램 개발자를 위해 API 및 API 사용 메뉴얼, 프로그램 개발에 필요한 코드 편집기, 에뮬레이터 같은 개발용 으용 프로그램까지 하나로 묶어서 배포하는 개발 툴을 말한다. 개발자를 위한 종합 선물 세트 느낌
  7. 단일형 구조 커널의 특징
    초창기의 운영체제 구조로 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성되어 있다.
    대표적인 예로 MS-DOS, VMS, 초기의 유닉스 등이 있음.

    • 장점
      - 모듈이 거의 분리되지 않아 모듈 간의 통신 비용이 줄어들어 효율적인 운영이 가능
    • 단점
      - 모든 모듈이 하나로 묶여 있어 버그나 오류를 찾기 힘듦
      - 여러 기능이 서로 연결되어 상호 의존성이 높아, 작은 결함이 시스템 전체로 확산 가능
      - 다양한 환경의 시스템에 적용하기 어려움
      - 현대의 운영체제는 매우 크고 복잡하여 구현에 힘듦
  8. 마이크로 구조 커널의 특징
    운영체제는 프로세스, 메모리, 프로세스 간 통신 관리 등 가장 기본적인 기능 만 제공
    각 모듈이 독립적을 작동하기 때문에 하나의 모듈이 실패해도 전체 운영체제가 멈추지 않음

    • 장점
      - 커널에서 필수 기능만 제공하기 때문에 가벼움
      - 한 부분에서 발생한 문제가 시스템 전체에 영향을 주지 않음
      - 커널 내부에서 발생 지연이 작고 예측이 가능하여 실시간 시스템에 활용하기 좋음
      - 서버의 개발이 용이하고 운영체제의 기능 변경이 쉬움
    • 단점
      - 프로세스 간 통신 발생 최소화 필요
      - 단일 커널보다 느림
  9. 계층형 구조 커널의 특징
    비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고, 계층 간의 통신을 통해 운영체제를 구현한 방식
    윈도우를 비롯해 오늘날의 운영체제에서 많이 사용 하는 방식

    • 장점
      - 단일형에 비해 오류 수정이 원할
      - 디버깅이 쉬움
    • 단점
      - 계층이 존재하기 때문에 하나의 계층이 문제가 생기면 위, 아래가 작동하지 않을 수 있음
      - 운영체제가 크고 복잡해지면 많은 계층들이 발생하게 되어 커널의 크기도 커지고 하드웨어 용량도 늘어남
  10. 가상머신이란
    운영체제와 응용 프로그램 사이에서 작동하는 프로그램으로, 가상머신을 설치하면 응용 프로그램이 모두 동일한 환경에서 작동하는 것 처럼 보임
    개발자는 하나의 코드만 만들면 여러 운영체제에서 똑같이 실행할 수 있음
    대표적인 예시로 JVM(Java Virtual Machine)이 있음

  11. 그리드 컴퓨팅
    필요 컴퓨팅 자원을 구매하여 사용하는 컴퓨팅 환경
    분산 시스템의 한 분야로, 서로 다른 기종의 컴퓨터를 묶어 대용량 컴퓨터 풀을 구성하고 이를 원격지와 연결하여 대용량 연산을 수행하는 컴퓨팅 환경

  12. 사물 인터넷
    사물에 센서와 통신 기능을 내장하여 인터넷에 연결하는 기술
    연결된 사물들이 인터넷으로 데이터를 주고받아 스스로 분석하고 학습한 정보를 사용자에게 제공하거나 새로운 서비스를 창출


profile
열심히 정리하는 습관 기르기..

0개의 댓글