[운영 체제] Chapter 1&2 | Introduction to Operating Systems

피망이·2023년 12월 27일

운영 체제(Operating System, OS)

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

    • 커널(Kernal): 운영체제의 핵심, 메모리에 상주하는 부분

운영 체제의 목표

  • 컴퓨터 시스템의 자원을 효율적으로 관리

    • 리소스(프로세서, 기억 장치, 입출력 장치 등)의 효율적 관리
    • 주어진 자원으로 최대한의 성능을 내도록 (효율성)

    • 운영체제는 동시 사용자/프로그램들이 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공함
    • 하드웨어를 관리하고 접근하는 복잡한 부분을 운영체제가 다룸

운영 체제의 분류

  • 현대적인 운영 체제는 다중 작업(multi tasking) 지원

    • UNIX, MS Windows
  • 사용자의 수 (동시 접근 가능 여부)

    • 단일 사용자: MS-DOS, MS Windows
    • 다중 사용자: UNIX, NT server
  • 처리 방식

    • 일괄 처리(batch processing)
      • non-interactive한 서비스
    • 현대 운영 체제는 시분할(time sharing) 방식
      • 100ms 단위, interactive한 서비스, 짧은 응답 시간을 가짐
      • ex. Window, Linux, ios, 안드로이드
    • 실시간(Realtime OS)
      • 정해진 시간 안에 어떠한 일이 반드시 종료되어야 함이 보장되어야 할 때
      • 특수한 작업을 할 때 ex. 원자로 공장 제어, 미사일 제어, 반도체 장비

몇 가지 용어

  • Multitasking

    • 사실상 시분할 작업이 빠르게 이어지는 것임, 처리는 하나만 함
  • Multiprogramming

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

    • "CPU" 강조
  • Multiprocess

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

    • 처리기, 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음을 의미

운영 체제의 예

  • 유닉스(UNIX)

    • 멀티태스킹 가능, 다중 사용자 지원
    • 당시에는 Assembly 언어(기계어)로 코드가 작성되어 어려웠음
    • C언어를 만들어 코드의 대부분을 작성
      • 포터블(portable) : 다른 컴퓨터로 이식하기가 쉬움
    • 커널의 크기를 작게 만듦
    • 소스 코드 공개 ex. Linux (안드로이드 커널도 리눅스)
    • 서버를 위한 운영 체제에서 개인용 운영 체제로도 쓰이게 됨
  • DOS

    • 단일 사용자용 운영 체제
    • 메모리 관리 능력의 한계 (주기억장치 : 640KB가 최대)
  • MS Window

    • 다중 사용자용 운영 체제, GUI 기반
    • 불안정성 → 7 이후로는 안정화 됨
    • 풍부한 지원 소프트웨어

운영 체제의 구조

  • CPU 스케줄링

    • 누구한테 CPU를 줄까?
    • 빨리 끝나는 작업 기준으로 먼저 처리하곤 함
      • 시간 소비을 최소화하여 처리하고 싶을 때
  • 메모리 관리

    • 한정된 메모리를 어떻게 쪼개어 쓰지?
    • CPU에서 원활하게 처리할 수 있도록 일부 프로그램만 할당, 나머지는 Disk로 쫓아냄
      • working set 모델 (Disk I/O)
    • 과거를 통해 미래를 예측하곤 함
  • 파일 관리

    • 디스크에 파일을 어떻게 보관하지?
    • 디스크도 스케줄링이 필요함
    • HEAD가 움직이며 데이터를 읽고 씀
      • 공간 이동을 최소화하여 배달하고 싶을 때
  • 입출력 관리

    • 각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하지?
    • I/O device : 느림
    • "Interrupt"에 기반하여 관리 → CPU가 알아채게!
  • 프로세스 관리

    • 자원 할당 및 반환
  • 그 외

    • 보호 시스템, 네트워킹
    • command line interpreter

profile
물리학 전공자의 프로그래밍 도전기

0개의 댓글