본문 바로가기

CS/OS

[운영체제] #1 - 운영체제란 무엇인가?

다음은 개인 공부를 위해 KOCW 강의를 듣고 정리한 내용입니다.

반효경 교수님 KOCW 강의


✨ 운영체제란 무엇인가?

  • 운영체제(Operating System, OS)란?
  • 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
  • 협의의 운영체제(커널)
    • 운영체제의 핵심 부분으로 메모리에 상주하는 부분
    • 전공자 입장에서 운영체제라 하면 보통 커널이다.
  • 광의의 운영체제
    • 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개녀

1️⃣ 운영체제의 목적

운영체제는 하드웨어 바로 윗단에 설치된다. 사용자와 소프트웨어 바로 아랫단이기도 해서, 운영체제는 하드웨어를 관리하는 것이 가장 중요한 역할이다.

컴퓨터 시스템의 자원을 효율적으로 관리

  • 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
    • 사용자간의 형평성 있는 자원 분배
      • 짧은 시간씩 CPU를 번갈아 프로그램에 할당
    • 주어진 자원으로 최대한의 성능 → 효율성
      • 하드웨어는 정해져 있기 때문에 효율적으로 사용해야 한다.
  • 사용자 및 운영체제 자신의 보호
  • 프로세스, 파일, 메시지 관리
    • 이런 것들도 자원이라고 하지만, 하드웨어 자원과 구분되는 소프트웨어 자원이다.
    • 운영체제는 이러한 소프트웨어 자원도 구분해야 한다.
    • 실행중 프로그램들에 메모리 공간을 적절히 분배한다.

컴퓨터 시스템을 편리하게 사용할 수 있는 환경

  • 운영체제는 동시 사용자/ 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
  • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

2️⃣ 운영 체제의 분류

동시 작업의 여부

  • 단일 작업(Single Tasking)
    • 한 번에 하나의 작업만 처리
    • 예) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음.
  • 다중 작업(Multi Tasking)
    • 동시에 두 개 이상의 작업 처리
    • 예) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음.

사용자의 수

  • 단일 사용자(single user)
    • MS DOS, MS WIndows
  • 다중 사용자(multi User)
    • 동시 접근이 가능하다
    • 보안 문제를 생각해야 한다.
    • UNIX, NT server

처리 방식

  • 일괄 처리(batch processing)
    • 작업 요청의 일정량을 모아서 한꺼번에 처리
    • 작업이 완전 종료될 때까지 기다려야 함
    • 예) 초기 Punch Card 처리 시스템
      • 역사 속의 시스템이다. interactive하지 않다.
      • 작업을 모아서 넣어주면, 출력 또한 작업이 끝나고 나오게 된다.
  • 시분할(time sharing)
    • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
      • 예) UNIX
    • interactive한 방식
      • 각 사용자가 컴퓨터로부터 서비스를 제공 받는 시간을 숫자로 표시
  • 실시간(Realtime OS)
    • 정의
      • 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
      • 예시) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
    • 실시간 시스템의 개념 확장
      • Hard realtime System(경성 실시간 시스템)
      • soft realtime system(연성 실시간 시스템)

3️⃣ 몇 가지 용어

Multitasking : CPU에서 매 순간 하나의 작업만 실행되고 있는데, 짧은 시간을 빠르게 다른 프로그램에 할당하기 때문에 동시에 진행되는 것처럼 보인다. 하나의 CPU로 여러 프로그램을 돌리는 것이 멀티태스킹이다.

Multiprogramming : 메모리에 여러 프로그램이 동시에 올라가는 방식을 멀티 프로그래밍이라고 한다. 멀티태스킹을 위해서는 당연히 메모리에 다같이 올라가야 겠지만, 메모리 측면을 강조하면 멀티프로그래밍이라고 말한다.

Time sharing : CPU 쪽을 강조한 용어이다. CPU의 시간을 분할하여 나눠 쓰는 것이다.

Multiprocess : 여러 프로세스를 동시에 사용하는 것을 말함.

