[운영체제] 운영체제 개요

한결·2023년 3월 15일
0

CS

목록 보기
1/34
post-thumbnail

KOCW.이화여자대학교.반효경.운영체제
위 강의를 바탕으로 학습 및 정리했습니다


운영체제(Operating System, OS)란 ?

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

컴퓨터 시스템의 구조

  • 컴퓨터 내부 : CPU, 메모리 등
    • 운영체제의 역할
      • CPU 스케줄링
        • 어떤 프로그램에 얼마동안 CPU 사용권을 줄 것이냐
        • CPU 사용권을 뺏는건 사실 운영체제만으로는 안되고 하드웨어적인 요소가 개입되어 같이 구현
      • 메모리 관리
        • 한정된 메모리를 어떻게 쪼개어 쓰는가
  • 입출력(Input/Output, I/O) 디바이스
    • 매우 빠른 CPU와 I/O 장치간에는 속도차가 존재
      • 케싱
        • 같은 데이터를 다시 요청 시 굳이 디스크로 다시 안가고 메모리에 저장해놧다가 꺼내옴
      • 인터럽트
        • 예)
        1. CPU가 A프로그램 컨트롤러에게 처리 요청 후 다른 프로그램 처리
        2. A프로그램이 요청받은 처리를 완료 후 인터럽트
        3. CPU가 인터럽트 체크 후 CPU스케줄링
    • 하드디스크 : 입출력 둘다함
      - 디스크 스케줄링
      - I/O에도 요청이 여러 프로그램으로 부터 도착함
      - 요청 순서대로 처리해도 되지만 이것은 매우 비효율적
      - 효율적으로 처리하기 위해 요청들을 스케줄링함

CPU 스케줄링

First-Come First-Served, FCFS

  • 프로세스의 도착 순서대로 CPU 권한을 줌
    • 먼저 도착한 프로세스가 종료 될 때까지 계속 CPU를 사용하면 효율적이지 않다 -> 다음에 도착한 프로세스가 기다리는 시간을 줄이자 -> Shortest-Job-First, SJF

Shortest-Job-First, SJF

  • CPU 사용시간이 가장 짧은 프로세스를 제일 먼저 스케줄
  • minimum average waiting time을 보장해줌 -> 기다리는 시간이 가장 짧음 (기다리는 시간이 적어질 때 == 큐에 프로세스가 가장 적을 때 -> 사용기간이 짧은 시간대로 큐에 넣어줌)
  • 효율성은 높지만 형평성에 문제가 생김
    -> 사용기간이 긴 프로세스는 CPU를 계속 못쓰게 되는 문제가 발생 == Startvation(기아현상)

위의 두 방법은 현사 CPU를 사용하고 있는 프로세스가 완료될 때까지 CPU를 뺏지는 않았음

Round Robin, RR

  • 현재 가장 많이 사용되고 있는 방법
  • 각 프로세스는 동일 크기의 CPU할당 시간을 가짐 (예를 들어, 프로세서가 완료될 때까지 30초가 걸리더라도 CPU할당 시간이 1초라면 1초후엔 무조건 내놓아야함)
  • 즉, 짧은 시간 간격으로 CPU를 번갈아 사용하도록 함
    • n개의 프로세스가 큐에 있는 경우
      어떤 프로세스도 (n-1)*할당시간 이상 기다리지 않는다
  • 장점
    • CPU를 길게 쓰려는 프로그램은 큐에 있는 시간이 길어지고, 짧게 쓰려는 프로그램은 큐에 있는 시간이 짧아진다
      == 대기 시간이 프로세스의 CPU사용시간에 비례

