운영체제 개요

JoyJuhee·2022년 6월 14일
0

운영체제

목록 보기
2/10
post-thumbnail

1. 운영체제란(Operation System, OS)란?

  • 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

  • 협의(좁은 의미)의 운영체제(커널)
    : 운영체제의 핵심 부분으로 항상 메모리에 상주하는 부분

  • 넓은 의미의 운영체제
    : 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
    예) Windows - 여러가지 부가 프로그램도 함께 설치되는데 이는 항상 메모리에 상주하는 커널이 아니다.

2. 운영체제의 목적

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

  • 프로세서, 기억장치, 입출력 장치 등을 효율적으로 관리
    -> 어떻게? 사용자간의 형평성 있는 자원 분배 / 주어진 자원으로 최대한의 성능을 내도록(효율성)
  • 프로세스, 파일, 메시지 등을 관리(소프트웨어 자원)
  • 사용자 및 운영체제 자신을 보호

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

  • 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공

3. 운영체제의 분류

1) 동시작업 여부

  • 단일 작업(Single tasking)
    : 한 번에 하나의 작업만 처리
    ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없다.

  • 다중 작업(Multi tasking)
    : 동시에 두 개 이상의 작업 처리
    ex) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있다.

2) 사용자의 수

  • 단일 사용자(single user)
    ex) MS-DOS, MS Windows

  • 다중 사용자(multi user)
    ex) UNIX, NT server -> 사용자 간의 형평성 관리, 보안 기능 등이 추가 되어야 한다.

3) 처리 방식

  • 일괄 처리(batch processing)
    : 작업 요청의 일정량을 모아서 한꺼번에 처리
    : 작업이 완전 종료될 때까지 기다려야 함

  • 시분할(time sharing)
    : 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    : 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
    : interactive한 방식

    -> 키보드를 두드렸는데, 바로 결과를 나타나는데 사용자가 늘어나면 1초 후에 결과가 나타날 수 있다. 사람이 느끼기에 빠르게 해주면서 동시에 주어진 자원을 최대한 활용하는거기 때문에 정확한 시간을 정해주는 것이 아니다.

  • 실시간(Realtime OS)
    : 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간 시스템을 위한 OS -> 데드라인이 정해져 있다.
    ex) 특수한 목적을 가진 시스템 - 원자로/공장 제어, 미사일 제어, 반도체 장비 등
    : 실시간 시스템의 개념 확장
    -> Hard realtime system(경성 실시간 시스템)
    -> Soft realtime system(연성 실시간 시스템)

4. 용어

1) Multitasking : 여러 프로그램이 동시에 실행 가능한 것
2) Multiprogramming : Multitasking과 유사. 여러 프로그램이 메모리에 올라가 있음을 강조 -> 메모리 측면을 강조
3) Time sharing : 시간을 쪼개서 쓰는 방법(CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조) -> CPU를 강조함.
4) Multiprocess

  • Multiprocessor : 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음을 의미 -> 위 네개와 하드웨어적으로 다른 시스템

5. 운영체제의 종류

1) 유닉스 (UNIX)

  • 처음에는 대형 컴퓨터를 위해 만들어짐.
  • 코드의 대부분을 C언어로 작성 (유닉스를 만들기 위해 C언어가 만들어짐)
  • 높은 이식성 : 하나의 컴퓨터에서 돌아가는 유닉스를 전혀 다른 컴퓨터에 이식하기 쉬움 (이식하기 어려운 운영체제? 기계어 집합 자체가 다른 운영체제)
  • 최소한의 커널 구조 : 핵심 기능만 커널에 집어넣었음
  • 복잡한 시스템에 맞게 확장 용이
  • 소스 코드 공개
  • 프로그램 개발에 용이
  • 다양한 버전 : System V, FreeBSD, SunOS, Solaris, Linux

2) DOS(Disk OPerating System)

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

3) MS Windows

  • MS사의 다중 작업용 GUI 기반 운영 체제
  • 네트워크 환경 강화
  • DOS용 응용 프로그램과 호환성 제공
  • 불안정성
  • 풍부한 지원 소프트웨어

4) 소형 device를 위한 OS

  • PalmOS, TinyOS 등

6. 운영체제의 구조

1) CPU 스케줄링 : 어떤 프로그램한테 CPU를 할당할 것인지에 대한 이슈. 아주 짧은 시간 간격으로 CPU를 줬다 뺏었다 하는 것이 CPU 스케줄링
-> 먼저 온 사람을 먼저 처리해주는 것이 가장 공정하고 합리적인 방법이라고 생각하는 경향이 있는데, 그렇게 처리하는 것이 효율적이지 않을 수도 있다.
-> 시간 차이를 완충해주면서 주어진 자원의 특성을 최대한 활용하는 스케줄링 방법이 필요하다.

2) 메모리 관리 : 한정된 메모리를 분배하는 이슈. 적어도 CPU가 원활하게 움직일 수 있도록 메모리를 분배한다. 디스크에서 새로운 것들이 올라오면 메모리에서 어떤 걸 쫓아내어야 하나? 미래에 사용하지 않을것들 -> 미래를 예측해야 한다. 메모리에 최근에 많이 사용됐으면 쫓아내지 않는다. 과거를 통해서 미래를 예측.

3) 디스크에서의 파일 관리 : 디스크에 특성에 맞게 스케줄링이 필요. 디스크에 들어온 요청들을 스케줄링. 헤드에 가까운 위치에 들어왔다면 먼저 처리. 엘리베이터 스케줄링과 유사

4) 입출력 관리 : 입출력 장치는 상대적으로 느리다. 장치들이 느리기 때문에 디스크, 메모리, CPU와 어떻게 주고 받을 것인가. 입출력 장치가 CPU에게 인터럽트를 걸어서 다음 작업을 하기 전에 알아차려서 처리해준다.

5) 프로세스 관리


출처 : 이화여자대학교 반효경 교수님 '운영체제' 강의 http://www.kocw.net/home/enrolment/enrolmentView.do?cid=3646706b4347ef09&lid=af8e05c97c6d60de

0개의 댓글