[운영체제] 운영체제 반효경 교수님 2017년 - 1. 운영체제 개요

June·2021년 4월 25일
1

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

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

  • 협의의 운영체제(커널)

    • 운영체제의 핵심 부분으로 메모리에 상주하는 부분
  • 광의의 운영체제

    • 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념

운영체제의 목적

  • 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상(illusion)을 제공

  • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

각각의 프로그램 혹은 사용자의 입장에서는 자기 혼자 컴퓨터를 사용한다. 누군가는 그런 프로그램들을 통제해야하는데 그 역할을 하는 것이 운영체제다. 여기서는 컴퓨터가 서버 역할을 하고 있다고 생각하면 된다.

  • 컴퓨터 시스템의 자원을 효율적으로 관리
    • CPU, 메모리, I/O 장치 등의 효율적 관리
      • 주어진 자원으로 최대한의 성능을 내도록 -> 효율성
      • 특정 사용자/프로그램의 지나친 불이익이 발생하지 않도록 -> 형평성
    • 사용자 및 운영체제 자신의 보호

dRam은 유한하다. 따라서 나중에는 하드디스크에서 필요한 부분만 dRam 올린다. 여러 프로그램이 실행될 때 어떤 프로그램을 얼만큼 올려야하는지를 운영체제가 분배한다.

컴퓨터 시스템의 구조

주의 해야할 점은 하드디스크는 외부장치다. 입력과 출력이 모두 가능한 장치다.

운영체제의 기능

컴퓨터를 키면 부팅이 일어나는데 부팅이라는 것은 운영체제가 메모리에 올라가는 것을 말한다. 운영체제 중에서도 핵심적인 부분을 커널이라 한다. 커널은 메모리에 상주하고 있다.
CPU는 매 클럭마다 메모리에 있는 기계어를 읽어 연산을 한다. 만약 디스크에서 어떤 파일을 읽어와서 실행해야 한다면, CPU가 직접 디스크에서 파일을 읽어오는 것이 아니라, I/O를 전담하는 작은 CPU(디바이스들 - 그림상 파란 동그라미) 즉 IO 컨트롤러에 요청을한다.

파일을 읽어달라고 IO컨트롤러에게 요청을 보낸 후, IO 컨트롤러는 파일을 다 읽으면 CPU에게 파일을 다 읽었다가 CPU에게 인터럽트를 보낸다. 인터럽트가 들어오면 CPU는 무조건 운영체제에게 넘어간다. 예를 들어 파일 읽기가 끝났으면 그 프로그램이 다시 실행되어도 되겠구나하고 판단한다.

프로세스의 상태

프로세스는 실행중인 프로그램을 말한다. 여기서는 초록생 동그라미가 프로세스다.

큐를 관리하는 것이 운영체제다.

interactive 프로그램은 사람과 키보드를 입력하는 그런 프로그램이어서 CPU와 IO를 번갈아간다.

유전자 분석 프로그램과 같은 scientific program은 IO없이 CPU만 주로 쓴다.

CPU 스케줄링 FCFS(First-Come First-Served)

공평은 하지만 효율적이지는 않다. p2, p3는 빨리 끝낼 수도 있는데 기다렸다.

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

이 경우 효율성은 좋지만 형평서에 문제가 생긴다. 오래 써야하는 프로그램 입장에서는, 짧은 프로그램이 자꾸 들어오면 자꾸 기다려야 하는 상황이 생긴다.

CPU 스케줄링 Round Robin (RR)

  • 각 프로세스는 동일 크기의 CPU 할당시간을 가짐
  • 할당시간이 끝나면 인터럽트가 발생하여 프로세스는 CPU를 빼앗기고 CPU 큐의 제일 뒤에 줄을 섬
  • n개의 프로세스가 CPU 큐에 있는 경우
    • 어떤 프로세스도 (n-1)*할당시간 이상 기다리지 않음
    • 대기시간이 프로세스의 CPU 사용시간에 비례

현재 가장 많이 사용되는 방식이다.

메모리 관리

운영체제가 올라가고 파일의 프로그램이 프로세스로 올라온다. 그전에 일어나는 것이 가상 메모리이다.

파일에 있는 프로그램이 바로 물리적인 메모리에 올라가는 것이 아니라 본인만의 공간인 가상 메모리에 올라간다. 이렇게 프로세스가 되어서 어떻게 형성할지 정해지고 나서 물리적인 메모리에는 당장 필요한 부분만 올려놓게 된다. 언젠가 물리적인 메모리가 다 차게되면 스왑영역에 쫓아낸다. 두 디스크는 용도가 완전히 다르다. 파일시스템은 전원이 나가도 유지되어야하고 스왑영역 (메모리에서 쫓겨난 가상 메모리를 보관하는 부분)은 메모리의 연장 공간이다. 컴퓨터가 꺼지면 스왑영역에 내용은 남아있지만 의미가 전혀 없어지게 된다.

아까 메모리가 꽉 차면 메모리 조각인 페이지를 쫓아내야하는데 어떤 페이지를 쫓아내야할까?

메모리 관리 LRU vs. LFU

1번을 요청하는데 메모리게 없기 때문에 메모리에 올린다. 그 이후에는 1을 요청해도 메모리에 있는걸로 이용 가능하다.

2번이 요청되면 역시 메모리에 없기 때문에 디스크에서 읽어다가 올린다.

이제는 메모리가 꽉 찼기 때문에 5를 올릴려면 하나를 쫓아내야한다.

메모리 관리는 미래를 모르는 상황에서 다시 사용될 가능성이 낮은 페이지를 쫓아내는 것이다.

LRU(가장 오래전에 참조한 페이지를 삭제한다) -> 1번 페이지 삭제

LFU(참조횟수가 가장 적은 페이지를 삭제한다) -> 4번 페이지 삭제

디스크 스케줄링

디스크의 시간 중 가장 많이 차지하는 것이 헤드를 이동하는 것이다. 요청대로 처리하면 효율적이지 못한 동선이 된다.

디스크 스케줄링 FCFS (First-Come First-Served)

비효율적이다. 동선의 낭비가 심하다.

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

제일 가까운 곳들만 찾아 다닌다. starvation 문제가 생긴다.

디스크 스케줄링 SCAN

현재 가장 많이 쓰인다.

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

위로 갈수록 비싸고 빠르다.

Primary는 휘발성이고 Secondary는 비휘발성이다. Primary는 CPU가 직접 접근 가능한 컴퓨터 내부이고 Secondary는 CPU가 직접 접근 불가능한 IO 장치다.

플래시메모리

하드디스크는 기계식 장치이고 플래시메모리는 반도체장치다. 대부분 NAND형을 쓴다.
플래시메모리는 전원이 나가도 날라가지 않는다. 실제 디스크를 돌리지 않으므로 전력을 적게 쓴다. 다만 쓰기 횟수에 제약이 있고, cell안의 전하 양으로 1 혹은 0으로 구분하는데 시간이 지나감에 따라 전하가 빠져나가서 데이터가 왜곡될 수도 있다.

운영체제의 종류

0개의 댓글