본문 바로가기

카테고리 없음

운영체제 개요

1. 운영체제의 정의


 - 운영체제란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어를 말한다.

 

 

 

- 소프트웨어가 컴퓨터 시스템에서 실행되기 위해서는 메모리에 프로그램이 올라가 있어야 한다. 
- 커널 : 메모리에 상주하는 운영체제, `좁은 의미의 운영체제`
- 넓은 의미의 운영체제 : `커널 + 유틸리티`
- 유틸리티 : 윈도우의 복사 프로그램과 같은 것, 메모리에 상주하지는 않는다.

 

 

 

 


2. 운영체제의 기능

 

운영체제의 기능은 세가지로 나눌 수 있다.

  • 하드웨어를 위한 역할
  • 사용자를 위한 역할
  • 보안

 

하드웨어를 위한 역할

컴퓨터 시스템 내의 자원을 효율적으로 관리하는 것을 말한다.

자원이란 CPU, 메모리, 하드디스크 등 하드웨어 자원뿐 아니라 스프트웨어 자원까지를 통칭해서 부르는 말이다.

 

사용자를 위한 역할

사용자는 파일이 디스크에 어떻게 저장되는지 자세히 알지 못하지만 운영체제가 제공하는 인터페이스를 통해 손쉽게 저장하거나 파일의 내용을 볼 수 있게 한다.

 

보안

악의성 프로그램이 다른 사용자 프로그램이 올라가 있는 메모리 영역을 참조하는 것을 방지

악의성 프로그램이 사적인 파일에 접근하는 것을 방지

악의성 프로그램이 운영체제 자체가 올라가 있는 메모리 영역을 변경하는 것을 방지

 

 

 


3. 운영체제의 분류

 

운영 체제는 여라가지 기준에 따라 분류할 수 있다.

  • 동시 작업을 지원하는지의 여부
  • 다중 사용자에 대한 동시 지원 여부
  • 작업을 처리하는 방식

 

 


3-1 운영체제 분류 (동시 작업 지원 여부)

 

동시 작업을 지원하는지의 여부에 운영 체제를 분류할 수 있다.

  • 단일 작업용 운영체제 (single tasking)
  • 다중 작업용 운영체제 (multi tasking)

 

단일 작업용 운영체제 (single tasking)

한 번에 하나의 프로그램만 실행 시킬 수 있는 운영체제

초창기 운영체제

DOS 환경

 

다중 작업용 운영체제 (multi tasking)

한 번에 여러개의 프로그램일 실행 시킬 수 있는 운영체제

여러 프로그램이 CPU와 메모리를 공유

아래 세가지 시스템을 통해 단일 CPU로 다중 작업이 가능하다.

  • 시분할 시스템 (time sharing system)
  • 다중 프로그래밍 시스템 (multi-programming system)
  • 대화형 시스템 (interactive system)

 

시분할 시스템 (time sharing system)

CPU의 작업시간을 여러 프로그램이 조금씩 나누어 쓰는 시스템

 

다중 프로그래밍 시스템 (multi-programming system)

메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템

 

대화형 시스템 (interactive system)

여러 프로그램을 같이 실행시키지만 각 프로그램에 대한 키보드 입력의 결과를 곧바로 화면에 보여주는 시스템

 

다중 처리기 시스템 (multi-processor system)

하나의 컴퓨터 안에 여러 CPU가 설치된 것을 말함

 

 

다중 사용자에 대한 동시 지원 여부에 따라 나눌 수 있다.

  • 단일 사용자용 운영체제
  • 다중 사용자용 운영체제

 

단일 사용자용 운영체제

DOS처럼 한 번에 하나의 작업만 수행하는 경우

MS윈도우 처럼 혼자 사용하지만 다중 작업이 가능한 경우 

 

다중 사용자용 운영체제

이메일 서버, 웹서 서버등등..

 

 

작업을 처리하는 방식에 따라 나눌 수 있다.

  • 일괄 처리 방식 (batch processing)
  • 시분할 처리 방식
  • 실시간 (real time) 운영체제

 

