1주차. 운영체제 개요

나우히즈·2024년 7월 8일

OS

목록 보기
1/27

운영체제란 무엇인가

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

운영체제의 목적

  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
    - 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상(illusion)을 제공
    - 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행.
  • 컴퓨터 시스템의 자원을 효율적으로 관리 하는 자원 관리자다.
    - CPU, 메모리, I/O 장치 등의 효율적 관리
    - 주어진 자원으로 최대한의 성능을 내도록 -> 효율성
    -> 실행중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당
    - 특정 사용자/프로그램의 지나친 불이익이 발생하지 않도록 -> 형평성
    -> 실행중인 프로그램들에 메모리 공간을 적절히 분배
    - 사용자 및 운영체제 자신의 보호

CPU 스케줄링

CPU 스케줄링 - FCFS

  • CPU를 사용하기 위해 큐에 들어있는 프로그램들에게 가용 CPU 배분을 적절히 해주는 것이 운영체제 역할
  • 먼저 온 프로그램에 먼저 서비스를 제공한다 -> FCFS
  • 선착순 큐에 들어온 순서대로 사용하고자 하는 시간 만큼을 프로그램에 제공한다.
  • CPU 사용 시간이 긴 프로그램이 먼저 오면 프로세스가 모두 처리되는데 필요한 평균 시간이 매우 길어짐.
  • CPU waiting time variation이 매우 넓다.

CPU 스케줄링 - SJF(Shortest-Job-First)

  • 금번 CPU 사용시간이 가장 짧은 프로세스를 제일 먼저 스케줄
  • 이 방법은 "Minimum average waiting time"을 보장한다.
  • 대기시간 측면에서 가장 optimal한 방식.
  • Starvation : 형평성 부분에서 문제가 발생할 수 있음. CPU를 길게 써야하는 프로그램이 계속 기다려야하는 문제 발생.

🌟 CPU 스케줄링 - RR(Round Robin)

  • 각 프로세스는 동일 크기의 CPU 할당시간을 가짐
  • 할당시간이 끝나면 인터럽트가 발생하여 프로세스는 CPU를 빼앗기고 CPU 큐의 제일 뒤에 줄을 섬
  • n개의 프로세스가 CPU 큐에 있는 경우
    -> 어떤 프로세스도 (n-1) * 할당시간 이상 기다리지 않음
    -> 대기시간이 프로세스의 CPU 사용시간에 비례
  • CPU를 빼앗는 방법이 필요하다. 운영체제 혼자서는 못하고 하드웨어 차원에서 인터럽트를 발생시켜야한다.
  • 누구든 CPU를 오래 기다리지 않아도 된다. 짧은 시간씩 번갈아 쓰게 하는 현대적 스케줄링법.

메모리 관리

  • 기본적으로 컴퓨터가 실행되면, 하드웨어와 소프트웨어를 연결할 운영체제가 메모리에 올라감.
  • 디스크 상의 실행파일을 실행하면, 바로 메모리 상에 실리는 것이 아니라 가상메모리에 먼저 어떤 프로세스의 구조로 메모리를 점유할지를 0번지부터 메모리를 설계하게 됨.- 이후 당장 필요한 부분만(사용할 부분만) 물리적인 메모리 상에 올리고 동작.
  • 물리적인 메모리가 100% 차게 되면, 새로운 부분을 메모리에 올리고자 할 때, 기존에 메모리에 존재하던 부분은 디스크의 스왑영역으로 쫓겨나게 된다.
  • 스왑영역 : 메모리의 연장 공간. 전원이 꺼지더라도 디스크의 특성 상 데이터가 남아있지만 프로세스가 종료되어 의미 없는 부분이 된다.
    -> 무엇을 기준으로 어떤 페이지를 가득 찬 메모리에서 쫓아낼 것인가?
    : 효율성을 기준으로 운영체제는 동작한다. 미래를 모르는 상황에서 미래에 다시 사용될 가능성이 높은 페이지보다는 가능성이 낮은 페이지를 쫓아내야 효율적일 것.

메모리의 Page 란?
메모리에서 페이지(Page)란 운영체제가 메모리를 관리하는 기본 단위입니다.

  • 크기: 페이지는 일반적으로 4KB, 8KB, 16KB 등의 고정된 크기를 가집니다. 이를 통해 메모리 관리가 효율적으로 이루어집니다.

  • 주소 매핑: 프로세스가 사용하는 논리적 주소는 실제 물리적 주소로 매핑됩니다. 이때 페이지 단위로 매핑이 이루어집니다.

  • 페이징: 프로세스가 사용하는 메모리 공간이 물리적 메모리보다 클 경우, 일부 페이지는 보조 기억장치(디스크 - 스왑영역)로 옮겨지고 필요할 때 다시 메모리로 가져오는 기법을 페이징이라고 합니다.

  • 페이지 테이블: 운영체제는 논리적 주소와 물리적 주소 간의 매핑 정보를 페이지 테이블에 저장합니다. 이를 통해 프로세스가 메모리에 접근할 때 실제 물리적 주소로 변환할 수 있습니다.

  • 페이지 교체 알고리즘: 물리적 메모리가 부족할 때, 운영체제는 페이지 교체 알고리즘을 사용하여 메모리에서 제거할 페이지를 선택합니다. 대표적인 알고리즘으로는 FIFO, LRU, Clock 알고리즘 등이 있습니다.

