퇴근 후 운영체제 시리즈 - Introduction

퇴근 후 운영체제 시리즈 - Introduction

운영체제 스터디 기록

해당 썸네일은 Wonkook Lee 님이 만드신 Thumbnail-Maker 를 이용하였습니다

퇴근 후 운영체제 스터디를 진행하고자 다짐했다. 이제까지 OS에서 얕았던 지식들을 좀 더 깊이있게 공부하고자 한다. 따라서 그냥 스터디만 하기 아쉬워서 블로그에 기록을 남기려한다. 내가 사용하는 책은 운영체제 공룡책 과 이화여대 반효경 교수님의 강의 를 활용하려고 한다!

이번 챕터에서는 컴퓨터 시스템의 일반적인 구성과 인터럽트의 역할, 사용자 모드 → 커널모드 그리고 운영체제가 어떻게 사용되는지에 대해 기록하려 한다. 그 전에 운영체제를 만들거나 수정하는 데는 소수만이 참여하는데 왜 컴퓨터 과학에 종사하는 사람 대부분이 배워야할까?

운영체제 작동방식에 대한 지식은 적절하고 효율적, 효과적으로 안전한 프로그래밍을 가능하게 하기 때문!


그럼 이제부터 운영체제에 대해 간단히 알아보자.

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

image

운영체제의 목적

  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
    • OS는 동시 사용자 / 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 경험 제공
    • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 다룸
  • 컴퓨터 시스템의 한정된 자원을 효율적으로 관리
    • CPU, 메모리, I/O 장치 등을 효율적 관리
      • 주어진 자원으로 최대한의 성능을 내도록 → 효율성
      • 특정 사용자 / 프로그램의 지나친 불이익이 발생하지 않도록 → 형평성
    • 사용자 및 운영체제 자신의 보호

image

컴퓨터 시스템의 구조

image

  • 운영체제는 컴퓨터가 켜지자마자 메모리에 상주함
  • CPU 자체가 I/O 디바이스들을 바로 직접 읽지 못함
    • 따라서 I/O 컨트롤러에게 명령을 내려서 해당 명령을 처리함

image

  • CPU는 하드웨어이기 때문에 어떤 로직이 없음
  • 결국 모든 명령은 운영체제를 통해 운영되는 것임
  • 따라서 CPU 스케쥴링 중요해짐
  • 디스크 스케쥴링은 디스크가 굉장히 느리기에 메모리 관리와 CPU 스케쥴링 모두가 다 관여해야됨
    • 결국 효율성을 제일 중요하게 여김
    • 가장 비슷한 것이 엘레베이터 스케쥴링
  • 캐시 / 인터럽트는 속도 차이를 완화하기 위해 있는 개념

프로세스의 상태

image

  • CPU큐와 디스크 큐 / 키보드 입력 큐들을 넘나들면 효율성을 추구함

CPU 스케쥴링 맛보기

FCFS (First Come First Served

image

Wating Time : P1 = 0; P2 = 24; P3 = 27

Average Wating Time : (0+24+27) / 3 = 17

  • 선입선출의 예
  • 공평할 수는 있겠으나 효율적이지 않음 → 기다리는 시간을 줄여보자!

SJF (Shortest Job First)

image

  • 기다리는 시간을 제일 적게 하는 알고리즘 (평균 대기 시간 측면에서)
  • 최대 단점 : 기아 문제 발생

Round Robin(RR)

image

  • 현대의 운영체제가 쓰는 방식
  • 이전의 방법들과 다르게 프로세스를 처리하다 CPU를 빼앗음 → 인터럽트를 통해서 처리

메모리 관리

image

  • 디스크에 있는 파일들은 바로 메모리에 올라가는 것이 아님
  • 바로 가상 메모리를 통해 만들어지고 당장 필요한 부분만 메모리에 올리게 됨
  • 메모리가 꽉 찼다면 스왑영역에 내쫓아야됨
  • 그렇다면 어떤 페이지들을 교체해야 하는가?
    • 메모리 관리를 통한 선택 알고리즘 활용

    image

저장장치 계층구조와 캐싱

image

  • 계층 구성하는 이유 : 속도 차이 완화하기 위해!!

연습 문제!

운영체제의 주요 목적은 무엇인가?

사용자의 편의성 증대, 자원의 효율적인 관리, CPU의 스케쥴링 제어

캐시가 유용한 두 가지 이유를 제시하라.

1. 한정된 메모리에서 반복되는 I/O 접근을 막고 캐싱을 활용하여 효율성을 높인다.
2. CPU와 I/O 사이의 속도 차이를 완화하여 더 높은 편의성을 제공한다.

핵심 키워드 : 시간적 지역성, 공간적 지역성 

캐시는 어떤 문제를 야기하는가?

만약의 캐시의 크기가 너무 작거나 비정상적으로 새로운 데이터를 계속 참조해야 할 때, 
캐시 자체에서도 스케쥴링이 이루어져 하는데 이는 더 큰 오버헤드를 야기할 수 있음.

캐시를 그냥 크게 만들면 되지 왜 디스크를 쓰나?

비용의 문제.