일괄 처리 방식 (batch processing)

요청된 작업을 일정량씩 모아서 한번에 처리

응답 시간이 길다는 단점이 있다.

초창기 컴퓨터에 사용되던 펀치 카드 처리 시스템

 

시분할 처리 방식

컴퓨터 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식

현대의 범용 컴퓨터

사용자의 작업을 짧은 시간 단위씩 번갈아가며 처리

짧은 응답시간

 

실시간 운영체제 - 경성 실시간 시스템

정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템

주어진 시간을 지키지 못할 경우 매우 위험한 결과를 초래할 가능성이 있는 로켓, 원자로 제어 시스템

 

실시간 운영체제 - 연성 실시간 시스템

정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템

멀티미디어 스트리밍 시스템과 같이 데이터가 정해진 시간 단위로 전달되어야 올바른 기능을 수행할 수 있는 시스템

 

 

 

 

 


5. 운영체제의 자원 관리 기능

 

CPU 스케줄링

매 시점 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정하는 일. CPU 스케줄링의 목표는 CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익을 당하지 않도록 하는 것이다.

 

세가지 방법이 있다.

  • 선입선출
  • 라운드  로빈
  • 우선 순위

 

선입선출 기법

  • 먼저 온 것을 먼저 처리해주는 방식
  • 전체 시스템 입장에서는 비효율적인 결과를 초래할 가능성이 있다.
  • ex) 장시간 CPU를 사용해야 하는 프로세스가 먼저 도착하고 짧은 시간만 CPU를 사용하면 되는 프로세스들이 나중에 도착하는 경우

 

라운드 로빈 기법

  • 선입선출 기법 문제를 해결하기 위해서 등장
  • CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한, 정해진 시간이 지나면 CPU를 내어놓고 CPU 대기열의 제일 뒤에 가서 줄을 서는 형태
  • 응답 시간을 짧게 줄일 수 있다.

 

우선순위 스케줄링

대기 중인 프로세스들에 우선순위를 부여하고 우순위가 높은 프로세스에 CPU를 먼저 할당

 

 

메모리 관리 방식

 메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부에 기억장치이다. 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야한다. 한정된 메모리 공간에 여러 프로그램을 수용하려면 메모리에 대한 효율적인 관리 메커니즘이 필요하다.

 

  • 고정분할 (fixed partition) 방식
  • 가변분할(variable partition) 방식
  • 가상메모리 (virtual memory) 방식

 

고정 분할 (fixed partition) 방식

  • 물리적 메모리를 분할 하여 관리
  • 나뉜 각각에 분할에 하나의 프로그램이 적재
  • 융통성이 없다.
  • 분할의 크기보다 큰 프로그램은 적재가 불가능
  • 분할 크기보다 작은 프로그램이 적재되는 경우 내부조각 발생 (잉여 영역)

 

가변분할 (variable partition) 방식 

  • 프로그램의 크기에 맞게 메모리를 분할해서 사용
  • 물리적 메모리의 크기보다 더 큰 프로그램의 실행은 불가능
  • 분할의 크기와 개수가 동적으로 변하므로 기술적 관리 기법이 필요
  • 내부조각은 발생하지 않지만 외부조각이 발생

 

가상메모리 (virtual memory) 방식

  • 현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 하드디스크와 같은 보조기억장치에 저장하고 필요할 때 적재
  • 스왑영역: 보조기억장치에 저장된 영역
  • 가상 메모리 주소 공간은 페이지(page)라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장된다.

 

 

* 인터럽트

  • 주변장치 및 입출력 장치는 인터럽트라는 메커니즘을 통해 관리가 일어남
  • 친구와의 통화를 하는 중 택배 기사가 온 경우를 생각하면 된다.

 

 

* 컨트롤러

  • 주변장치들이 각 장치에서 일어나는 업무를 관리하기 위한 CPU
  • 해당 장치에 대한 업무를 처리하고 CPU에 인터럽트를 발생시켜 보고하는 역할