[CS] 운영체제

Dico·2020년 12월 4일
0

[CS]

목록 보기
1/3
post-thumbnail

Introduction to Operation System(OS)


운영체제란?

  • 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어의 계층.
  • 좁은 의미의 운영체제: 운영체제의 핵심. 컴퓨터 전원을 켠 후 부팅이 일어난 이후로 메모리에 상주하는 부분을 의미. '커널'이라고도 부름.
  • 넓은 의미의 운영체제: 커널 뿐만 아니라 각종 주변 시스템 유틸리티를 포함한 개념. 최소한으로 필요한 부가적인 프로그램들을 모두 포함.

운영체제의 목적

1. 가장 큰 목적은 컴퓨터 시스템의 자원을 효율적으로 관리하는 것!

  • 프로세서, 기억장치, 입출력 장치 등을 효율적으로 관리. 짧은 시간씩 CPU를 번갈아 할당, 메모리 공간을 적절히 분배하는 등. (주어진 자원으로 최대한의 성능을 내고 사용자간의 형평성 있는 자원 분배를 할 수 있도록) = 하드웨어 자원
  • 사용자 및 운영체제 자신을 보호
  • 프로세스, 파일, 메세지 등을 관리 = 소프트웨어 자원

2. 그리고 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경을 제공하는 것.

  • 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공 (마치 내 컴퓨터에서만 돌아가는 것처럼 느껴지도록!)
  • 하드웨어를 직접 다루는 복잡한 부분들을 운영체제가 대행해줌.

운영체제의 분류

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)

  • 작업 요청의 일정량을 모아서 한번에 처리
  • 작업이 완전 종료될 때까지 기다려야 한다.
  • 역사 속의 시스템. interactive 하지가 않음.
    ex. 초기 punch card 시스템 (작업카드 적재 ➡️ 작업 종료 후 출력)

시분할 방식(time sharing)

  • 보통 우리가 쓰는 방식!!
  • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
  • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐.
  • 여러개의 CPU에 작업을 나누어서 할당해준다.
  • Interactive한 방식: 바로바로 결과를 받아 상호교류가 가능한 방식.
  • 사람이 느낄 때 처리가 빠르다고 느낄 수 있고 주어진 자원을 최대로 활용하는 것이 목적이기 때문에 정확한 시간을 지켜주는 것은 아님. 사람에 특화된 시스템.

실시간 운영체제(Realtime OS)

  • Deadline이 있어서 정해진 시간 내에 어떤 일이 반드시 결과가 나오는 것을 보장해줌.
    ex. 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어 등.
  • 특수한 목적이 있음.
  • Hard realtime system(경성 실시간 시스템) - ex. 반도체 제조공정
  • Soft realtime system(연성 실시간 시스템) - ex. 영화 실행

관련 용어

#Multitasking

: 하나의 프로그램이 끝나기 전에 다른 프로그램이 실행될 수 있는 것.

#Multiprogramming

: Multitasking과 유사. 메모리에 여러 프로그램이 동시에 올라가 있는 부분을 강조.

#Time Sharing

: CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조.

#Multiprocessor

: 다중 처리기. CPU가 여러개가 있는 컴퓨터. 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음을 의미.


운영체제의 예

유닉스(UNIX)

  • 목적: 대형 컴퓨터를 위해서 만들어짐.
  • 멀티태스킹이 가능.
  • 기계어에 가까운 언어(어셈블리 언어)밖에 없던 때라 이 때 C언어(고급언어)가 생김.
  • 프로그램 개발에 용이.
  • 높은 이식성. portable - 전혀 다른 컴퓨터에 옮겨가기가 쉬움. 컴파일만 하면 되기 때문.
  • 소스 코드가 공개됨.(공개 소프트웨어 정신!!👏 Linux는 지금도 소스 코드가 공개되어 있음. 안드로이드도 Linux 커널을 씀.)
  • 최소한의 커널 구조로 메모리를 많이 차지하지 않음.
  • 다양한 버전이 있음(System V, FreeBSD, SunOS, Solaris, Linux)

DOS(Disk Operating System)

  • 단일 사용자, 개인 PC를 위해서 만들어진 운영체제.
  • 메모리 관리 능력의 한계. 640KB만 지원.

MS Windows

  • MS사의 다중 작업용 GUI기반 운영 체제.
  • Plug and Play, 네트워크 환경 강화.
  • 약간의 불안정성
  • 풍부한 지원 소프트웨어

소형기기를 위한 OS

  • PalmOS
  • Pocket PC(WinCE)
  • Tiny OS

운영체제의 구조/기능

  • CPU : CPU 스케줄링(누구한테 CPU를 할당할 것인가)을 함. 시간차를 완충하면서 주어진 자원을 최대한 활용하는 방식을 찾는 것.
  • 메모리관리: 한정된 메모리를 어떻게 쪼개어 할당할 것인가. 분배의 문제.
  • Disk: 메모리는 크기가 한정되어있기 때문에 disk에서 무엇을 메모리로 보내려고 할 때, 무언가는 나가야 한다. 무엇을 쫓아낼 것인가. 사용할 가능성이 낮은 것부터 쫒겨남. 최근 사용된 적이 없는 것들.
    파일은 어떻게 보관할 것인지. 파일관리도 중요한 부분.
    디스크도 스케쥴링이 필요. 엘리베이터 스케쥴링과 유사. 먼저 들어온 순서로 처리하는 것이 아님!!!
    움직임을 최소화하면서 많은 요청을 처리할 수 있을지가 관건.
  • I/O device: CPU나 Disk보다 훨씬 느림. 입출력 관리. 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고받게 할지의 문제.
  • 프로세스관리: 프로세스의 생성과 삭제, 자원 할당 및 반환, 프로세스 간 협력
  • 그 외: 보호 시스템, 네트워킹, 명령어 해석기(command line interpreter)

컴퓨터 시스템 구조


Reference

http://www.kocw.net/home/search/kemView.do?kemId=1046323
본 게시글은 이화여대 반효경 교수님의 운영체제 강의를 수강한 후 정리한 내용입니다 🙂

profile
프린이의 코묻은 코드가 쌓이는 공간

0개의 댓글