[운영체제] 기본 개념

최솔·2023년 11월 7일
0

운영체제

목록 보기
1/6

운영체제(Operating System, OS)란 ?


컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서
사용자 및 다른 모든 소프트웨어와 하드웨어의 연결을 담당한다.

운영체제는 컴퓨터가 부팅될 때 메모리 내 커널 영역(kernal space)이라는 공간에 적재되며,
커널 영역을 제외한 공간은 사용자 영역(user space)으로, 일반적인 응용 프로그램이 적재된다.

→ 커널 영역에 적재된 운영체제가 사용자 영역에 적재된 프로그램들에 자원을 할당하고 실행을 돕는 것


운영체제의 목표


운영체제에는 크게 두 가지의 목표가 있다.

  • 컴퓨터 하드웨어 ↔ 운영체제
  • 운영체제 ↔ 사용자

사용자의 입장 : 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 (즉, 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행해줌)

전공자의 입장 : 컴퓨터 시스템의 자원을 효율적으로 관리하는 것

여기서 말하는 자원이란 프로세스(CPU), 메모리, 기억장치, 입출력 장치 등을 말한다.

자원의 효율적 관리란 ?

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

운영체제의 목적

  • 자원의 효율적 관리
  • 사용자 및 운영체제 자신의 보호
  • 프로세스, 파일, 메세지 등을 관리

운영체제의 분류


동시 작업 가능 여부

  • 단일 작업
    한 번에 하나의 작업만 처리 (ex: MS-DOS 프롬프트)

  • 다중 작업
    동시에 두 개 이상의 작업을 처리 (ex: UNIX, MS Windows 등)

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

    • 다중 프로그래밍 시스템
      : 메모리 공간을 분할해 여러 프로그램을 동시에 메모리에 올려놓고 CPU가 항상 작업을 수행할 수 있도록 하는 시스템

    • 다중처리기 시스템
      : 하나의 컴퓨터 안에 CPU가 여러 개 설치된 시스템

사용자의 수

  • 단일 사용자 (Single User)

    • MS-DOS, MS Windows
    • 단일 작업만 지원해주는 운영체제의 경우 단일 사용자만 지원
  • 다중 사용자 (Mulit User)

    • UNIX, NT Server
    • 서버에 계정을 여러 개 만들고 원격으로 여러 명이 동시에 접근할 수 있는 것

처리 방식

  • 일괄 처리 (Batch Processing)
    - 작업 요청의 일정량을 모아서 한꺼번에 처리
    - 작업이 완전히 종료될 때까지 기다림

    현대의 운영체제에 적합하지 않음

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

    현대의 운영체제

  • 실시간 (Realtime OS)
    - 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간시스템을 위한 OS
    - ex) 미사일 제어, 반도체 장비, 로봇 제어

    시분할과 비슷해보이지만, 프로그램이 동작하기 위해 정확한 시간이 필요로 하는 운영체제


몇가지 용어


  • Multitasking : 컴퓨터 전반에서 하나의 프로그램이 끝나기 전에 다른 프로그램이 컴퓨터에서 실행 가능한 것

  • Multiprogramming : 여러 프로그램이 메모리에 올라가 있음을 강조

  • Time sharing : CPU의 시간을 분할하여 나누어 쓴다는 의미 강조

  • Multiprocess : 여러 프로그램이 동시에 실행

  • MultiProcessor : 하나의 컴퓨터에 CPU가 여러 개 붙어있음을 의미


운영체제의 예


  • 유닉스 (UNIX) - 초창기의 목적은 대형 컴퓨터를 위한 운영체제
  • DOS - 개인용 컴퓨터를 위한 운영체제 (단일 사용자용 운영체제)
  • MS Windows - 다중 작업용 GUI 기반 운영 체제

운영체제의 구조



CPU가 한개일때 작업이 긴 것이 있으면 나머지 작업은 오래 기다려야 하는데 이를 해결하는 방법 ?

CPU 스케줄링

  • 어떤 프로그램부터 CPU를 이용하게 할지 결정
  • 얼마나 오랫동안 CPU를 이용하게 할지 결정


프로그램이 많아지만 각 프로그램이 갖는 메모리 공간이 작아져서 프로그램이 원활하게 실행되지 않는 경우 ?

메모리 관리의 필요성

  • 실행할 프로그램을 메모리에 적재
  • 더 이상 실행되지 않는 프로그램을 메모리에서 삭제


디스크를 읽을 때 헤드의 움직임을 최소화하면서 효율적으로 읽어들이는 방법 ?

파일 관리를 효율적으로 하는 방법

  • 엘리베이터 스케줄링과 유사한 방법
    (먼저 버튼을 눌러도 우선 탑승이 가능하지 않은 방식)


I/O device를 관리하기 위해 인터럽트를 사용하여 CPU에게 작업 사항이 있음을 알림

입출력 관리

  • 복수의 프로그램이 동일한 입출력장치 접근 시도 시 동시 접근 방지

0개의 댓글