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)