L1 캐시메모리와 L2, L3 캐시메모리
- L1 캐시메모리
- CPU 내부에 위치
- CPU 코어마다 별도로 존재하는 가장 빠른 속도로 접근할 수 있는 캐시 메모리
- L2 캐시메모리
- L1 캐시 다음에 위치
- L1캐시의 처리가 완료된 다음 L2캐시로 데이터가 전달됨
- L1캐시보다 접근 속도는 느리지만 L1 캐시보다 크기가 크고, 더 많은 데이터를 저장
- L3 캐시메모리
- 여러개의 코어 또는 CPU 패키지 사이에서 데이터를 공유
- L2 캐시메모리보다 크기가 크고, 더 많은 데이터를 저장
- 멀티프로세서 코어 간 데이터 공유와 효율적인 데이터 이동을 지원하는 강력한 특징이 있어, 시스템 성능을 향상시키는 역할
- L2, L3 특징
- CPU와 별개로 구성되어 있으며, 메인 메모리와 CPU 간의 속도차이를 극복해줌
스케쥴링
- Waiting Queue에서 기다리는 프로그램들을 어떤 순서로 실행하게 할 것인지 결정하는 것
- 프로세서들 사이의 우선순위를 관리하고 프로세스들에게 자원을 최대한 공평하게 배분하며 처리율과 CPU이용률을 증가시키고,오버헤드,응답시간 최소화시킴
CPU 스케쥴링
- CPU를 적절하고 효율적으로 사용하기 위해 프로세스를 잘 배정하는 것
- 운영체제가 여러 프로세스의 CPU를 관리하는 기술로써 프로세스가 CPU를 사용하는 순서, 시간을 결정하여 시스템 성능을 최적화함
- 주요 목적은 CPU가 너무 오랫동안 쉬지 않게 하는 것과 처리율을 높이려는 것
- 오버헤드를 최소화 시켜 자원 낭비를 막음
- CPU 사용률을 높여 전체 시스템 성능을 향상시킴
- 기아 현상을 방지하고 모든 프로세스가 공평하게 자원을 배분받도록 함
메모리 할당
- 연속할당
- 연속 할당은 메모리에 연속적으로 공간을 할당하는 것
- 고정 분할 방식 : 메모리를 미리 나누어 관리하는 방법, 내부 단편화
- 가변 분할 방식 : 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용하는 방법, 외부 단편
- 연속 할당은 메모리에 연속적으로 공간을 할당하는 것
- 불연속할당
- 하나의 프로세스가 메모리의 여러 위치에 분산하여 할당하는 것
- 연속적인 메모리 블록에 할당하지 않고, 여러 조각으로 나누어 할당하는 방식
- 작업을 효율적으로 처리해야 할 때 사용
- 페이징 기법
- 세그멘테이션 기법
- 페이지드세그멘테이션 기법
프로세스 메모리 구조
- Code 영역
- 실행한 프로그램의 코드를 저장
- Data 영역
- 전역, 정적 변수들을 저장
- Stack 영역
- 지역변수, 매개변수 등 잠시 사용되었다가 사라지는 데이터가 저장
- 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장
- Heap 영역
- 동적으로 생성되는 객체들을 저장
- 메모리 주소 값에 의해 참조
- Stack 영역과 Heap 영역의 차이점
- stack은 정적메모리, heap은 동적메모리가 저장됨
- stack은 heap에 비해 상대적으로 크기가 작음
- heap은 전체 코드의 값들이 저장되기 때문에 불필요한 변수나 이벤트등은 참조를 해제하는 등 별도의 관리가 필요
- heap 영역은 프로그래머가 동적으로 데이터를 할당하고 해제하는 영역
- stack은 컴파일 시에 크기 결정, heap은 런타임 시에 크기 결정됨
- stack은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당되고, heap은 그 반대로 할당됨, 그래서 오버플로우 현상이 발생할 수 있음