[TIL] 운영체제와 메모리

2025. 11. 23. 21:25·▪️CS 스터디

 

운영체제(OS, Operating System)란 사용자가 컴퓨터를 사용하기 위해 필요한 핵심 소프트웨어로, 컴퓨터 하드웨어와 응용 프로그램을 관리하고 상호작용 할 수 있도록 돕는 역할을 한다.

 

 

운영체제의 역할은 크게 네 가지가 있다. 

 

1. CPU 스케줄링과 프로세스 관리

CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리

2. 메모리 관리

한정된 메모리를 어떤 프로세스에, 얼마나 할당해야 하는지 관리

3. 디스크 파일 관리

디스크 파일의 보관 방법 관리

4. I/O 디바이스 관리

I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터 주고받는 것을 관리

 

이 중 메모리에 대해 더 알아보겠다. 

 

 


 

 

메모리는 데이터나 상태, 명렁어 등을 기록하는 장치이며 기억을 담당한다.

 

 

메모리 계층은 래지스터, 캐시, 메모리, 저장장치로 이루어져 있는데,

  •  레지스터: CPU 안에 있는 작은 메모리. 휘발성, 속도 가장 빠름, 용량 가장 적음

  •  캐시: L1, L2 캐시를 지칭. 휘발성, 속도 빠름, 용량 적음

  • 주기억장치: RAM을 지칭. 휘발성, 속도, 용량 보통

  • 보조기억장치: HDD, SSD를 일컬으며 비휘발성, 속도 낮음, 용량이 많음 

속도와 기억 용량은 반비례하다는 것을 알 수 있다. 

 

 

캐시(cache)란 데이터를 미리 복사해 놓는 임시 저장소이자, 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다. 캐시를 통해 시간을 절약할 수 있다. 

 

메모리와 CPU 사이는 속도 차이가 커서, 그 중간에 계층을 둬서 속도 차이를 해결하는데

이렇게 속도 차이를 해결하기 위해 계층과 계층 사이에 위치한 계층을 '캐싱 계층' 이라고 한다. 

CPU의 처리 속도에 비해 RAM의 접근 속도는 매우 느리므로, 매 요청마다 RAM에 접근하는 것은 매우 비효율적이다. 그래서 캐시라는 속도가 빠른 작은 저장 공간을 사이에 둠으로써 실질적인 대기 시간을 최소화하고 성능을 높일 수 있다. 

 

 

이때 캐시를 이용하기 위해서는 지역성의 원리를 기반으로 캐시의 성능을 높일 수가 있다. 

지역성의 원리는 프로그램이 데이터를 균일하게 접근하지 않고,

특정 순간에 특정 영역을 집중적으로 참조하는 특성을 말하는데

이 특성을 이용해 캐시는 CPU가 다음에 필요할 데이터를 미리 가져다 놓을 수 있다. 

 

 

시간 지역성 

  • 최근에 접근했던 데이터는 가까운 미래에 다시 접근할 가능성이 높다. 
  • 한번 사용한 데이터를 캐시에 그대로 두면, CPU가 해당 데이터를 다시 요청했을 때 RAM까지 가지 않고 캐시에서 즉시 가져올 수 있다.
  • 예시:
    • 반복문: for 문이나 while 문 안에서 사용되는 변수나 명령어들은 계속 반복해서 사용됨

 

 

공간적 지역성 

  • 현재 접근한 메모리 주소 근처에 있는 데이터는 가까운 미래에 접근할 가능성이 높다.
  • CPU가 어떤 주소의 데이터를 요청하면, 캐시는 그 데이터뿐만 아니라 그 주소 주변의 연속된 데이터 묶음을 한 번에 RAM에서 가져와 캐시에 저장한다.
  • 예시:
    • 배열 순회: 배열의 요소들은 메모리상에 연속적으로 저장된다. 배열의 한 요소를 읽으면, 바로 다음 요소들도 곧 읽을 확률이 높으므로 한 번에 가져와서 캐시에 넣어 둔다.

 

 

이렇게 캐시에 있는 데이터 중, 원하는 데이터를 찾았다면 '캐시 히트'라고 하며

해당 데이터가 캐시에 없어 주 메모리에서 데이터를 찾아오는 것을 '캐시 미스'라고 한다. 

 

지역성 원칙에 근거하여 데이터를 캐시에 채워 넣으면, 캐시 히트율이 극대화되고, 결과적으로 시스템의 평균 메모리 접근 속도가 캐시의 속도에 가까워져 성능이 크게 향상될 수 있다. 

 

 

 

'▪️CS 스터디' 카테고리의 다른 글

[TIL] HTTPS와 SSL/TLS의 개념  (0) 2025.11.12
[TIL] IP 주소 체계 이해하기  (0) 2025.11.01
[TIL] 네트워크 토폴로지, 성능 분석  (0) 2025.10.15
[TIL] 객체 지향 SOLID 원칙  (0) 2025.09.24
[TIL] CORS 정책 (Cross-Origin Resource Sharing)  (0) 2025.09.17
'▪️CS 스터디' 카테고리의 다른 글
  • [TIL] HTTPS와 SSL/TLS의 개념
  • [TIL] IP 주소 체계 이해하기
  • [TIL] 네트워크 토폴로지, 성능 분석
  • [TIL] 객체 지향 SOLID 원칙
cosmo225
cosmo225
개발자로 향하는 길 👽
  • cosmo225
    to cosmo!
    cosmo225
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • ▪️Spring Boot (11)
      • ▪️트러블슈팅 (7)
      • ▪️CS 스터디 (7)
      • ▪️알고리즘 (0)
      • ▪️프로그래밍 (2)
      • ▪️Git (3)
      • ▪️etc (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    github
    공부
    springboot
    스프링부트
    깃허브
    Spring
    Programming
    CS
    java
    배포
    GIT
    컴퓨터
    데이터베이스
    TIL
    프로그래밍
    Study
    백엔드
    개발
    oauth2
    스프링
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
cosmo225
[TIL] 운영체제와 메모리
상단으로

티스토리툴바