책정리

쉽게배우는 운영 체제 : 운영체제의 개요

traveler_JH 2022. 7. 14. 09:03

OS란?

Operating System의 약자로 컴퓨터를 켜면 가장먼자 만나게 되는 소프트웨어

ex) 컴퓨터 : Windox, Mac OS, Linux, Unix

핸드폰 : Android, IOS

운영체제의 정의

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

임베디드 운영체제 (embedded operating system)

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

운영체제의 필요성

  • 운영체제가 있는기계 VS 운영체제가 없는 기계
    • 운영체제가 없는 기계 : 제작 당시 구현한 기능 밖에 동작하지 않는다.
    • 운영체제가 있는 기계 : 출시 이후 기능을 추가하거나 성능의 변경이 가능하므로 성능의 효율및 향상성을 꾀할수있다.

운영체제의 역할

  1. 자원관리
    1. 응용프로그램에 비해 컴퓨터를 구성하는 장치는 매우 제한적이기 때문에 자원을 관리하는 강력한 중재자가 필요
    2. 운영체제는 적당한 순서로 자원을 분배하고 회수 하여 자원을 관리한다.
  2. 자원 보호
    1. 악의 적인 응용 프로그램으로 부터 컴퓨터의 자원을 보호하는 역할
    2. 비정상적인 작업 및 사용자가 직접 자원에 접근하는 것을 막음으로 부터 컴퓨터의 자원을 보호
  3. 하드웨어 인터페이스 제공
    1. 인터페이스(interface): 사용자가 컴퓨터를 사용할수 있도록 해주고 그 결과를 알려주는것
    2. 다양한 종류의 하드웨어를 복잡한 과정없이 사용할수 있도록 지원한다.
  4. 사용자 인터페이스 제공
    1. 사용자가 OS를 편리하게 사용하도록 지원한다.

운영체제의 목표

운영체제의 역할 운영체제의 목표

자원 관리 효율성
자원 보호 안정성
하드웨어 인터페이스 제공 확장성
사용자 인터페이스 제공 편리성
  1. 효율성
    1. 자원을 효율적으로 관리하는것
    2. 같은 자원을 관리 하더라도 효율적으로 관리해야한다는 의미
  2. 안정성
    1. 운영체제가 불안정 하면 모든작업이 불안정 하다.
    2. 사용자와 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제를 처리 할수있어야 하며 시스템에 문제가 발생 했을때 이전으로 복구하는 결함포용 (fault tolerant)기능을 수행해야한다.
    3. 즉, 운영체제는 안정성이 담보 되어야한다.
  3. 확장성
    1. 운영체제는 다양한 시스템 자원을 추가하거나 제거하기 편리 해야 한다.
    2. 운영체제는 하드웨어의 종류에 상관없이 꽂으면 바로 실행할수있는 플러그 앤드 플레이 (plug & play)기능을 제공 해야한다.
  4. 편리성
    1. 사용자가 편리하게 작업을 할수 있는 환경을 제공 해야한다.
    2. 응용프로그램과 사용자에게 다양한 편리성을 제공 하면서도 자원의 낭비 요소를 막아야한다.

운영체제의 역사

  1. 초창기 컴퓨터(1940년대)최초의 컴퓨터 '애니악'진공관으로 1과 0을 표현 2진법을 사용
  2. 일괄 작업 시스템(1950년대)천공 카드리더 : 현대 OMR의 원조로 구멍을 뚫어서 문자나 숫자를 표현라인 프린터 : 문자만 출력하는 프린터로 한번에 한줄만 출력해서 라인프린터가 되었다.
  3. 대화형 시스템(1960년대 초반)키보드 - 타자기 쿼티(Querty)자판에 다양한 키를 추가해서 제작모니터 - 단색 모니터대화형 시스템(Interactive System)은 컴퓨터와 사용자 간의 대화를 통해서 작업이 이루어진다.일괄 작업 시스템과 다르게 작업 중간에 결과 값을 보여줄 수 있다. 하지만 작업시간을 예측하기 어렵다.

4-1 . 시분할 시스템(1960년대 후반)다중프로그래밍 Multi Programming(= 시분할 시스템) 기술의 등장시분할 시스템에서는 CPU 시간을 잘게 쪼개어 작업들에 나누어줌으로써 모든 작업이 동시에 처리되는 것처럼 보인다.

