[1주차] 운영체제 개요

신은지·2021년 9월 12일
1

반효경 공룡 OS

목록 보기
1/8

운영체제의 개념과 역할, 구성요소, 핵심 알고리즘을 살펴본다.

운영체제의 개념

  • OS
    : 컴퓨터 HW위에 설치되어 사용자, 다른 SW, HW를 연결하는 소프트웨어 계층
    : 컴퓨터 시스템의 자원을 효율적으로 관리하는데 목적을 둔다.

  • OS의 목적
    (1) 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다
       (1)-1 : 한 대의 컴퓨터에서 여러 프로그램을 동시에 돌릴 수 있는 환경 제공
       (1)-2 : HW를 직접 다루는 복잡한 부분을 OS가 대행

    (2) 컴퓨터 시스템 자원(CPU, 메모리, I/O장치)의 효율적 관리
    : 실행 중인 프로그램에게 짧은 시간씩 CPU를 번갈아 할당 & 메모리 공간을 적절히 분배
    : 하드웨어는 한정된 자원을 가지고 있으므로, OS는 이 자원들을 관리하는 것에 큰 목적을 둔다.
       (2)-1 : 효율성 - 주어진 자원으로 최대한의 성능 내기
       (2)-2 : 형평성 - 특정 사용자/프로그램의 지나친 불이익이 발생하지 않도록
       (2)-3 : 사용자와 OS 자신의 보호

  • 컴퓨터 시스템 구조
    (1) 컴퓨터 내부 : CPU, 메모리
    (2) 입출력 디바이스 (I/O) : 디스크, 키보드, 모니터 등


운영체제의 기능

(1) CPU 스케줄링
: CPU는 짧은 시간 간격으로 계속 프로그램에게 할당되므로, CPU를 특정 프로그램이 무한정으로 쓰지 못하도록 CPU의 사용권을 관리한다. OS 단독이 아니라 HW와 함께 구현한다.

(2) 메모리 관리 : 한정된 메모리를 나누어 사용한다.

(3) 디스크 스케줄링 : 디스크에 들어온 요청의 처리 순서를 정한다. 순서대로 처리하는 것은 비효율적이기 때문에 필요.

(4) 인터럽트, 캐싱 : 빠른 CPU와 느린 I/O 장치간 속도차의 극복 목적.
    (4)-1 캐싱 : 메모리와 디스크 사이의 속도 차이를 줄이기 위해 중간 단계를 두는 것. 메모리 어딘가에 보관했다가 같은 요청 들어왔을때 디스크까지 가지 않고 꺼내오는 식.
    (4)-2 인터럽트 : CPU가 당장 일 할 수 있는 애를 찾을때 나 지금 일 할 수 있다고 알리는 역할. 인터럽트가 들어오면 CPU는 OS에게 넘어가 다음 업무에 할당된다.

※ 부팅 : OS가 메모리에 올라가서 컴퓨터 꺼지기 전까지 계속 실행된다.
※ 커널 : OS의 핵심적인 부분. 컴퓨터에서 언제나 올라가있다.
※ 디스크 스케줄링은 엘리베이터 스케줄링과 유사하다. 그때그때 효율적인 서비스를 구현하는 것이 목표.

프로세스의 상태

  • 프로세스 : 실행 중인 프로그램
  • CPU 큐 : CPU에서 기계어 실행 중일 때, OS는 CPU 큐를 만들어 애들을 줄세워둔다. 그리고 CPU 스케줄링을 통해 관리
  • 디스크에서 읽어야 하는 친구라면?
    : 오래 걸리니까 CPU 큐에서 쫓겨나 디스크 큐에 들어간다. 끝나면 디스크 큐에서 나와서 CPU 큐에 다시 들어간다.
  • 사람과의 상호 작용 - CPU와 I/O 반복 작업
    : 사람이 키보드를 사용하면 인터럽트를 통해 키보드 입력이 들어옴을 알리고, OS는 키보드 입력 데이터를 메모리로 들여온다.
  • 과학적 응용 프로그램 - CPU를 엄청 오래 쓰다가 가끔 I/O 한번씩

CPU 스케줄링

