저번 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를 사용하게 됨
- 수행 -> 대기 (Running->Waiting) : I/O요청이 발생하거나, 자식 프로세스가 종료 대기를 할 때
- 수행 -> 종료 (Running -> Terminate) : 프로세스를 종료시켰을 때
- 수행 -> 준비 (Running-> Ready) : 인터럽트가 발생했을 때
- 대기 -> 준비 (Waiting -> Ready) : I/O가 완료되었을 때
1,2은 프로세스가 스스로 CPU를 변환하기에 비선점 스케쥴링이 발생
3,4는 프로세스에서 CPU를 강제로 할당(회수) 해야 하므로 선점 스케쥴링 발생
캐시란?
- 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄여줌
- 데이터 접근에 오래 걸리는 경우를 해결, 다시 계산하는 시간을 절약
- 캐시는 계층 사이에 속도차이를 해결하기 위한 임시 저장소
지역성이란
- 자주 사용되는 데이터 특성
- 캐시를 직접 설정할 때는 자주 사용되는 데이터를 기반으로 설정해야 함, 이러한 특성을 지역성이라 함
시간 지역성
- 최근 사용한 데이터에 다시 접근하려는 특성
공간 지역성
- 최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성
캐시히트
- 캐시에 원하는 데이트를 찾은 것
- 위치도 가깝고, CPU 내부버스를 기반으로 작동하여 빠름
- ->캐시히트를 하게 되면 해당 데이터를 제어장치를 거침
캐시미스
- 해당 데이터가 캐시에 없으면 주메모리에 가서 데이터를 찾아오는 것
- 메모리를 가져올 때 시스템 버스를 기반으로 작동하기에 느림
캐시 매핑
- CPU의 레지스터와 주메모리(RAM) 간에 데이터를 주고받을 때를 기반
- 주 메모리에 비해 굉장히 작은 레즈시터가 캐시 계층으로써 역할 -> 매핑이 중요
직접 매핑
- 메모리가 1-100이 있고 캐시가 1-10이 있다면 1:1-10, 2:1-20... 와 같이 매핑
- 처리가 빠르지만 충돌 발생이 잦음
연관 매핑
- 순서를 일치하지 않고, 관련 있는 캐시와 메모리를 매핑
- 충돌이 적지만 모든 불록을 탐색하여 속도가 느림
집한 연관 매핑
- 직접 매핑과 연관 매핑을 합쳐 놓은 것
- 순서는 일치하지만 집합을 둬서 저장하며 블록화 되어 있어 검색이 효율적
메모리 할당
연속 할당과 불연속 할당으로 나뉨
- 연속할당
- 메모리에 '연속적으로' 공간을 할당하는 것을 말함
- 고정 분할 방식과 가변 분할 방식으로 나뉨
- 고정 분할 방식
- 메모리를 미리 나누어 관리하는 방식
- 한계 : 내부 단편화 발생
- 가변 분할 방식
- 매 시점 프로그램의 크기에 맞게 동적으로 메로리를 나눠 사용하는 방식
- 종류
- 최초적함 : 위에서부터 바로 보이는 공간에 바로 할당
- 최적적합 : 가장 크기에 맞는 공간부터 채우고 나머지를 할당
- 최악적합 : 가장 크기가 큰 공간에부터 채우고 나머지 할당
- 한계 : 내부 단편화가 발생하지 않음
- 외부 단편화 발생
이유는?
- 최초적함(First-fit)
- 메모리 내에서 빈 공간 중 가장 먼저 발견되는 첫 번째 공간에 블록을 할당
- 블록 크기와 공간 크기가 일치하지 않을 경우, 남은 공간을 새로운 빈 공간으로 남김
- 초기 메모리 관리를 위한 간단한 방법이지만, 외부 조각화가 발생할 수 있음
- 최적적함(Best-fit)
- 메모리 내에서 블록 크기와 가장 근접한 크기를 가진 가장 작은 빈 공간을 찾아 할당
- 블록 크기와 공간 크기가 일치하지 않을 경우, 남은 공간을 새로운 빈 공간으로 남김
- 내부 조각화는 줄일 수 있지만, 메모리를 탐색하는 데 시간이 걸리므로 성능 저하가 있을 수 있음
- 최악적합(Worst-fit)
- 메모리 내에서 가장 큰 빈 공간을 찾아 블록을 할당
- 할당된 블록 크기와 공간 크기가 일치하지 않을 경우, 외부 조각화가 발생
- 내부 조각화가 적지만, 빈 공간을 찾는 데 시간이 걸리므로 성능 저하가 있을 수 있음
내부 단편화
- 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상
- 들어갈 수 있는 공간보다 프로그램이 작아서 공간이 남아버리는 것
외부 단편화
- 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공감이 많이 발생하는 현상
- 들어갈 공간보다 들어갈 것이 더 커서 들어가지 못하고 남아버리는 것
불연속 할당
단점
- 메모리 공간 할당과 해제 시의 오버헤드가 발생할 수 있음
- 메모리 공간이 분산되어 있기 때문에, 프로세스가 불연속 공간에 할당될 경우 프로세스의 페이지 교체와 같은 작업이 더 복잡해질 수 있음 (교체 알고리즘 최적화 필요)
운영체제에서 불연속 할당을 사용하는 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 |