메모리 관리

  • 디스크
    • 디스크에 실행파일 형태로 프로그램이 존재
    • 파일시스템
      • 전원이 나가더라도 내용이 유지되어야 하는 부분
    • 스왑영역
      • 메모리 공간이 없을 때 보관하는 부분 == 메모리의 연장공간
      • 비휘발성 매체를 사용하고 있긴 하지만 전원이 꺼졌을 때 비워져야함
  • 메모리
    • 휘발성 매체이므로 비어있음

    • 전원을 켜면 운영체제가 메모리에 올라가서 실행이됨

    • 디스크의 실행파일을 켜면 메모리에 올라가서 프로세스가 됨

      • 물리적인 메모리에 올라가기전 가상메모리 단계를 거침
      1. 프로그램을 실행하면 메모리의 독자적인 주소가 매겨짐

      2. 이것이 바로 물리적인 메모리에 올라가지 않고

      3. 본인만의 메모리 공간을 형성함 (가상메모리)

      4. 통채로 메모리에 올라가게되면 현재 사용하지 않는 부분도 메모리에 올라가게 됨
        -> 메모리 낭비
        -> 메모리에는 가상메모리에서 가장 필요한 부분만 쪼개서 올라가게 됨

    • 메모리가 꽉차있을 때

      • 새로운 부분을 메모리에 올리려면 현재 메모리에 있는 프로세스를 쫒아내야함
        -> 쫒아낸 프로세스는 디스크의 스왑영역으로 가게됨
      • 어떤 페이지를 쫒아 낼 것인가? 를 결정해야함 -> LRU vs LFU

LRU vs LFU

  • 메모리에 1,2,3,4 프로세스 모두 들어가서 꽉찼다 5번 프로세스를 실행시키고 싶을때 1,2,3,4 중 어느 프로세스를 뺄것인가?
    -> 효율성을 생각해야함

    -> 미래에 다시 사용될 가능성이 높은 페이지를 쫒아내지말고 사용할 가능성이 낮은 페이지를 쫒아내자
    -> 이를 예측하기 위해 과거를 통해 미래 예측

LRU

  • 가장 오래 전에 사용된 페이지를 뺌
  • 메모리 뿐만 아니라 다른 여러 곳에도 사용됨

LFU

  • 사용된 횟수가 가장 적은 페이지를 뺌

디스크 스케줄링

  • 디스크 접근 시간에 가장 많은 시간을 차지하는 것
    == 디스크 헤드의 이동시간
    -> 따라서, 디스크 헤드의 이동이 가장 적도록 처리해야함 (디스크 스케줄링의 필요성)
  • 디스크 접근 시간의 구성
    • 탐색시간 (Seek time)
      • 헤드를 해당 트랙으로 움직이는데 걸리는 시간
      • 디스크 헤드가 이동하는 시간
    • 회전지연 (Rotational latency)
      • 헤드가 원하는 섹터에 도달하기까지 걸리는 시간
      • seek time 다음으로 많이 걸리는 시간
    • 전송시간 (Tranfer time)
      • 실제 데이터의 전송시간

Shortest Seek Time First, SSTF

  • 가장 가까운 거리부터 이동
    -> 멀리있는 곳으로 계속 이동하지 못하는 문제발생
    -> starvation
  • 효율성은 있지만 형평성이 없음

SCAN

  • 헤드가 디스크 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 실목에 있는 모든 요청을 처리
  • 누군가 영원히 배제되는 문제 없음
  • 엘레베이터도 이러한 알고리즘

저장장치 계층구조와 케싱

  • 빠른 CPU와 느린 장치의 속도 차이를 완충해야함
  • 하드디스크 : 비휘발성
  • DRAM : 휘발성
  • 속도차이 완충을 위해 계층 구조를 형성

플래시메모리

  • 플래시 메모리
    • 반도체 장치 (하드디스크 : 마그네틱)
    • NAND(스토리지), NOR(임베디드 코드 저장용)
  • 특징
    • 비휘발성
    • 전력소모가 적음
    • 물리적 충격에 강함
    • 크기가 작음
    • 가벼움
    • 쓰기 횟수 제약
  • 플래시 메모리의 사용형태
    • 모바일 장치
    • 모바일 장치 뿐아니라 대용량 시스템에서 SSD라는 이름으로 하드디스크 대체 시도
    • cell 안에 들어가있는 전하의 양으로 0,1 구분
      -> 시간이 흐르면 전하가 빠져나감
      -> 시간이 지나면 데이터 손실
      -> 소프트웨어로 손실이 되지 않도록 플래시 메모리를 관리

운영체제의 종류

  • 서버용, PC용, 스마트 디바이스용 운영체제
  • 공개 소프트웨어
    • 소스코드가 공개된 것임
    • 리눅스, 안드로이드

0개의 댓글