CPU

구성
- 산술논리 연산장치(ALU): 비교, 판단, 연산 담당
- 제어부(CU)와 내부 버스: 명령어의 해석과 실행을 위해 CPU를 내부적으로 제어
- 메모리 유닛
- 레지스터: 처리할 명령어 저장
- 캐시 메모리(L1): 처리속도를 높여주는 역할
CPU가 명령어를 읽고 수행하는 동작
- 명령어 인출
- 명령어 해독
- 보통 opcode라는 명령어 코드를 인출한다.
- opcode의 성격에 맞게 레지스터들을 준비시킨다.
- 실행
- 해독된 명령어 수행한다.
- Ex) 산술/논리 관련된 연산 -> ALU가 주체
- 반영
CPU의 성능
- 클럭
- CPU 내부에서 일정한 주파수를 가지는 신호
- 1Hz(헤르츠)면 1초에 한 번의 주기(명령어)를 처리할 수 있다.
- 코어
- 중앙처리 장치 역할을 하는 블록
- 멀티 코어들은 싱글 코어에 비해 마치 여러 개의 CPU가 작동하듯 많은 연산을 빠르게 병렬 처리할 수 있다.
메모리

- 레지스터 = CPU
- 캐시 메모리(SRAM) (L2, L3)
- 메인 메모리(DRAM) = 주 기억장치 (주로)
- 하드 디스크(HDD) = 보조 기억장치 (비휘발성)
CPU와 메모리의 동작
주기억장치가 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어온다.
CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억 장치에 저장한다.
주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보내서 출력시킨다.
CPU 내의 제어장치(CU)가 1~3번 과정에서 명령어가 순서대로 실행되도록 각 장치들을 제어한다.
스케쥴링
목표
- CPU를 한정된 자원으로 최대한 성능을 이끌어내기 위해서 프로세스를 적절하고 효율적으로 배정해야 한다.
배정조건
- 오버헤드 최소화
- 프로세스가 필요한 자원보다 더 많이 사용하지 않도록 한다.
- 사용률 최대화
- 프로세스가 최대한 자원을 많이 받고 빨리 처리하도록 한다.
- 기아 현상 최소화
- 프로세스가 자원할당을 못받아서 배고픈 상태로 대기하지 않도록 한다.
스케쥴링 종류
선점 스케쥴링
os가 나서서 CPU 사용권을 '선점'하고, 특정 요건에 따라 각 프로세스의 요청이 있을 때 프로세스에게 분배하는 방식
비선점 스케쥴링
어떤 프로세스가 CPU를 할당받으면 그 프로세스가 종료되거나, 입출력 요구가 발생하여 자발적으로 중지될 때 까지 계속 실행되도록 보장하는 방법
스케쥴링 동작시점
스케쥴링 알고리즘에 따라 프로세스들은 상태변화가 일어나며 준비/수행 상태일때 CPU를 사용하게 된다
- 🟠은 프로세스들의 상태
- 🔜 은 스케쥴링에 따라 상태가 변화되는 동작

비선점 스케쥴링

- 수행 -> 대기 (Running -> Waiting): I/O 요청이 발생하거나, 자식 프로세스가 종료 대기를 할 때
- 수행 -> 종료 (Running -> Terminate): 프로세스를 종료시켰을 때
선점 스켸줄링

- 수행 -> 준비 (Running -> Ready): 인터럽트가 발생했을 때
- 대기 -> 준비 (Waiting -> Ready): I/O가 완료되었을 때
메모리 심화
캐시
- 계층과 계층 사이에서 속도 차이를 해결하기 위한 임시 저장소

- 근데 왜 SRAM(L1~3캐시)만 캐시라고 부를까?
- 우리가 보는 화면에 출력되는 데이터는 메인 메모리에 저장된 데이터이다
- CPU 연산을 위한 저장소인 레지스터와 메인 메모리 사이에서 임시 저장소 역할을 하는 것이 SRAM이기 때문
지역성의 원리
시간 지역성
공간 지역성
캐시히트와 캐시미스
캐시히트
- 캐시에 원하는 데이터를 찾은 것
- 위치도 가깝고 CPU 내부버스를 기반으로 작동하여 빠르다
- 캐시히트를 하게 되면 해당 데이터를 제어장치를 거쳐 가져오게 된다
캐시히트
- 해당 데이터가 캐시에 없다면 주메모리로 가서 데이터를 찾아오는 것
- 메모리를 가져올때 시스템 버스를 기반으로 작동하기 때문에 느리다

메모리 할당
- 메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당한다
연속 할당
- 고정 분할 방식
- 메모리를 미리 나누어 관리하는 방식
- 한계
- 내부 단편화 발생 ⭕
- 들어갈 수 있는 공간보다 프로그램이 작아서 공간이 남는 현상
- 가변 분할 방식
- 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용하는 방식
- 종류
- 최초적합: 위에서부터 바로 보이는 공간에 바로 할당
- 최적적합: 가장 크기에 맞는 공간부터 채우고 나머지를 할당
- 최악적합: 가장 크기가 큰 공간에 부터 채우고 나머지 할당
- 한계
- 외부 단편화 발생 ⭕
- 들어갈 공간보다 프로그램이 더 커서 들어가지 못하고 남아버리는 것
불연속 할당
- 장점
- 단점
- 메모리 공간 할당과 해제 시의 오버헤드가 발생할 수 있다 (불필요 할당)
- 프로세스의 페이지 교체와 같은 작업이 더 복잡해질 수 있다 (교체 알고리즘 최적화 필요)
- 운영체제에서 불연속 할당을 사용하는 3가지 방법
- 링크드 리스트 (Linked List)
- 비트맵 (Bitmap)
- 페이지 테이블 (Page Table)
a. 페이징
b. 세크멘테이션
c. 페이지드 세그멘테이션
- 페이지 교체 알고리즘
- 오프라인 알고리즘
- 시간기반 알고리즘
- FIFO (First In First Out)
- LRU (Least Recently Used)
- NUR (NOt Used Recently)
- 빈도기반 알고리즘
- LFU(Least Frequently Used)