본문 바로가기
개발 일지

TIL(24.03.21)

by 만식 2024. 3. 21.
저번 TIL CPU와 메모리 정리를 이어서
.
.
.

출처 : https://spartacodingclub.kr/nb?utm_source=google&utm_medium=sa&utm_campaign=google_sa_general&utm_term=%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD&gcl_keyword=%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD&gcl_network=g&gad_source=1&gclid=CjwKCAjwte-vBhBFEiwAQSv_xW-nnJ1RPRH14fZD36S4wqFxBcJF-4Ytnwb82RuGpStb-Fa46wqphhoCdm8QAvD_BwE
 

스파르타 국비지원 | 내일배움카드로 0원에 코딩 공부하기

코딩교육 1위 스파르타코딩클럽의 강의를 0원에 수강하세요! 국민내일배움카드 발급 가능 대상자라면 누구나 가능합니다.

spartacodingclub.kr

 

SJF(Shorted Job First)

특징

  • 수행시간이 가장 짧다고 판단되는 작업 먼저 수행
  • FCFS 보다 평균 대기 시간 감소, 짧은 작업에 유리

CPU버스트 타임이 가장 짧은, 최단작업을 우선 스케쥴링하는 알고리즘

  • 가장 짧은 평균 대기 시간을 달성할 수 있음
  • 만약 CPU 버스트 시간이 동일하다면 FCFS방식을 따름
  • 선점형인 경우엔 위와 같이 진행이 되지만 비 선점형일 경우는 최소 잔여 시간우선법칙을 따름

현재 CPU에 할당된 프로세스의 남은 잔여시간과, 새로 들어온 프로세스의 CPU버스트 타임을 비교하여 더 적은 프로세스에게 할당하게끔 함

 

단점이라면, 다음 프로세스의 버스트시간을 계산하기 어려움

 

HRD(Highest Response-retio Next)

특징

  • 우선순위를 계산하여 점유 불평등 보완(SJF 단점 보완)
  • 우선순의 = (대기시간 + 실행시간)/(실행시간)

스케쥴링 동작시점

프로세스의 상태 변화와 스케쥴링

 - 스케쥴링 알고리즘에 따라 프로세스들은 상태변화가 일어나며 준비/수행 상태일 때 CPU를 사용하게 됨

  1. 수행 -> 대기 (Running->Waiting) : I/O요청이 발생하거나, 자식 프로세스가 종료 대기를 할 때
  2. 수행 -> 종료 (Running -> Terminate) : 프로세스를 종료시켰을 때
  3. 수행 -> 준비 (Running-> Ready) : 인터럽트가 발생했을 때
  4. 대기 -> 준비 (Waiting -> Ready) : I/O가 완료되었을 때

1,2은 프로세스가 스스로 CPU를 변환하기에 비선점 스케쥴링이 발생

3,4는 프로세스에서 CPU를 강제로 할당(회수) 해야 하므로 선점 스케쥴링 발생

 

캐시란?

  • 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄여줌
  • 데이터 접근에 오래 걸리는 경우를 해결, 다시 계산하는 시간을 절약
  • 캐시는 계층 사이에 속도차이를 해결하기 위한 임시 저장소

지역성이란

  • 자주 사용되는 데이터 특성
  • 캐시를 직접 설정할 때는 자주 사용되는 데이터를 기반으로 설정해야 함, 이러한 특성을 지역성이라 함

시간 지역성

  • 최근 사용한 데이터에 다시 접근하려는 특성

공간 지역성

  • 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성

캐시히트

  • 캐시에 원하는 데이트를 찾은 것
  • 위치도 가깝고, CPU 내부버스를 기반으로 작동하여 빠름
  • ->캐시히트를 하게 되면 해당 데이터를 제어장치를 거침

캐시미스

  • 해당 데이터가 캐시에 없으면 주메모리에 가서 데이터를 찾아오는 것
  • 메모리를 가져올 때 시스템 버스를 기반으로 작동하기에 느림

캐시 매핑

  • CPU의 레지스터와 주메모리(RAM) 간에 데이터를 주고받을 때를 기반
  • 주 메모리에 비해 굉장히 작은 레즈시터가 캐시 계층으로써 역할 -> 매핑이 중요

직접 매핑

 - 메모리가 1-100이 있고 캐시가 1-10이 있다면 1:1-10, 2:1-20... 와 같이 매핑

 - 처리가 빠르지만 충돌 발생이 잦음

 

연관 매핑

 - 순서를 일치하지 않고, 관련 있는 캐시와 메모리를 매핑

 - 충돌이 적지만 모든 불록을 탐색하여 속도가 느림

 

