운영체제 개요

메론보이·2024년 4월 25일
0

운영체제

목록 보기
1/11

운영체제 소개

운영체제 정의

컴퓨터는 크게 하드웨어와 소프트웨어로 구성된다.

소프트웨어: 하드웨어를 제어하여 작업을 수행시키는 명령의 모음, 즉 프로그램

소프트웨어는 크게 응용 프로그램과 시스템 소프트웨어로 나뉨

응용 프로그램: 한글,MS 워드 처럼 특정 작업을 위해 사용하는 프로그램

시스템 소프트웨어: 컴퓨터 하드웨어와 응용 프로그램을 관리하기 위한 소프트웨어(운영체제와 유틸리티가 예시)

하드웨어: 소프트웨어로부터 정해진 절차에 따라 데이터를 처리함

운영체제: 컴퓨터 하드웨어와 소프트웨어 자원을 관리하고, 사용자와 컴퓨터 사이의 인터페이스 역할을 하는 시스템 소프트웨어, 한마디로 컴퓨터 자원을 효율적으로 관리하는 소프트웨어

컴퓨터 구조와 운영체제

운영체제는 크게 커널과 인터페이스로 나뉨

커널: 운영체제의 핵심 기능을 모아놓은 것, 사용자난 프로그램은 커널을 통해서만 컴퓨터 자원에 접근할 수 있음(자동차로 따지면 엔진)

인터페이스: 인터페이스를 이용해 커널에 명령을 내리면 인퍼페이스가 그 결과를 전달(자동차로 따지면 핸들,브레이크..)

운영체제의 역할

자원관리

음악 듣기, 인터넷 서핑등의 활동은 커널 자원을 사용하는데, 이러한 자원을 응용 프로그램에 나누어 주어 사용자가 원활하게 작업할 수 있도록 돕는다.

자원 보호

비정상적인 작업(어떤 응용프로그램이 남의 영역 침범 등..)으로부터 컴퓨터 자원을 지키는 역할

하드웨어 인터페이스 제공

다양한 컴퓨터 부품을 사용하기 위해 하드웨어 인터페이스 제공

하드웨어 인터페이스의 경우 사용하려는 도구에 맞춘 드라이버를 설치해야 사용함

사용자 인터페이스 제공

사용자가 운영체제를 편리하게 사용하도록 지원하기 위해 사용

GUI가 대표적인 예시

운영체제의 목표

운영체제의 발전

초창기 컴퓨터

일괄 작업 시스템

과거의 컴퓨터의 경우 프로그램 및 데이터 입력을 하면 메모리(운영체제,사용자영역으로 구분)에서 한꺼번에 결과를 처리하는 방식으로 데이터를 처리함

대화형 시스템

  • 사용자가 키보드와 모니터로 컴퓨터와 대화하듯이 데이터를 입력
  • 입력한 데이터를 보여주거나, 중간 결과 값을 보여주는 기능이 생김
  • 문서 편집기, 게임과 같은 다양한 종류의 응용 프로그램을 만들수 있게됨

시분할 시스템

  • 멀티프로그래밍 기술이 개발됨
  • CPU로 여러 작업을 동시에 실행하는 기술로, 한 번에 한 가지 작업만 가능한 일괄 - 작업 시스템에 비해 효율성이 뛰어남
  • 멀티프로그래밍 시스템에서는 CPU 사용 시간을 아주 잘게 쪼개어 여러 작업에 나누어 보여줌
  • 한마디로 여러 작업을 조금씩 처리하여 작업이 동시에 이루어지는 것처럼 보이게 하는 기술이 시분할 시스템

분산 시스템

  • 작은 컴퓨터를 하나로 묶어 대형 컴퓨터에 버금가는 시스템을 만드는것
  • 네트워크상에 분산된 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성한 시스템

클라이언트/서버 시스템

  • 분산 시스템의 경우 모든 컴퓨터가 동일하기 때문에, 컴퓨터가 고장 나거나 추가되면 작업을 분배하고 결과를 모으기 어려움
  • 클라이언트/서버 시스템의 경우 분산 시스템과 달리 작업을 요청하는 클라이언트와 거기에 응답하여 요청받은 작업을 처리하는 서버의 이중구조로 나뉨
  • 클라이언트 시스템의 문제점은 많은 사람들이 사용되면 문제가되는 서버과부화임

