https://core.ewha.ac.kr/publicview/C0101020170308134855263835

거의 모든 프로그램은 CPU와 I/O를 사용하는 과정을 반복한다

CPU 스케줄링

FCFS (First-Come First-Served)

  • 프로세스가 CPU에 도착한 순서대로 처리한다
  • 공평한 것 같지만 다른 프로세스가 대기하는 시간이 길어 효율적이지는 않다.

SJF(Shortest-Job-First)

금번 CPU 사용 시간이 가장 짧은 프로세스를 제일 먼저 스케줄링

  • Minimum Average Wating Time을 보장한다
  • 효율성은 좋지만 형평성은 좋지 않다
    Starvation(기아 현상) 발생 가능
    CPU를 길게 쓰는 프로세스가 무한정 대기하는 문제 발생(프로세스가 계속 CPU 큐에 들어오기 때문)

    자원을 관리할 때에는 형평성과 효율성을 모두 고려해야 한다

RR(Round Robin)

각 프로세스는 동일 크기의 CPU 할당 시간을 가짐

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

메모리 관리

    1. 실행 파일 프로그램을 실행

    2. 디스크의 파일시스템 영역에 있는 각각 실행 파일은 프로세스가 만들어지고그 프로세스만의 메모리, 가상메모리에 올라감

    3. 그리고 그 가상메모리의 모든 프로세스가 올라가는 게 아닌 당장 필요한 부분만 물리적인 메모리에 올라감

    4. 이 물리적인 메모리가 full돼서 쫓겨난 프로세스는 동일 디스크의 스왑 영역에 보관함.
      스왑 영역은 메모리의 연장 공간 이라고 생각하면 된다.

      컴퓨터가 종료되면 디스크의 실행파일은 살아있지만 메모리(DRAM)은 휘발성으로 자동으로 사라진다. 디스크의 스왑 영역은 살아있긴 하지만 의미가 없어진다. 프로세스는 컴퓨터가 켜져 있을 때만 의미가 있다!

    • 디스크 : 비휘발성 (스왑 영역은 비휘발성이긴 하지만 의미가 없음)

    • 메모리 : 휘발성

      여기서 이 메모리 공간이 꽉 찼을 때 어떤 프로세스가 쫓겨나야 하는가?
      메모리의 프로세스 각각을 페이지.. 라고 부르는데 어떤 페이지를 메모리에서 쫓아낼 것인가?를 결정해야 한다. -> 페이징 교체 알고리즘

LRU vs LFU

  • CPU가 요청한 페이지대로 디스크에서 읽어 메모리에 쌓일 때 더 이상 공간이 부족하다면..어떤 페이지를 쫓아내야 할까?
  • 운영체제는 항상 효율을 생각한다.

    즉, 메모리 관리는 미래를 모르는 상황에서 미래에 다시 사용될 가능성이 낮은 페이지를 쫓아내는 것이 기본적인 문제

미래를 모르는 상황에서 미래를 예측하는 가장 좋은 방법은?
과거를 보는 것!

LRU

가장 오래 전에 참조한 페이지를 삭제하는 알고리즘

  • 오래 전에 사용된 페이지는 다시 사용되지 않을 가능성이 높다 라고 생각
  • 최근에 사용되었어도 앞으로는 사용되지 않을 수 있음

LFU

사용 횟수, 즉 참조 횟수가 가장 적은 페이지를 삭제하는 알고리즘

  • 예전에 자주 참조되었어도 미래에는 자주 참조되지 않을 수 있음

LRU, LFU 중에 어느 게 더 낫다 라고 말할 수 없음

디스크 스케줄링

  • 디스크는 동심원을 그리고 있으며 안쪽에서부터 바깥쪽으로 100, 99, ... 1..로 구성되어있다.
    만약 1번 트랙의 데이터를 읽어야 한다면 디스크 헤드가 1번 트랙으로 향해 데이터를 읽는다. 만약 100번 트랙의 데이터를 읽는다면 디스크 헤드가 다시 100번 트랙으로 향해 데이터를 읽는다.
  • 디스크 큐에 들어온 순서대로 작업을 처리 해줘야 한다면 데스크 헤드가 왔다갔다 하면서 시간이 많이 소요된다. → 데스크 헤드의 이동 시간이 작업 처리 시간 중에 가장 많은 시간을 차지하고 있음
    따라서 데스크 헤드의 이동시간을 효율적으로 줄이면서 디스크를 스케줄링 해야 한다. 큐에 들어온 순서대로 처리하는 게 아닌 헤드의 이동시간을 줄이는 방면으로 처리해야 한다.

