[OS] Introduction(운영체제 정의, 목적, 분류, 예시, 역할)

zzarbttoo·2021년 8월 4일
0

OS(운영체제)

목록 보기
2/12
post-custom-banner

이 글은 KOCW에 공개되어있는 '반효경 교수님'의 운영체제 강의 및 강의 교재 Operation System Concepts(a.k.a 공룡책🦕)의 내용을 참고하여 작성했습니다.
오류가 있으면 댓글로 정정 부탁드립니다


| 운영체제의 정의

운영체제는 하드웨어 바로 윗단에 설치되는 일종의 소프트웨어이며 다음과 같은 의미를 가지고 있다.

  • 좁은 의미 : 커널 그 자체. 운영체제의 핵심 부분으로 부팅 이후로 메모리에 상주하는 부분
  • 넓은 의미 : 커널을 포함하여 주변 시스템을 다루는 최소한의 유틸리티

| 운영체제의 목적

운영체제는 하드웨어와 소프트웨어&사용자 중간에 있으며 위치에 따라 목적이 다르다

1) 하드웨어 윗단(하드웨어 <-> 운영체제)

  • 하드웨어를 효율적으로 관리해주는 역할을 하며, 이는 컴퓨터 시스템의 자원을 효율적으로 관리하며 이루어진다

컴퓨터 시스템 안에 있는 하드웨어 자원은 이미 주어져 있는 것이고 (ex cpu는 초당 instruction 몇개 처리, 메모리 몇기가 등)

주어져 있는 하드웨어를 가지고 최대한의 성능을 낼 수 있도록 하는 것이 운영체제의 목적이라 할 수 있다.

2) 소프트웨어(사용자) 아랫단(운영체제<-> 소프트웨어/사용자)

  • 사용자가 컴퓨터를 편리하게 사용할 수 있도록 한다

현대의 컴퓨터는 여러명의 사용자가 하나의 컴퓨터를 사용하고, 여러 프로그램이 하나의 컴퓨터에서 실행되는 것을 지원하고 있다. 이러한 상황에서 사용자에게 자기가 실행한 프로그램만이 컴퓨터에서 돌아가는 듯한 인상을 주는 것이 컴퓨터의 역할이다. 그 밖에도 프로세스, 파일, 메시지 등 소프트웨어 자원도 관리도 해야 하며, 사용자와 운영체제 자체를 보호하는 기능도 수행해야 한다


| 운영체제의 분류

운영체제는 동시 작업 가능 여부, 사용자의 수, 처리 방식에 따라 세 가지로 분류할 수 있다

1. 동시 작업 가능 여부

  • 단일 작업(single tasking) : 단일 프로그램을 실행 할 수 있는 운영체제 ex) MS-DOS
  • 다중 작업(multitasking) : 여러 프로그램을 동시에(실제로 동시에는 아님) 실행할 수 있는 운영 체제 ex) UNIX, MS Windows

    cf) multitasking : 동시에 실행되는 것처럼 보이지만, 하나의 프로그램이 끝나기 전에 다른 프로그램 실행이 가능한 것
    == multiprogramming : 메모리에 여러 프로그램이 동시에 올라가는 것(메모리 강조)
    == time sharing : cpu 시간을 분할해 사용한다는 의미(cpu 강조)
    != multiprocessor : cpu가 여러개 붙어있는 컴퓨터(하드웨어적으로 다름)

2. 사용자의 수

  • 단일 사용자(singleUser) : 한번에 여러명의 사용자가 사용할 수 있게 지원해준다
    ex) MS-DOS, MS Window(요즘에는 hyper-v등으로 다중 사용 가능)

  • 다중 사용자(multi user) : 서버를 열고 계정을 여러 개 만들어서 여러 명의 사용자가 동시에 컴퓨터를 사용할 수 있다. 때문에 형평성 있는 자원 분배, 보안이 중요시 된다
    ex) UNIX, NT Server

3. 처리 방식

  • 일괄처리(batch processing) : 바로바로 처리하는 것이 아니라 작업을 모아서 한꺼번에 처리하는 방식으로 interactive하지 않아 현대에는 잘 사용하지 않는다
  • 시분할 방식(time sharing) : 우리가 사용하는 범용적인 컴퓨터가 사용하는 방식. 작업이 여러 개 실행되지만, 운영체제가 cpu를 잘 나누어서 지원주기 때문에 사용자는 컴퓨터의 응답을 바로바로 받아 interactive 한 경험을 할 수 있다 (하지만 정해진 데드라인은 없다)
  • 실시간(Realtime OS) : 데드라인이 있어 정해진 시간 안에 결과가 나와야한다. 특수한 목적을 가질 때 사용된다.
* 경성 실시간 시스템 : 데드라인을 무슨 일이 있어도 지켜야 하는 시스템 ex) 핵시설
* 연성 실시간 시스템 : 데드라인이 있지만 안 지키더라도 크게 심각한 문제는 일어나지 않는 것. 실시간 처리 방식을 범용적으로 잘 사용하지 않았지만, 요즘에는 범용적인 부분에서도 필요성이 많아지고 있다 ex) 네비게이션

| 운영체제의 예시

unix 계열

  • 대형 컴퓨터 전용으로 만들어졌고, 멀티 태스킹이 가능하다
  • 오픈소스였다(요즘에는 일부분만 오픈소스로 제공한다)
  • 이식성이 높다(portable) : C언어 기반이여서 이식성이 높다(기계어로 작성된다면 그 기계어를 사용하는 기계에만 매핑 가능)
  • 커널을 아주 작게 만들었기 때문에 메모리를 덜 차지하게 된다
    ex) UNIX -> LINUX (오픈소스)

windows 계열

  • pc (개인 컴퓨터) 용으로 만들어졌다
  • 단일 사용자, 단일 작업을 지원한다 ex) DOS, MS Window
  • 요즘에는 window 계열에서도 멀티태스킹이 가능하다

| 운영체제 역할

간략하게 컴퓨터의 구조를 살펴보면 다음과 같다

CPU <-> memory <-> Disk, I/O device

운영체제는 이에 대해 다음과 같은 역할을 한다

cpu 관리

  • 하나의 프로그램이 cpu를 점유하지 못하도록 짧은 간격으로 cpu 할당(cpu 스케쥴링)

메모리 관리

  • 컴퓨터는 한정된 메모리를 쪼개 쓴다

  • cpu 에서 원활하게 돌아갈 수 있을 만큼만 메모리에 올려놓음

디스크 관리

  • 파일 관리 등

IO Device 관리

  • cpu와 교신을 하면서 입출력 처리를 진행한다

  • IO 장치는 CPU보다 처리 속도가 훨씬 느리기 때문에 IO 장치에 요청할 것이 있으면 cpu에 interrupt를 걸어서 현재 하던 작업을 멈추고 IO Device가 작업을 처리하도록 한다(CPU는 그동안 다른 작업 처리)

그 외에도 프로세스 관리 자원 할당 및 반환, 보호시스템, 네트워킹, 명령어 해석기(command line interpreter) 등의 역할을 한다

profile
나는야 누워있는 개발머신
post-custom-banner

0개의 댓글