LRU vs LFU

  • LRU : 가장 오래 전에 참조 페이지를 삭제
  • LFU : 참조횟수가 가장 적은 페이지를 삭제
    두 가지 방법이 대표적인 메모리 관리법이나, 두 방법의 문제를 보완한 다른 방법들이 생겨나고 있다.
    모두 문제점이 명확하다.

디스크 스케줄링

  • 파일을 읽거나 적기 위해선, 디스크 큐에 순서가 등록되게 된다.
  • 디스크 헤드가 움직이면서 해당하는 트랙의 데이터를 읽게 된다.
  • 디스크 헤드가 움직이는 시간이 사용시간에 큰 부분을 차지함 -> 헤드의 이동을 효율적으로 스케줄링.

디스크 접근 시간의 구성

탐색 시간(seek time)

  • 헤드를 해당 트랙으로 움직이는데 걸리는 시간

회전지연(Rotational latency)

  • 헤드가 원하는 섹터에 도달하기까지 걸리는 시간

전송시간(Transfer time)

  • 실제 데이터의 전송 시간

Seek time을 줄이는 것이 필요하다. -> 디스크 스케줄링이 등장

디스크 스케줄링 - FCFS

  • 큐에 들어온 순서로 디스크 헤드가 이동.
  • 다소 비효율적.

디스크 스케줄링 - SSTF (Shortest Seek Time First)

  • 현재위치에서 가장 짧은 Seek time을 가진 트랙을 먼저 가서 처리한다.
  • 이동거리는 FCFS에 비해 짧아지나, Starvation 문제가 발생할 수 있다.
  • 멀리있는 위치는 지나치게 오래 대기하게 됨.

🌟 디스크 스케줄링 - SCAN

  • 헤드는 항상 자기 갈 길을 가면서, 중간에 요청들어온 데이터를 처리하고 지나간다.
  • 디스크의 한쪽 끝에서 다른 끝으로 이동하면서 가는 길목에 있는 모든 요청을 처리.
  • 다른 한쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동
  • Starvation 문제 해결. 특정 위치라고 해서 지나치게 차별받는 일이 없다.
  • 헤드의 이동거리가 짧아진다는 가장 큰 장점.
  • 엘리베이터 스케줄링과 동일한 방식

저장장치 계층구조와 캐싱(caching)

빠른 CPU와 느린 I/O 장치간 속도차를 어떻게 극복하지?
-> "인터럽트", "캐싱"

🌟 캐싱

CPU - Memory - Disk 의 구조를 보아왔음.

  • CPU 내부엔 레지스터라는 장치에서 기계어를 저장해두고 CPU가 꺼내서 사용한다.
  • CPU - Memroy 간 속도 차이 극복을 위해 캐시메모리를 둔다.
  • 레지스터 ~ 메모리는 휘발성, 이외 디스크류는 비휘발성의 특징을 가짐.
  • Primary : 메인 메모리 계층. CPU가 직접 실행 가능한 영역.
  • Secondary : CPU가 직접 실행 불가. 메모리에 올려서 사용해야하는 부분.

왜 계층 구성을 할까?

-> 속도차이를 완충하기 위함.
필요한, 자주 사용하는 데이터들을 상위 계층에 저장해서 빠르게 꺼내쓸 수 있게끔 한다. 이것을 "캐싱"이라 함.

  • Caching : copying information into faster storage system.
  • 물론 처음 사용하는 데이터를 디스크에서 가져올 때는 느리지만, 재사용되게 될 때 시간 절약의 장점이 있음.

플래시 메모리(번외)

  • NAND(스토리지) 저장장치.
  • 비휘발성. 낮은 전력 소모, 작은 사이즈, 가벼운 무게, 쇼크 저항성, 쓰기 횟수 제약이 있다.
  • 현재는 SSD 로 하드디스크를 대체하였음.
  • 시간 흐름에 따라 전하 방전으로 데이터 손실이 발생할 수 있다.

운영체제의 종류

  • 서버용, PC용, 스마트디바이스용 운영체제
  • Linux, Windows, MacOS 등.
  • Linux는 공개된 오픈 소스.

2개의 댓글

comment-user-thumbnail
2024년 7월 8일

몰랐던 개념들 시캉님 덕분에 잘 얻어갑니다~!!

1개의 답글