여러 프로그램 중 누구에게 먼저 CPU 사용권을 줄 것인가?

  • 입력 - 연산 - 출력 - 피드백의 반복.
  • CPU 스케줄링의 방법
    (1) FCFS(First-Come First-Served) : 먼저 온 친구 먼저 처리해주기. 그림같은 상황에서 효율적이지 않다. CPU를 오래 쓰는 프로세스가 먼저 왔는지 나중에 왔는지에 많이 갈림.

    (2) SJF (Shortest-Job-First) : FCFS의 문제를 보완. CPU를 제일 짧게 쓰는 프로세스에게 먼저 스케줄을 준다.
        (2)-1 장점 : 평균 대기시간은 제일 짧아 효율성이 좋다(Optimal).
        (2)-2 단점 : 형평성이 떨어진다. CPU 사용시간이 긴 프로세스는 영원히 기다리기만 해야 하는 Starvation(기아 현상)이 발생할 수 있다.

    (3) RR (Round Robin) : FCFS, SJF의 문제점 보완. 동일 크기의 CPU 할당 시간을 주고, 프로세스들이 짧은 시간 간격으로 CPU를 번갈아 사용하게 한다.
        (3)-1 장점 : 본인의 CPU 사용량에 비례해서 대기시간이 길어져 공정하며, 어떤 프로세스도 오래 기다릴 필요가 없다.
        (3)-2 단점 : CPU를 빼앗는 방법이므로, 하드웨어의 도움을 받아 인터럽트를 활용해야한다.

메모리 관리

메모리는 휘발성 매체이므로, 전원을 켜면 실행 파일들이 본인만의 메모리 공간인 가상메모리를 거쳐 실제 물리적 메모리에 올라가 프로세스가 된다.

가상 메모리가 가득 차서 쫓겨나면 당장 필요한 프로세스는 메모리에 올라가고, 그렇지 않다면 전원이 나가더라도 유지되는 스왑영역이라는 디스크로 빠져 저장된다.

  • 페이지 : 쪼개지는 단위
  • 메모리 관리를 위해 페이지를 정하는 것이 필요

5번 페이지 요청되면 뭐 하나는 쫓겨나야 한다! 이때 OS는 효율성을 고려해서 쫓아낼 친구를 정한다.
: 쫓겨나는 친구가 다음에 다시 호출되면 손해니까, 메모리 관리를 할때는 기본적으로 미래에 사용될 가능성이 낮은 페이지를 쫓아낸다.
: 미래 예측? - 지금까지의 내용을 기반으로 추측.
    - LRU : 가장 오래 전에 참조한 페이지를 삭제한다. 최근에 사용한 페이지는 재사용성이 높고, 오래 전에 쓴 친구는 재사용성이 낮을 것이기 때문.
    - LFU : 사용된 횟수를 기반으로, 참조 횟수가 제일 적은 페이지를 삭제한다.


디스크 스케줄링

  • CPU를 쓰고 나서 디스크에 요청이 들어오면 디스크 큐에 쌓인다.

  • 디스크 접근 시간의 구성 (1 > 2 > 3으로 길다)
    (1) 탐색 시간 (Seek time) : 디스크 헤드가 움직이는 시간.
    (2) 회전 지연 (Rotational latency) : 헤드가 원하는 섹터에 도달하는 시간.
    (3) 전송 시간 (Transfer time) : 실제 데이터 전송 시간

  • 디스크 스케줄링의 목적
    : 탐색 시간을 줄이자!

  • 디스크 스케줄링의 종류
    (1) SSTF (Shortest Seek Time First) : 큐에 들어온 친구들 중 누가 제일 seek time이 짧은가? 누가 제일 가깝냐?
        - 장점 : 효율성이 좋다.
        - 단점 : starvation 문제 발생 가능 (형평성)

(2) SCAN : 디스크 스케줄링의 근간이 되는 방법.


저장장치 계층 구조와 캐싱

계층 간 속도 차이를 줄이기 위해 저장 장치에 계층 구성을 한다.

  • 캐시 메모리 : 메모리와 레지스터의 속도 차이를 줄이기 위해 사용

  • 캐싱의 원리
    : 데이터가 필요하면 올리고 올리고 올려서 쓴다
    : 저장을 해야 하면 내리고 내리고 내려서 저장한다
    => 다시 쓸 때 또 올라가고 내려가면 오래 걸리니까, 캐싱을 통해 중간에서 처리하자! 따라서 많이 쓸 친구를 위주로 캐싱에 저장한다.

profile
호그와트 장학생

0개의 댓글