본문 바로가기
개발하자/🐧 운영체제

운영체제 1. Introduction to Operating System

by 밈밈무 2022. 8. 14.
더보기

반효경 교수님의 운영체제 강의를 수강한 후 작성한 글입니다.

운영체제란 무엇인가?

- 운영체제란

컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어로, 사용자 및 (운영체제를 제외한) 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층이다.

- 협의 : 커널 (주로 사용되는 의미)

  커널이란, 운영체제의 핵심 부분으로 메모리에 상주하는 부분을 의미한다.

- 광의 : 커널 뿐만 아니라 각종 주변 시스템 유틸리티(메모리에 상주하지 않는 별도의 프로그램)까지 포함한 개념

운영체제의 목적

- 효율적인 자원의 관리

- 프로세서, 기억장치, 입출력장치(이것들은 HW 자원에 해당) 등의 효율적인 관리가 OS의 핵심 기능이다.

- 형평성 : 사용자 간의 형평성 있는 자원 분배를 지원한다. 특정 프로그램이 지나치게 차별 받는 경우가 발생하지 않도록 관리한다.

효율성 : 주어진 자원으로 최대한의 성능을 내도록 관리한다.

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

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

 

  ⇨ 이를 위해 실행 CPU 스케쥴링을 수행하거나 메모리 공간을 적절히 분배(여러 프로그램을 동시에 실행시키기 위해)한다.

운영체제의 분류

기준
- 동시 작업 가능 여부
- 사용자 수
- 처리 방식

- 동시 작업 가능 여부

- 단일 작업(single tasking)

  • 한번에 하나의 작업만을 처리한다.
  • ex) 엘리베이터, MS-DOS 프롬프트

- 다중 작업(multi tasking)

  • 동시에 여러 개의 작업 처리
  • 요즘 건 대부분 다중 작업 가능
  • ex) Windows, Linux, UNIX 등

- 사용자의 수

- 단일 사용자(single user)

  • 동시 접속이 불가능하다.
  • 단일 작업은 단일 사용자에 포함된다.
  • ex) MS-DOS, MS Windows(대체로)

- 다중 사용자(multi user)

  • 동시 접속이 가능하다.
  • ex) UNIX, NT server, Linux

- 처리 방식

- 일괄 처리(batch processing)

  • 작업을 바로 처리하지 않고 작업 요청의 일정량을 모아서 한번에 처리한다.
  • 옛날 방식에 해당한다.
  • 작업이 완전 종료될 때까지 기다려야 한다.
  • interactive하지 않은 방식.

- 시분할(time sharing)

  • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용한다.
  • 현대 운영체제의 처리 방식
  • 일괄 처리 시스템에 비해 짧은 응답 시간을 가지며 interactive하다.
  • 주어진 자원을 최대한 활용한다.

- 실시간(Realtime OS)

  • deadline 안에 주어진 일이 반드시 종료되어야 한다.
  • Hard realtime system : 무조건 해야 하는 경우, 미사일
  • Soft realtime system : 종료되지 않더라도 크게 문제가 되지는 않는 경우, 영화

용어 설명

- 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻하는 용어

  • Multitasking : 하나의 프로그램이 끝나기 전에 다른 프로그램을 실행할 수 있다.
  • Multiprogramming : 메모리에 여러 프로그램이 동시에 올라간다. (메모리 강조)
  • Time Sharing : CPU의 시간을 분할하여 나누어 쓴다. (CPU 강조)
  • Multiprocess : 여러 프로그램을 동시에 수행한다.

- cf) Multiprocessor : CPU가 여러개 있는 컴퓨터

운영체제의 예

- 유닉스

  • 코드 대부분이 C언어로 작성되기 때문에 높은 이식성을 가진다(특정 기계어에만 국한되지 않기 때문)
  • 초창기 목적 : 대형 컴퓨터 위한 OS  → multitasking & 다중 사용자
  • 최소한의 커널 구조로, 커널 크기가 작다.
  • 복잡한 시스템에 맞게 확장이 용이하며 소스 코드가 공개되어 프로그램 개발에 용이하다.
  • 다양한 버전이 있으며 그 중 Linux는 현재도 소스 코드가 공개되어 있다.

- DOS

  • MS사에서 PC 사용 목적을 가지고 개발한 OS
  • 단일 사용자용 운영체제이며 메모리 관리 능력의 한계를 가졌다.

- MS Windows

  • MS사의 다중 작업용 GUI 기반 운영 체제
  • Plug and Play, 네트워크 환경 강화
  • DOS 응용 프로그램과 호환성
  • (초창기) 불안정성
  • 사용자가 많기 때문에 지원 소프트웨어가 풍부하다.

- 그 외

PalmOS, Pocket PC, Tiny OS

운영체제 구조

- 하드웨어

- CPU : CPU 스케쥴링  → 어떤 프로그램한테 CPU를 줄지

- 메모리 : 메모리 관리  → 한정된 메모리를 어떤 프로그램에 얼마나, 어떻게 분배할지

- 디스크 : 파일 관리  → 디스크에 파일을 어떻게 보관할지

- I/O device : 입출력 관리  → CPU보다 IO디바이스의 속도가 현저히 느리기 때문에 입출력 장치들과 컴퓨터 간 정보를 주고 받는 것을 어떻게 관리할지

- 소프트웨어

- 프로세스 관리 : 프로그램 관리

  • 프로세스의 생성과 삭제
  • 자원 할당 및 반환
  • 프로세스 간 협력

- 그 외

- 보호 시스템

- 네트워킹

- 명령어 해석기(command line interpreter) (ex. cmd, bash)