4-2. 다중 사용자 시스템다중 사용자는 여러명의 컴퓨터 사용자에 의한 동시 접근을 허용하는 것을 말한다.이로 인해 값비싼 컴퓨터를 한 사람이 독점하는 것이 아닌 여러 사람이 동시에 사용할 수 있게 되었다.

  1. 분산 시스템(1970년대 후반)분산시스템 = 개인용 컴퓨터와 인터넷이 보급되면서 값싼 컴퓨터를 하나로 묶어 대형 컴퓨터에 버금가는 시스템
  2. 클라이언트/서버 시스템(1990년대~현재)클라이언트/서버 시스템은 분산 시스템의 문제점을 해결한 기술이다.분산 시스템은 시스템에 참가하는 모든 컴퓨터가 동일한 지위여서 여러 문제가 생겼다.클라이언트/서버 시스템은 동일한 지위가 아닌 작업을 요청하는 클라이언트와 응답하는 서버의 이중 구조로 나뉜다. 하지만 서버 과부하가 되면 서버 공급이 중단될 수도 있는 단점이 있다.
  3. P2P 시스템(2000년대 초반~현재)P2P 시스템은 서버 과부하의 문제가 적다.왜냐하면 클라이언트와 서버가 아닌 사용자와 사용자가 직접 연결되어 있기 때문이다.
  4. 클라우드 컴퓨팅인터넷 접속을 통해 데이터 이동이 자유로운 컴퓨팅 환경
  5. 사물 인터넷(IoT)인터넷으로 연결된 사물들이 데이터를 주고 받아 스스로 분석하고 학습한 정보를 제공해준다.

3. 운영체제의 구조

커널(kenel)과 인터페이스

  • 프로세스 관리, 메모리 관리, 저장장치와 같은 운영체제의 핵심적인 기능을 모아 놓은것
  • 운영체제의 성능은 커널이 좌우 한다.
  • 운영체제에도 인터페이스 가 있는데 이는 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 한다.
  • 운영체제는 커널과 인터페이스를 분리하여 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작 할수 있다.
  •  

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

시스템 호출

  • 시스템호출(System call)은 커널이 자신을 보호하기 위해 만든 인터페이스이다.
  • 커널은 사용자나 응용 프로그램으로 부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다.
  • 이러한 자원을 이용하려면 시스템 호출 이라는 인터페이스를 이용하여야한다.
  • 커널이 제공하는 시스템 자원의 사용과 연관된 함수
  • 응용프로그램이 하드웨어 자원에 접근 하거나 운영체제가 제공하는 서비스를 이용할때는 시스템 호출을 사용해야한다.

시스템 호출 방식

  • 직접접근 : 사용자가 직접 컴퓨터 자원에 접근하여 작업하는 방식
    • 사용자가 모든것을 처리 해야한다.
    • 단점은 정보가 어디에있는지 등을 전부 알아야하며 사용자의 부주의로 인해 자원을 보호하기 어렵다.
  • 시스템호출을 통한 접근 : 누군가에게 요청하여 작업의 결과만 받는방식

드라이버

  • 커널과 하드웨어의 인터페이스
  • 커널이 제공하는 드라이버도 있고 하드웨어 제작자가 제공하는 드라이버도 있다.
  • 하드웨어는 커널과 직접 연결되기도 하고 하드웨어 제작자가 제공하는 드라이버를 통해 연결되기도 한다.

커널의 구성

커널 : 운영체제의 핵심 기능을 모아놓은 것

핵심 기능 설명

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

단일형 구조 커널

단일형 구조 : monolithic architecture 커널은 초창기의 운영체제의 구조

  • 커널의 핵심 기능을 구현 하는 모듈 들이 구분없이 하나로 구성 되어 있다.
  • 대표적인 운영체제 : MS-DOS, VMS, 초창기 UNIX

장점

  • 모듈간 통신 비용이 줄어들어 효율적인 운영이 가능

단점

  • 모든 모듈이 하나로 묶여 있기 때문에 버그나 오류를 처리하기 어렵다
  • 운영체제의 여러 기능이 서로 연결 되어있어 상호 의존성이 높기 때문에 기능상의 작은 결함이 시스템 전체로 확산 된다.
  • 다양한 환경의 시스템에 적용하기 어렵다.
  • 현대의 운영체제는 매우 크고 복잡하기 때문에 완전 단일형 구조의 운영체제를 구현하기 어렵다.

계층형 커널

계층형 구조 : Layered architecture 커널은 단일형 구조의 커널의 발전된형태로 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층간 통신을 통해 운영체제를 구현하는 방식

장점

  • 비슷한 기능을 모아 모듈화 했기 때문에 단일형 구조보다 버그나 오류를 쉽게 처리할수있다.
  • 해당 계층만 따로 수정하면 되기때문에 디버깅에 용이하다.

마이크로 구조 커널

마이크로 구조 : micro architecture

계층형 구조의 커널의 크기가 계속 커지고 계층이 늘어나다 보니 커널의 소스가 바애해짐에 따라 관리의 어려움을 느껴 개발된 구조 이다.

계층형 구조의 접근 방식과 반대로 개발된 커널이다.

  • 마이크로 구조의 커널의 운영체제는 프로세스의 관리 메모리 관리 프로세스 간 통신 관리등 가장 기본적인 기능만을 제공
  • 마이크로 구조에서 각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패 하더라도 전체 운영체제가 멈추지는 않는다.

가상머신

위 그림처럼 가상머신은 운영체제와 응용 프로그램 사이에서 작동하는프로그램

개발자가 하나의 코드만 만들면 여러 운영체제에서 똑같이 실행할수있다.

  • 멀티 OS를 가능하게 해준다.