운영체제란 무엇인가

OneTwoThree·2023년 10월 7일
0

운영체제

목록 보기
1/2

출처(강의 링크)


운영체제란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어이다
하드웨어와 소프트웨어, 사용자를 연결해주는 계층이다

좁은 의미에서의 운영체제는 커널이다.
운영체제의 핵심 부분으로 메모리에 상주하는 부분이다.
컴퓨터의 전원을 킨 이후로 부팅이 일어난 후에 항상 메모리에 상주하는 부분이다.

넓은 의미로 운영 체제를 얘기할 떄는 여러가지 주변 시스템을 다루는 유틸리티를 포함해서 운영체제라고 한다.(시스템 유틸리티 포함)
예를 들어 윈도우는 커널만 있는 것이 아니라 여러가지 부가적인 프로그램이 같이 설치된다.

✅ 운영체제의 목적

  1. 컴퓨터 시스템의 자원을 효율적으로 관리하는 것이다.
    자원은 CPU, 메모리, 각종 입출력 장치를 의미한다.

  2. 또 다른 목적은 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하는 것이다.

✅ 자원의 효율적 관리

  • 사용자간의 형평성 있는 자원 분배
  • 주어진 자원으로 최대한의 성능을 내도록
  • 사용자, 운영체제 자신을 보호

✅ 사용자에게 편리한 환경 제공

  • 현대 컴퓨터는 여러 프로그램이 하나의 컴퓨터에서 동시에 실행된다
  • 운영체제는 동시 사용자/프로그램이 각각 독자적 컴퓨터에서 수행되는 것 같은 인상을 제공
  • 실행중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당한다
  • 실행중인 프로그램들에 메모리 공간을 적절히 분배
  • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

✅ 운영체제의 분류

동시 작업 여부에 따라 분류할 수 있다.

  • 단일 작업
    한번에 하나의 작업만 처리
    예) MS-DOS , 특수목적을 위한 운영체제
  • 다중 작업
    현대적인 운영체제, 동시의 두개 이상의 작업 처리
    예) UNIX, MS Windows, 한 명령이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음

지원해주는 사용자의 수에 따라 분류할 수 있다
여러 사용자가 동시에 접속해서 사용할 수 있는가?

  • 단일 사용자
    단일 작업을 지원하는 운영체제는 당연히 단일 사용자
    MS-DOS, MS Windows
  • 다중 사용자
    보안 기능, 형평성 있게 자원 관리하는 기능 추가 필요
    UNIX, NT server

처리 방식에 따라 운영체제를 분류할 수 있다

  • 일괄 처리 batch processing

    • 현대 운영체제에서 찾아보기 어려운 방식이다
    • 작업이 주어지면 일정량을 모아서 한번에 처리한다
    • 작업이 완전 종료될 때까지 기다려야 한다
  • 시분할 방식 time sharing

    • 현대 운영체제의 방식이다
    • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할해서 사용한다
    • 일괄 처리 시스템에 비해 짧은 응답 시간을 갖는다
    • UNIX
    • 각각의 사용자 입장에서는 interactive 한 응답을 받을 수 있다
    • interactive 하다는 것은, 내가 키보드를 누르면 바로 응답이 되는 것
    • 시분할을 매우 짧은 시간으로 나뉘면 사람은 interactive 하다고 느끼게 됨
    • 짧은 응답시간을 갖는다
    • 사람이 느끼기에 빠르게 해주면서 주어진 자원을 최대한 활용하는게 목적이다. 시간에 deadline이 있는것은 아니다
  • 실시간 방식 realtime OS

    • 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간시스템을 위한 OS - deadline이 있다.
    • 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
    • 특수 목적을 갖고 반드시 그 시간 안에 끝나도록 해야 하는 경성 실시간 시스템(Hard realtime system)
    • deadline은 있지만 어겨지지 않는다고 큰 문제가 되지는 않는 연성 실시간 시스템(soft realtime system)

점점 deadline을 지켜야 하는 실시간성이 필요한 애플리케이션이 늘어나고 있다. 실시간성을 지키는 범용 운영 체제를 어떻게 만들어야 하는가?
가.. 요즘 이슈라고 함

✅ 용어 정리

컴퓨터에서 여러 작업을 동시에 수행하는 것을 의미하는 용어들

  • Multitasking
    • 엄밀하게 CPU에서 한 순간에는 하나의 작업만 진행된다
  • Multiprogramming
    • multitasking과 같다
    • 여러 프로그램이 메모리에 올라가 있음을 강조
  • Time Sharing
    • CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조
  • Multiprocess

  • Multiprocessor
    • 하나의 컴퓨터에 CPU가 여러개 붙어있음을 의미

운영체제의 예