디스크 접근 시간(Access time)의 구성

탐색 시간(Seek Time)

  • 헤드를 해당 트랙(실린더)으로 움직이는 데 걸리는 시간

회전지연(Rotational latency)

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

전송시간(Transfer Time)

  • 실제 데이터의 전송 시간

마그네틱을 읽어내는 시간은 실제로 짧지만 헤드의 탐색 시간(Seek Time) 이 가장 오래 걸린다. 따라서 디스크 스케줄링이 필요

FCFS

큐에 들어온 순서대로 헤드가 이동

현재 헤드의 위치가 53
큐에 이러한 요청이 들어왔을 때

  • 헤드의 이동이 길어지면서 비효율적

SSTF (Shortest Seek Time First)

헤드의 이동 시간이 가장 짧은 순서대로 탐색

현재 큐에 들어와있는 요청들 중에 누가 현재 헤드의 위치에서 Seek Time이 짧은가?

  • 하지만 Starvation 문제가 발생할 가능성이 있다. 헤드에서 가까운 위치만 계속 이동하면 멀리에 있는 위치는 도달하기까지 오래 걸리거나 영원히 도달하지 않을 수도 있음
  • 효율은 좋지만 형평성이 좋지 않다

SCAN

디스크 스케줄링으로 가장 많이 사용되는, 근간이 되는 방법

  • 헤드가 디스크의 한쪽 끝에서 다른쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다.
  • 다른 한쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 모든 요청을 처리하며 다시 반대쪽 끝으로 이동한다.


(http://blog.skby.net/%EB%94%94%EC%8A%A4%ED%81%AC-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EC%9C%A0%ED%98%95/)

  • 큐에 요청이 어디가 들어와있는가는 관심 없고 헤드는 자기 갈 길을 감!

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


(맨 위에는 CPU, main memory는 DRAM)

  • 계층이 위로 올라갈수록 빠르고 아래로 내려올수록 느리기 때문에 속도 완충이 필요
  • 계층이 위로 올라갈수록 비용이 비싸기 때문에 작은 용량만 사용, 아래로 내려올수록 비용이 저렴하기 때문에 용량을 크게 사용
  • 디스크는 비휘발성, CPU부터 메인 메모리까지 모두 휘발성
  • Primary 계층은 컴퓨터 내부 메인 메모리 계층, 즉 CPU가 직접 실행 가능
    Secondary 계층은 컴퓨터 외부 I/O 장치, CPU가 직접 접근하지 못 하고 Primary memory에 올려놓고 접근 가능

register

CPU는 register의 값을 연산하여 기계어를 읽고 CPU와 main memory의 속도 차이를 완충하기 위해 Cache Memory를 추가

Caching 기능을 이용해 계층 간 속도를 완충함.

플래시 메모리

반도체 장치
(하드디스크는 마그네틱에 기록하는 기계식 장치)
NAND형(스토리지), NOR형(임베디드 코드저장용)

  • 태블릿 pc, 카메라, ssd 등에 사용됨

플래시 메모리의 특징

장점

  • Nonvolatile 비휘발성
  • Low power consumption 전력 소모가 적음
  • Shock resistance 물리적 충격에 강함
  • Small size 크기가 작음
  • Lightweight 가벼움

단점

  • 쓰기 횟수 제약
  • 시간이 흐르면 전하가 빠져나가 1로 읽혀야할 게 0으로 읽힐 수도 있음. 데이터가 변질될 가능성
    이런 약점은 SW에서 보완

플래시 메모리의 사용 형태

  • 휴대폰, PDA 등 임베디드 시스템 구성용
  • USB용 메모리 스틱
  • 디지털 카메라 등의 SD 카드, CompactFlash, Smart Media Card
  • 모바일 장치 뿐 아니라 대용량 시스템에서 SSD(Solid State Drive)란 이름으로 하드디스크 대체 시도

운영체제의 종류

  • 서버용(Linux, ...) , pc용(Windows, Linux, Mac OS...), 스마트 디바이스용 운영체제
  • 공개 소프트웨어(Linux, Android)
  • 리눅스는 소스코드가 공개되어있는 공개 운영체제
  • SW 시장은 특정 제품이 독점할 수 있는 환경이 조성되어있는데 이 가운데 소스코드를 공개하여 필요하면 누구든지 사용 및 수정할 수 있게 하면(오픈소스 라이센스) 오히려 강력한 무기가 될 수 있다

0개의 댓글

Powered by GraphCDN, the GraphQL CDN