P2P 시스템

  • 운영체제 내에서 동등한 위치의 여러 컴퓨터가 서로 정보를 직접 공유하고 통신할 수 있는 네트워크 모델을 말함
  • 이는 중앙 서버를 거치지 않고 파일이나 데이터를 직접 교환할 수 있게 해줌

클라우드 컴퓨팅

  • 인터넷을 통해 컴퓨팅 리소스(서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어 등)를 온디맨드로 제공하고, 사용한 만큼만 비용을 지불하는 IT 인프라 서비스 모델

사물 인터넷

  • 사물이 인터넷에 연결된 시스템

운영체제의 구성

커널과 인터페이스

커널: 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심 기능을 구현한 프로그램(자동차에 비유하면 엔진)

인터페이스: 사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려줌

시스템 호출과 디바이스 드라이버

시스템호출

  • 커널이 자신을 보호하기 위해 만든 인터페이스(사용자나 응용 프로그램이 자원에 직접 접근하는 것을 차단)
  • 자원을 이용하려면 시스템호출이라는 인터페이스를 이용해야 접근이 가능함
  • 시스템 호출은 커널이 제공하는 시스템 관련 서비스를 모아놓은 것이며 함수 형태로 제공(C언어의 경우 printf())

디바이스 드라이버

  • 커널과 하드웨어의 인터페이스
  • 요즘 시대에서는 주변장치를 사용하려면 컴퓨터에 꽂기만 하면 됨
  • 이때 장치 제작자가 디바이스 드라이버 소프트웨어를 설치해야만 주변장치를 온전하게 사용할 수 있음

커널의 역할과 종류

  • 커널의 주 역할은 여러 응용 프로그램을 실행하는 것임
  • 이때 프로그램이 실행되면 프로세스가 됨
  • 따라서 다양한 종류의 프로세스에 CPU(정리필요)를 배분하고 작업할 수 있는 환경을 만들어 주는 것이 커널의 주요 역할(이를 프로세스 관리라함)
  • 커널은 여러 개의 프로세스를 메모리에 배치하는 일을 함

정리해보면

핵심기능설명
프로세스 관리프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다
메모리 관리프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다
파일 시스템 관리데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다
입출력 관리필요한 입력과 출력 서비스를 제공한다
프로세스 간 통신 관리공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다

단일형 구조 커널

  • 커널의 모든 기능이 하나의 메모리 공간 내에서 동작하는 구조
  • 운영 체제의 핵심 기능들이 커널 공간에서 직접 실행되며, 디바이스 드라이버, 파일 시스템 관리, 네트워크 통신, 프로세스 관리 등을 포함하여, 시스템의 모든 기본적인 서비스들이 커널 내에 통합되어 있음

왜쓰는가?

  • 단일형 구조 커널은 시스템 호출을 처리할 때 오버헤드가 적기 때문에 성능 면에서 뛰어남
  • 모든 기능이 같은 메모리 공간에서 실행되기 때문에, 커널 모드와 사용자 모드 사이의 전환 비용이 적고, 커널 내의 서비스 간의 통신이 빠름

언제 쓰는가?

  • 성능이 중요한 시스템에서 주로 사용
  • 안정성과 호환성이 중요한 서버나 임베디드 시스템에서도 많이 사용

사용 예시

  • 리눅스(Linux): 리눅스 커널은 단일형 구조를 가지고 있으며, 성능과 확장성의 균형을 위해 모듈 방식을 도입해 필요한 기능만을 동적으로 로드할 수 있음
  • UNIX: 전통적인 UNIX 시스템들은 대부분 단일형 구조 커널을 사용
  • Windows NT 계열: 초기의 Windows NT도 단일형 구조 커널을 기반으로 하며, 이후 버전들에서는 하이브리드 커널 방식을 채택

계층형 구조 커널

  • 운영체제의 커널을 여러 계층으로 나누어 구성하는 방식
  • 이 구조에서는 운영체제의 기능들이 명확하게 분리되어 있으며, 상위 계층은 하위 계층의 서비스만을 사용할 수 있음 이러한 계층화는 시스템의 설계와 구현을 단순화시키며, 수정 및 확장을 용이

왜 쓰는지

  • 계층형 구조 커널은 시스템의 복잡성을 줄이고, 개발 및 유지보수를 용이하게 하기 위해 사용
  • 각 계층은 독립적으로 개발될 수 있으며, 시스템의 안정성과 보안성을 강화시킬 수 있습니다. 또한, 오류 발생 시 해당 계층만을 검사하면 되기 때문에 디버깅이 쉬움