집한 연관 매핑

 - 직접 매핑과 연관 매핑을 합쳐 놓은 것

 - 순서는 일치하지만 집합을 둬서 저장하며 블록화 되어 있어 검색이 효율적

 

메모리 할당

연속 할당과 불연속 할당으로 나뉨

 

 - 연속할당

  • 메모리에 '연속적으로' 공간을 할당하는 것을 말함
  • 고정 분할 방식과 가변 분할 방식으로 나뉨

 - 고정 분할 방식

  • 메모리를 미리 나누어 관리하는 방식
  • 한계 : 내부 단편화 발생

 - 가변 분할 방식

  • 매 시점 프로그램의 크기에 맞게 동적으로 메로리를 나눠 사용하는 방식
  • 종류 
  1. 최초적함 : 위에서부터 바로 보이는 공간에 바로 할당
  2. 최적적합 : 가장 크기에 맞는 공간부터 채우고 나머지를 할당
  3. 최악적합 : 가장 크기가 큰 공간에부터 채우고 나머지 할당
  • 한계 : 내부 단편화가 발생하지 않음
  • 외부 단편화 발생

이유는?

  • 최초적함(First-fit)

 - 메모리 내에서 빈 공간 중 가장 먼저 발견되는 첫 번째 공간에 블록을 할당

 - 블록 크기와 공간 크기가 일치하지 않을 경우, 남은 공간을 새로운 빈 공간으로 남김

 - 초기 메모리 관리를 위한 간단한 방법이지만, 외부 조각화가 발생할 수 있음

  • 최적적함(Best-fit)

 - 메모리 내에서 블록 크기와 가장 근접한 크기를 가진 가장 작은 빈 공간을 찾아 할당

 - 블록 크기와 공간 크기가 일치하지 않을 경우, 남은 공간을 새로운 빈 공간으로 남김

 - 내부 조각화는 줄일 수 있지만, 메모리를 탐색하는 데 시간이 걸리므로 성능 저하가 있을 수 있음

  • 최악적합(Worst-fit)

 - 메모리 내에서 가장 큰 빈 공간을 찾아 블록을 할당

 - 할당된 블록 크기와 공간 크기가 일치하지 않을 경우, 외부 조각화가 발생

 - 내부 조각화가 적지만, 빈 공간을 찾는 데 시간이 걸리므로 성능 저하가 있을 수 있음

 

내부 단편화

  • 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상
  • 들어갈 수 있는 공간보다 프로그램이 작아서 공간이 남아버리는 것

외부 단편화

  • 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공감이 많이 발생하는 현상
  • 들어갈 공간보다 들어갈 것이 더 커서 들어가지 못하고 남아버리는 것

불연속 할당

단점

 - 메모리 공간 할당과 해제 시의 오버헤드가 발생할 수 있음

 - 메모리 공간이 분산되어 있기 때문에, 프로세스가 불연속 공간에 할당될 경우 프로세스의 페이지 교체와 같은 작업이 더 복잡해질 수 있음 (교체 알고리즘 최적화 필요)

 

운영체제에서 불연속 할당을 사용하는 3가지 방법

메모리를 동일한 크기의 페이지로 나누고 프로그램마다 페이지 테이블을 두어 이를 통해 메모리에 프로그램을 할당

  1. 페이징
  2. 세그멘테이션
  3. 페이지드 세그멘테이션 기법 존재

페이징

  • 동일한 크기의 페이지 단위 나누어 메모리의 서로 다른 위치에 프로세스를 할당
  • 빈데이터(홀)의 크기가 균일하지 않은 문제가 없어지지만 주소 변환이 복잡

세그멘테이션

  • 의미 단위인 세그먼트로 나누는 방식
  • 코드와 데이터 등을 기반으로 나눌 수 있으며, 함수 단위로 나눌 수도 있음을 의미함
  • 공유와 보안 측면에서 좋음
  • 빈데이터(홀) 크기가 균일하지 않는 문제 발생

페이지드 세그멘테이션

  • 공유나 보안은 세그먼트로 나눔
  • 물리적 메모리는 페이지로 나누는 방식

 

페이지 교체 알고리즘은 다음 시간에....


 

'개발 일지' 카테고리의 다른 글

TIL(24.03.28)  (1) 2024.03.28
TIL(24.03.22)  (2) 2024.03.22
CPU와 메모리 심화  (1) 2024.03.20
CPU와 메모리  (1) 2024.03.19
CS 강의 1강 정리  (2) 2024.03.18