CPU의 구성
- ALU (산술 논리 연산장치)
비교, 판단, 연산 담당 - CU (제어부)
명령어 해석, 실행을 위해 CPU 내부적 제어 - Register
처리할 명령어 저장 - Cache Memoy (L1)
처리속도를 높여주는 역할
스케줄링
CU의 핵심 기능
CPU를 효율적으로 사용하기 위해 실행중인 프로그램에 리소스 배분
스케줄링 종류
선점 스케줄링
OS가 나서서 CPU 사용권을 선점하고 특정 요건에 따라 각 프로세스의 요청이 있을 때 프로세스에게 분배하는 방식
- Priority Scheduling (우선순위 스케줄링)
미리 주어진 프로세스의 우선 순위에 따라서 스케줄링하는 방식 - Round Robin
정해진 시간 할당량 만큼 프로세스를 할당한 뒤 작업이 끝난 프로세스는 준비완료 큐의 가장 마지막에 가서
재할당을 기다리는 방법(회전식) - Multilevel Queue (다단계 큐)
준비 완료 큐를 여러개의 큐로 분류하여 각 큐가 각각 다른 스케줄링 알고리즘을 가지는 방식
비선점 스케줄링
어떤 프로세스가 CPU를 할당 받으면 그 프로세스가 종료되거나 입출력 요구가 발생하여 자발적으로 중지될 때까지
계속 실행되도록 보장하는 방법
- FCFS (First Come, First Serve)
먼저 도착한 프로세스를 먼저 처리하는 기본적인 스케쥴링 알고리즘 - SJF (Shorted Job First)
CPU 버스트 타임이 가장 짧은, 최단 작업을 우선 스케쥴링하는 알고리즘 - HRN (Highest Reponse-ratio Next)
우선순위를 계산하여 SJF의 단점인 점유 불평등 보완
우선순위 = (대기시간 + 실행시간) / 실행시간
캐시(Cache)
캐시는 데이터를 미리 복사해 놓는 임시 저장소로 병목 현상을 줄이기 위한 메모리다.
데이터 접근에 시간이 오래 걸리는 경우를 해결하고 다시 계산하는 시간을 절약한다.
지역성의 원리
자주 사용되는 데이터의 특성을 의미한다.
- 시간 지역성
최근 사용한 데이터에 다시 접근하려는 특성 - 공간 지역성
최근 접근한 데이터를 이루고 있는 공간이나 그 가까운 공간에 접근하는 특성
캐시히트와 캐시미스
- 캐시히트
캐시에 원하는 데이터를 찾은 것
CPU 내부 버스를 통해 캐시메모리에서 원하는 데이터를 찾았기 때문에 속도가 빠르다. - 캐시미스
해당 데이터가 캐시메모리에 없다면 주메모리로 가서 데이터를 찾아오는 것
시스템 버스를 통해 CPU 외부의 메모리에 접근해서 데이터를 찾아야하기 때문에 속도가 느리다.
캐시 매핑
캐시가 히트되기 위해 매핑되는 방법
- 직접 매핑
처리가 빠르지만 충돌 발생이 잦다. - 연관 매핑
순서를 일치하지 않고 관련있는 캐시와 메모리를 매핑
충돌이 적지만 모든 블록을 탐색하여 속도가 느리다. - 직접 연관 매핑
직접 매핑과 연관 매핑을 합쳐 놓은 것
순서는 일치하지만 집합을 둬서 저장하며 블록화되어 있어 검색이 효율적
메모리 할당
메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당한다.
연속할당
메모리에 연속적으로 공간을 할당하는 것을 말한다.
고정 분할 방식와 가변 분할 방식으로 나뉜다.
- 고정 분할 방식
메모리를 미리 나누어 관리하는 방식
내부 단편화가 발생한다. - 가변 분할방식
매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용하는 방식
1. 최초적합: 위에서부터 바로 보이는 공간에 할당
2. 최적적합: 가장 크기에 맞는 공간부터 채우고 나머지를 할당
3. 최악적합: 가장 크기가 큰 공간부터 채우고 나머지 할당
내부 단편화는 발생하지 않지만, 외부 단편화가 발생한다.
내부단편화 & 외부단편화
내부단편화 : 메모리를 나눈 크기보다 프로그램이 작아서 공간이 남는 것
외부단편화 : 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생
불연속 할당
운영체제에서는 여러개의 작업을 효율적으로 수행해야하기 때문에 불연속 할당방법을 사용한다.
- 링크드 리스트 (Linked List)
불연속 공간에 프로세스를 할당할 때 할당된 공간의 주소를 연결리스트에 저장하는 방식
이 방식은 메모리 할당과 해제가 빠르지만 공간 낭비가 발생할 수 있다. - 비트맵 (Bitmap)
메모리 공간의 각 블록을 0 또는 1로 표시하여 사용 가능한 블록과 사용 중인 블록을 구분하는 방식
메모리 크기가 큰 경우 비트맵이 매우 커지는 단점이 있다. - 페이지 테이블
가상 메모리 시스템에서 사용되는 방식으로 물리적인 주소 공간을 페이지라는 작은 블록으로 나누어 사용
각 프로세스는 자신의 페이지 테이블을 가지며 페이지 테이블은 물리적인 주소와 가상 주소를 매핑하는 역할을 한다.
이 방식은 위의 두 방식보다 효율적이며 가상 메모리를 구현하는데 필요한 기술이다.
'Development > CS' 카테고리의 다른 글
Thread, Thread Pool (0) | 2023.07.02 |
---|---|
프로세스 생명주기와 프로세스 메모리 (0) | 2023.06.18 |