[운영체제] Day01. Introduction

youngkimi·2023년 12월 10일
0

[CS] 운영체제

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

운영체제 (Operating System, OS)

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

운영체제의 목표

  • 컴퓨터 자원의 효율적 관리
    • 자원 (Resources) : 프로세서, 기억 장치, 입출력 장치...
  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
  • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
  • 운영체제는 동시 사용자 / 프로그램이 각각 독자적 컴퓨터에서 수행되는 듯한 환상을 제공
    • 하나의 CPU가 실행 중인 프로그램들에게 짧은 시간씩 번갈아가면서 할당.
    • 실행 중인 프로그램에 메모리 공간을 분배

운영체제의 의미

  • 협의(좁은 의미) : 커널
    • 운영체제의 핵심 부분, 메모리에 상주하는 부분
  • 광의(넓은 의미)
    • 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념

운영체제의 분류

1. 동시작업 가능 여부

  • 단일 작업(single tasking)
    • 한 번에 하나의 작업 처리
    • MS-DOS 프롬프트 상에서는 한 명령을 끝내기 전에는 다른 명령 수행 불가
  • 다중 작업(multi tasking)
    • 동시에 두 개 이상의 작업 처리
    • 현대적 운영체제
    • UNIX, MS Windows 등에서는 하나의 명령 끝나기 전에 다른 명령이나 프로그램 실행 가능.

2. 사용자의 수

  • 단일 사용자(single user)
    • MS-DOS, MS Windows
    • 동시 접근 불가 (MS windows도 서버 기능 추가하면 되기는 하는데 ...)
  • 다중 사용자(multi user)
    • UNIX, NT server
    • 동시 접근 가능
    • 사용자 간 보안기능, 각자의 자원 관리 기능 추가 필요

3. 처리 방식

  • 일괄 처리(batch processing)
    • 작업을 바로 처리하는 것이 아니라, 모아서 처리하는 것.
    • 현대 운영체제에서는 찾아보기 힘듦
  • 시분할(time sharing)
    • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    • task1 - task2 - task3 - task1 - task2 - ...
    • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
    • 사용자가 느끼기에 즉각적으로 작동한다고 느껴짐
    • 현재 우리가 사용하는 컴퓨터 OS 방식
  • 실시간(realtime OS)
    • 시분할, 실시간 모두 겉보기에는 Interactive 해보인다.
    • 하지만 실시간은 (시분할과는 다르게) DeadLine이 있다.
    • 즉, 해당 DeadLine 내에서 task가 반드시 종료됨을 보장한다.
    • 일종의 Special Purpose System (반드시 끝나야만 하는)
    • Hard (무조건 DeadLine 내에) / Soft (살짝 어겨도 OK)

4. 몇 가지 유사 용어

  • Multi-tasking : 동시 진행되는 작업 (물론 실제로는 교대로 수행하지만)
  • Multi-Programming : 메모리에 여러 프로그램이 올라가는 방식 (메모리적 측면 강조)
  • time-sharing : 시간을 분할해 나누어 쓰는 진행 (CPU적 측면 강조)
  • Multi-Process
  • 위 용어들은 여러 작업을 동시에 수행하는 것을 말한다.

5. 운영체제의 예

유닉스(Unix)
  • 코드 대부분을 C언어로 작성. (UNIX 만들기 위해 제작)
  • 높은 이식성, 최소한의 커널 구조, 복잡한 시스템에 맞게 확장 용이
  • 대형 시스템을 위한 OS
  • 멀티 태스킹 가능. 다중 사용자 지원.
  • 프로그램 개발에 용이
  • System V, FreeBSD, Linux
DOS(Dist Operating System)
  • 애초에는 Personal Computer 타겟
  • 따라서 초기에는 다중 사용자 지원 안했음.
  • 단일 사용자용, 단일 작업 지원 OS
  • 메모리 관리 능력의 한계(640kb)
윈도우(MS Window)
  • MS사의 다중 작업용 GUI 기반 운영 체제
  • DOS용 응용 프로그램과 호환성 제공, 풍부한 지원 소프트웨어
  • 불안정성

6. 운영체제의 구조업로드중..

CPU 스케쥴링
  • CPU 자원은 한정적. 시간이 오래 걸리는 프로그램이 먼저 CPU를 잡고 있으면 이후 시간이 적게 걸리는 프로그램도 기다리게 된다. (병목 현상과 같이)
  • 때문에 여러 프로그램을 번갈아 수행하던가, 시간이 적게 걸리는 프로그램을 우선순위로 삼는 등의 행위가 필요하다.
메모리 관리
  • 메모리 분배에 있어서, 프로그램마다 동일한 크기의 메모리를 할당하는 것은 언뜻 공평해보인다.
  • 하지만 실제로는 프로그램 수행을 위해 어느정도의 메모리는 필요하므로, 다중 프로그램이 수행되는 경우에 프로그램에 할당되는 메모리 크기가 너무 작은 경우 비효율을 초래할 위험성이 있다.
  • 일부 프로그램에만 충분히 메모리를 할당해주고 해당 프로그램들이 어느정도 종료 되었을 때, 다른 프로그램을 다시 불러와서 수행한다.
  • 어떤 프로그램을 메모리에서 쫓아내야 하는가? (CPU에서 다시 부를 가능성이 적은 것 ...)
파일 관리
  • 디스크에서 HEAD를 어떻게 덜 움직일래 (덜 움직여야 빠름)
입출력 관리
  • 각기 다른 I/O Device 어떻게 관리할래
프로세스 관리
  • 어떻게 생성 / 삭제할래
  • 어떻게 자원 할당하고 반환할래

... 등등을 다룰 예정입니다.

강의 : 운영체제 (KOCW) - 반효경
교재 : OSTEP - three easy pieces

post-custom-banner

0개의 댓글