위의 4가지 용어는 비슷하지만, 아래에 있는 Multiprocessor는 살짝 다르다.

MultiProcessor : 하나의 컴퓨터에 CPU가 여러 개 붙어 있음을 의미한다.

✨ 운영 체제의 예

1️⃣ 유닉스

대형 컴퓨터를 위해 만들어진 운영체제

코드의 대부분을 C언어로 작성.

  • C언어는 애초에 유닉스를 만들기 위해 만들어짐

높은 이식성

  • 특정 컴퓨터의 기계어에만 적합하게 구현되면 이식성이 낮다.
  • C언어로 작성하면 다른 컴퓨터에서도 컴파일하여 기계어로 바꿀 수 있다.

최소한의 커널 구조

  • 웬만한 기능은 밖으로 빼고, 필요한 내용만 넣었다.

복잡한 시스템에 맞게 확장 용이

소스 코드 공개

프로그램 개발에 용이

다양한 버전

  • System V, FreeBSD, SunOS, Solaris
  • Linux : 소스코드가 공개되어 있다. 서버도 가능하지만 개인용 컴퓨터에도 가능하다.

2️⃣ 윈도우 계열

개인용 컴퓨터를 위해 만들어진 운영체제들

DOS(Disk Operating System)

MS 사에서 1981년 IBM-PC를 위해 개발

단일 사용자용 운영체제, 메모리 관리 능력의 한계( 주 기억 장치 : 640KB)

MS Windows

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

plug and play, 네트워크 환경 강화

DOS용 응용 프로그램과 호환성 제공

불안정성

    지금은 많이 개선되었다.

풍부한 자원 소프트웨어

Handheld device를 위한 OS

PalmOS, Pocket PC(WinCE), TinyOS

✨ 운영 체제의 구조

CPU : 누구한테 CPU를 줄까? = CPU 스케줄링

CPU 자체는 빠르지만, 작업들이 놓지 않으려고 하면 효율을 내지 못하기 때문에, 줬다 뺏었다 하는 일을 한다.

CPU를 짧게 쓰려고 하는 프로그램들에 우선순위를 주면, 평균 처리 속도가 빨라진다는 아이디어에서 시작했지만

결국에는 빠르게 줬다 뻇는 방식으로 발전했다.

 

메모리 : 한정된 메모리를 어떻게 쪼개어 쓰지? = 메모리 관리

메모리에 너무 많은 프로그램을 동시에 올려놓기 보다는, 필요한 메모리 용량 만큼은 받을 수 있도록 지원해주자. Working set model이라는 것을 사용하여, 너무 많은 프로그램이 실행되려고 하면 현재 올라와 있는 것이라도 잘 될 수 있도록 한다. 다 끝나면 나머지 프로그램을 불러온다.

메모리는 크기가 한정되어 있기 때문에, 새로운 것을 올리기 위해서는 다른 것을 쫓아내야 한다. 시피유가 다시 사용할 가능성이 낮은 것들을 쫓아낸다. 미래에 사용할 것이 무엇인지에 대해서 예측하는 것이 필요하다. 과거를 통해서 미래를 예측한다.

 

Disk : 디스크에 파일을 어떻게 보관하지? = 파일 관리

디스크도 스케줄링이 필요하다. 디스크에 들어온 요청들을, 헤드에 가까운 위치에 들어온 요청이 있다면 나중에 들어왔더라도 먼저 처리하는, 헤드의 이동을 줄이는 식으로 동작하면 효율적일 수 있다.

엘리베이터 스케줄링과 비슷하다. 100층에서 출발한 엘리베이터가 1층,2층,3층의 입력을 받았는데 98층에서 입력이 왔다면 열렸다가 내려간다.

 

I/O device : 각기 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하지? = 입출력 관리

입출력 관리는 기본적으로 인터럽트란 것을 통해 관리된다. I/O 장치가 CPU에게 요청할 일이 있으면 인터럽트를 이용해서 CPU의 작동을 최대한 적게 방해하도록 한다.