✅ UNIX

  • 대형 컴퓨터를 위해 만들어진 운영체제
  • 멀티태스킹
  • 여러 사용자 동시에 지원
  • 대부분 코드를 C언어로 작성 : C언어가 UNIX 운영체제를 만들기 위해 만들어진 언어이다.
  • 높은 이식성
    • portable하다. 기계어 집합이 전혀 다른 컴퓨터에 이식하기가 쉽다.
    • 이식하기 어려운 운영체제는 해당 컴퓨터 기계어에만 국한되게 만든 것이다.
    • UNIX는 대부분 코드가 C언어로 작성되었고 기계어와 독립적인 언어이다.
    • 하나의 컴퓨터에 돌아가는 UNIX를 다른 컴퓨터에서 컴파일 하면 된다.
  • 최소한의 커널(메모리에 상주하는 핵심 부분) 구조
    • 기능을 커널에 많이 넣으면 메모리의 많은 부분을 운영체제가 차지
    • 웬만한 기능은 밖으로 빼고 핵심적인 기능만 커널에 넣는다
  • 소스코드 공개
    • 지금은 공개되지 않음
  • 확장 용이
  • 프로그램 개발에 용이
  • 다양한 버전
    • Linux : 공개소프트웨어 정신에 입각해서 소스코드가 공개되어 있음
      • 리눅스는 특이하게 서버에 사용하기도 좋고 개인이 사용하기도 좋다
      • 여러가지 환경에서 리눅스 커널을 사용할 수 있다
      • 안드로이드도 리눅스 커널을 사용한다
    • System V, FreeBSD, SunOS, Solaris
  • 초기의 UNIX는 여러 사용자가 접속하는 서버를 위한 운영체제

✅ DOS

  • 단일 작업용, 단일 사용자용 운영체제
  • 메모리 크기 640KB까지만 지원

✅ WINDOWS

  • MS사의 다중 작업용 GUI 기반 운영체제

운영체제의 구조

✅ CPU 스케쥴링

  • 선착순이 좋은게 아니다. 변비걸린사람
  • 메모리와 CPU의 시간 차이를 완충하면서 주어진 자원의 특성을 최대한 활용할 방법이 필요하다
  • CPU를 짧게 쓰려는 프로그램에게 먼저 CPU를 할당하는게 이론적으로는 좋음
  • 발전해서 짧은 시간간격으로 할당했다가 해제했다가 하는 방식으로 됨

✅ 메모리 관리

  • 메모리 공간은 한정되어 있는데 어떤 프로그램에게 메모리를 얼만큼 할당해야 하는가
  • 프로그램이 너무 많아지면 각 프로그램이 갖는 메모리 공간이 너무 작아져서 프로그램이 원할하게 실행되지가 않는다
  • 최소한의 프로그램이 실행하는데 필요한 메모리만큼은 올라와 있어야 함
  • 메모리에 너무 많은 프로그램을 동시에 올리는 것 보다는 CPU에서 원활하게 실행하게 하기 위한 최소한의 메모리 용량은 받을 수 있도록 해야 한다.
    • 너무 프로그램이 많으면 일부분만 메모리에 올리고 나머지는 DISK로 쫓아낸다
  • 메모리가 꽉 차면 무슨 프로그램을 쫓아내야 하는가?
    • CPU에서 머지않아 쓸 가능성이 낮은 프로그램을 쫓아내야 한다
    • 미래에 사용될 프로그램을 예측해야 한다
    • 프로그램이 메모리에 올라온 이후로 최근에 사용되었거나 많이 사용되었는지를 통해 미래를 예측한다. 즉 과거를 통해 미래를 예측함

✅ 파일 관리 : 디스크에 파일을 어떻게 관리

  • 조각조각을 나누어 관리할지, 연속적으로 관리할지 ?
  • 디스크는 헤드가 움직이며 데이터를 읽어야 한다
    • 디스크의 특성에 맞게 파일을 관리해야 한다
  • 디스크도 CPU 스케줄링 처럼 스케줄링이 필요하다
    • 디스크 헤드의 이동을 줄이는 방식으로 스케쥴링 하면 전체적인 성능이 좋아진다. 엘리베이터 스케줄링과 유사하다. 엘레베이터에서 버튼을 먼저 누른다고 무조건 먼저 누른사람한테 가지는 않는다.

CPU는 너무 빠르기 때문에 어떻게 관리할지? 디스크는 헤드가 움직어야 하기 때문에 어떻게 헤드 움직임을 최소화 하면서 처리할지? 다른 개념의 스케쥴링이 필요하다

✅ 입출력 관리 : 각기 다른 입출력장치와 컴퓨터 간 정보를 어떻게 주고받지?

  • IO DEVICE는 일반적으로 컴퓨터 CPU에 비해 느리다
  • Interrupt를 통해 관리한다
    • CPU는 빠르기 때문에 항상 할일을 하고 있다.
    • IO 장치가 CPU에 보고할 일이 있으면 CPU에 Interrupt를 건다

✅ 프로세스관리

  • 프로세스 관리와 삭제

✅ 그 외 ...

본인이 운영체제라고 생각하고 하드웨어를 어떻게 관리해야 할지 생각해라. 인간의 신체가 뇌의 통제를 받듯이.. 컴퓨터 전체를 통제하는 것이 운영체제이다. CPU는 빠르지만 직접 일을 하지는 못하고 운영체제의 통제를 받아서 동작한다.

0개의 댓글