운영체제 1 - 2020.07.27

2020. 7. 27. 15:33개인공부/운영체제

운영체제란

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

 

 

운영체제의 목표

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

 

프로세서, 기억장치, 입출력 장치등의 효율적 관리 (하드웨어 자원들)

  •       사용자간의 형평성 있는 자원 분배
  •       주어진 자원으로 최대한의 성능을 내도록

사용자 및 운영체제 자신의 보호

 

프로세스, 파일, 메시지 등을 관리 (소프트웨어 자원들)

 

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

  •  
  •  

 

 

좁은 의미로 운영체제를 부를땐 '커널'이라고 부른다. 부팅이후로 항상 메모리에 상주하는 부분을 커널이라고 한다.

넓은 의미로 운영체제를 부를땐 '커널'을 포함해서 주변 유틸리티를 포함한다.

 

 

메모리에 프로그램들이 자리를 차지하려고 할때 그걸 조절하는게 운영체제.

 

 

운영 체제의 분류 - 동시 작업 가능 여부

단일 작업(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 (연성 실시간 시스템) // 초당 24프레임으로 디코딩이 지켜져야 영화관람을 쾌적하게
  •                                                       관람 하지만  지켜지지 않는다고 해서 엄청난 피해를 끼치는것은 아님

 

핸드폰 애플리케이션에서 데드라인이 지켜져야 하는 상황들이 점점 생기고 있다.

(블랙박스 영상, 핸드폰 네비게이션 등등)

 

 

 

몇 가지 용어

  • Multitasking (사실 동시에 여러일을 하는게 하니라 한번에 하나의 일을 되게 빠르게 여러번 번갈아 하는것)
  • Multiprogramming
  • Time sharing
  • Multiprocess
  • 구분 
  • 위의 용어들은 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻한다.
  • Multiprogramming은 여러 프로그램이 메모리에 올라가 있음을 강조
  • Time Sharing은 CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조

Multiprocessor

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

 

 

운영 체제의 예

 

 

 

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

 

 

 

일반 사용자들이 쓸수 있도록 개발됨

 

 

  •  
  •  

 

  •  
  •  
  •  
  •  
  •  

 

 

  •  

 

 

 

 

 

 

CPU 스케쥴링 - 누구한테 CPU를 줄까?

선착순으로 cpu를 내주는게 아니라 시간차이를 완충하면서 주어진 자원의 특성을 최대한 관리하며 분배.

 

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

메모리관리에서 최근에 많이 사용됐거나 많이 쓰여진 프로그램이라면 메모리에서 쫓아내지 않고 머물러 있게 한다.

과거를 통해서 미래를 예측하는 메모리관리.

 

 

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

디스크 스케쥴링은 엘리베이터 스케쥴링과 비슷하다

제일 가까이 빨리 응답할수 있는 요청에 먼저 응답한다. (98층에서 1층내려 가고 있는중에 100층 눌렀다고 100층으로 올라가지 않는 것처럼)

 

  • CPU는 너무 빠르기 때문에 어떻게 움직일지 고려하며 운영
  • Disk는 헤더가 움직이기때문에 최소한으로 움직이면서 운영 (택배기사 메카니즘처럼)

 

I/O device 입출력 관리

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

interrupt에 기반하여 관리

 

 

운영체제 이해 방법

OS 사용자 관점이 아니라 OS 개발자 관점에서 수강해야 함.

  • 대부분의 알고리즘은 OS 프로그램 자체의 내용
  • 인간의 신체가 뇌의 통제를 받듯 컴퓨터 하드웨어는 운영체제의 통제를 받으며 그 운영체제는 사람이 프로그래밍 하는 것
  • 본인을 Windows XP 나 Linux 같은 운영체제라고 생각하고 본인의 할 일이 무엇인지를 생각해 보자.

 

 

 

'개인공부 > 운영체제' 카테고리의 다른 글

운영체제 -2  (0) 2020.08.01