언제 쓰는지

  • 주로 대규모 시스템이나 복잡도가 높은 시스템에서 사용
  • 또한, 시스템의 유연성과 확장성을 중요시하는 경우에 계층형 구조 커널을 선택할 수 있음

어떻게 쓰는지

  • 계층형 구조 커널을 구현할 때는 시스템의 기능을 명확히 분리하고, 각 계층이 제공하는 서비스의 인터페이스를 정의해야 함
  • 가장 낮은 계층은 하드웨어와 직접적으로 상호작용하며, 각 상위 계층은 하위 계층의 기능을 추상화하여 제공

사용 예시

  • 초기의 운영체제인 THE 시스템(THE multiprogramming system)이 계층형 구조를 사용한 예

마이크로 구조 커널

  • 운영 체제의 핵심 기능을 최소화하고, 대부분의 서비스를 사용자 공간(user space)에서 실행되는 서버 프로세스를 통해 제공하는 방식

왜 쓰는지

  • 마이크로 커널은 시스템의 안정성과 보안을 향상시킴
  • 대부분의 서비스를 사용자 공간에서 실행하기 때문에, 하나의 서비스에 문제가 생겨도 전체 시스템에 미치는 영향을 최소화할 수 있음
  • 커널의 수정이 필요 없이 사용자 공간의 서비스를 업데이트하거나 변경할 수 있어 유연성이 뛰어남

언제 쓰는지

  • 특히 시스템의 신뢰성과 보안이 중요한 환경에서 사용됨
  • 임베디드 시스템, 항공 우주 시스템, 일부 모바일 운영 체제 등이 마이크로 커널 구조를 채택하고 있음

어떻게 쓰는지

  • 마이크로 커널 기반 시스템을 구현할 때는, 운영 체제의 핵심 기능을 최소화하고, 나머지 기능은 사용자 공간에서 동작하는 서비스로 구현함
  • 이러한 서비스들은 메시지 전달 시스템을 통해 서로 통신하게 됨

사용 예시:

Minix: 교육 목적으로 널리 사용되는 마이크로 커널 운영 체제입니다. 안정성과 보안이 중요한 시스템을 위한 연구 및 개발에 이용됩니다.
QNX: 임베디드 시스템을 위한 실시간 운영 체제로, 자동차, 의료 장비, 산업 제어 시스템 등 다양한 분야에서 활용됩니다.
L4: 고성능 마이크로 커널로, 보안이 중요한 모바일 기기와 임베디드 시스템에서 많이 사용됩니다.
마이크로 커널 구조는 모듈성과 시스템 안정성을 중요시하는 다양한 분야에서 유용하게 활용

가상머신

  • 물리적 하드웨어 위에서 별도의 소프트웨어 환경을 구축하여, 마치 별도의 컴퓨터처럼 작동하게 하는 기술
  • 가상머신은 하이퍼바이저라는 소프트웨어에 의해 관리되며, 이 하이퍼바이저는 호스트 시스템의 자원(처리능력, 메모리 등)을 가상 머신들과 공유

왜 쓰는가?

자원 효율성

  • 단일 물리 서버에서 여러 운영 체제를 동시에 실행하여 하드웨어 자원을 최대한 활용할 수 있음

격리성

  • 각 가상 머신은 독립적인 환경을 제공하여, 하나의 가상 머신에서 발생한 문제가 다른 가상 머신이나 호스트 시스템에 영향을 미치지 않음

이식성

  • 가상 머신은 파일로 저장되므로, 다른 호스트로 쉽게 이동할 수 있음

테스트 및 개발 환경

  • 다양한 환경을 손쉽게 구축하여, 개발 및 테스트에 유용함

언제 쓰는가?
다양한 운영 체제가 필요한 경우

  • 하나의 물리적 서버에서 여러 운영 체제를 실행해야 할 때 사용
    개발 및 테스트 환경 구축
  • 소프트웨어 개발자들이 다양한 환경에서의 테스트를 용이하게 하기 위해 사용
    재해 복구 및 백업
  • 가상 머신 환경을 쉽게 복사하고 복원할 수 있어, 재해 발생 시 빠른 복구가 가능

참조

단일형구조커널
계층형구조커널
마이크로구조커널
가상머신

0개의 댓글