Computer Science/운영체제

[OS] 리눅스의 메모리 관리

findTheValue 2021. 10. 21. 05:28

 10분 테코톡 시청 후 작성했습니다.

https://www.youtube.com/watch?v=qxmdX449z1U


리눅스란?

 

  • 리누스 토르발스가 개발한 OS
  • 자유 소프트웨어와 오픈 소스 개발의 표본
  • 다중 사용자, 다중 작업(멀티 테스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)
  • 즉 서버에 적합한 운영체제이다.

 

메모리란?

  • 넓은 의미로 기억 장치 전부
  • 좁은 의미로 메인 메모리(RAM)
  • 컴퓨터의 유일한 작업공간.(프로세스는 cpu에서 실행x 반드시 메모리에 적재 후 실행 가능)
  • 주소덩어리이며 주소로 인덱싱하는 커다란 배열.
  • 컴퓨터가 켜지면 메모리에 운영체제나 프로세스들이 적재되고 CPU를 점유할 기회를 노림.
  • 메모리의 코드 -> 컴파일러(코드 주소 결정) -> CPU
  • Symbolic Address : 메서드, 변수 등 코드각 프로그램마다 중복되는 논리주소를 가지고 있기때문에 가상주소라고도 부름
  • Logical Address : 컴파일러가 변환시킨 숫자주소

  • 논리주소 앞에 식별주소를 추가시킨 물리주소를 가지고 메모리에 적재.
  • 하지만 CPU는 어떤 프로세스인지 알 필요 없기때문에 논리주소만 읽음.

  • MMU(memory Management Unit)은 base register, 산술계산기, limit register가 존재.(하드웨어)
  • CPU가 처리한 논리주소에 base register에 적힌 시작 주소를 더해 프로세스로 반환함.
  • 그리고 이것의 타당성 여부는 Limit register가 판단함.

  • 메모리 할당, swapping어떻게 할꺼냐?

  • 페이징 기법. -> 순서 보장x, mmu 연산도 복잡

  • paging table로 frame을 mapping함.(block map table-BMT)
  • 행은 프로그램을 일정 크기로 자른 것. 프로그램당 행이 100만개.
  • 이걸 CPU에 다 넣을 수 없음. 메모리에 page table을 저장해야함.
  • valid, invalid는 메인메모린지, swap공간에 있는지 판단하는 bit.(어딨는지 인덱싱으로 검사함.)
  • 물리 메모리공간 부족. -> 공통되게 사용하는 부분: read-only권한이 부여된 Shared Page로 사용함.
  • 테이블과 page가 둘다 메모리에 있기땜누에 CPU는 조회를 위해 두번 접근해야함(두배로 느려짐)
  • 이것을 해결하기 위한것이 TLB(Translation Look-aside Buffers) 캐시 메모리(하드웨어)
  • TLB에 있는 주소라면 바로 Frame주소로 변환해 table을 부르지 않고 바로 page에 접근함.

 


리눅스 메모리 관리란?

  • 리눅스가 메인 메모리(RAM)을 운영하는 방법을 총칭
  • 작업공간을 필요로 하는 프로세스들을 위해 운영체제인 리눅스가 메인 메모리를 관리, 운영
  • 가상메모리로 프로세스를 속이거나 하드디스크 입출력을 관리함.(프로세스는 운영체제에 속아 자신이 온전히 메모리에 있는줄 알고있음.)
  • swap을 위한 입출력은 운영체제가 담당함.
  • Linux는 보조메모리로 하드디스크나 SSD같은 보조 기억장치를 사용함.
  • 실제 디스크를 마치 메모리처럼 사용하는 것을 `가상 메모리`라 하며 프로세스 입장에서는 디스크 공간이 아닌 실제 메모리로 인식.
  • 리눅스에서 페이지는 4KB 단위.
  • vmstat명령어로 메모리 사용률과 스왑아웃 발생빈도를 모니터링가능.(성능 최적화를 위해)

  • free는 사용가능한 메모리량
  • so는 swap-out
  • vmstat [딜레이] [횟수] 로 출력 조절 가능. 횟수 생략하면 무한으로 출력됨.
  • vmstat 1 >> log.txt 명령을 통해 리다이렉션을 걸면 파일 로그를 남길 수 있음

 

파일 캐시

  • vmstst의 memory
  • swpd는 사용하는 가상메모리 량. free는 사용가능한 메인메모리량
  • buff, cashe는 파일 I/O 작업 발생을 막기위해 저장하는 곳.(파일 I/O는 디스크 리소스이므로 느림)
  • buff는 파일 시스템의 meta-data와 관련된 블록들을 저장하는 캐시
  • cache는 파일의 내용을 저장하는 캐시
  • WAS서버의 파일 캐시 성능 개선 사례는 거의 의미가 없는 수준
  • 때문에 파일 캐시는 전체 메모리 대비 최대 30%이하로 유지하는 것을 권고.
  • DB 서버도 자체 파일캐시를 운용하기 때문에 작은 파일 캐시 설정을 권고.

 

 


더 공부할 것.

 

Reference