푸로굴웨밍

OS 정리 - 메모리

보늴 2022. 3. 18. 15:55

OS (운영체제) 정리

 

내가 보려고 정리하는 노트

 

Memory

메모리 = 주소 + 데이터

프로그램 = 원천 파일(source file)- 고수준 언어 대충 코딩수준의 언어

                목적파일 (object file) - 컴파일, 어셈블 결과

                실행파일 (executable file) - 링크 결과

 

compiler, assembelr, linker, loader 등이 올라감

프로그램 실행 - code + data + stack

 

프로그램 실행파일을 메모리에 올려 사용. 

MMU 재배치 레지스터, 논리주소(logical address), 물리주소(physical address)

 

 

메모리 낭비 방지하는 효율적 적재  - Dynamic loading 

dynamic loading 

프로그램 실행에 필요한 루틴,데이터만 적재

dynamic linking 

공통 라이브러리 루틴 미루다가 실행때만 메모리 적재, 다른 앱도 이 루틴과 LINK

공유 라이브러리 Linux, 동적 연결 라이브러리 - windows

swapping 

backing store로 몰아냄. 프로세스 크기에 따른 입출력 부담 큼

 

연속 메모리 할당

프로세스 생성 종료 반복 

메모리 단편화 - 외부단편화 발생. hole들이 불연속저긍로 흩어져서 메모리적재 불가

– First-fit (최초 적합) 속도 good
– Best-fit (최적 적합) 이용률 good
– Worst-fit (최악 적합) 
● 예제
– Hole: 100 /500 / 600 / 300 / 200 KB
– 프로세스: 212 417 112 426 KB

 

paging 

page+page+page .. = process

frame+ frame .. = memory

page를 프레임에 할당, mmu의 재배치레지스터 값을 바꿔 CPU가 프로세스가 잘라져있음에도(Paging) 연속된 메모리 공간에 위치한다고 착각 

이 때 mmu가 page table로 기능

 

 

주소 변환 (Address translation)

논리주소 -> 물리주소

 

 

보호 - 모든주소는 페이지 테이블을 경유, entry마다 r,w,x비트로 해당페이지 접근 제어

공유 - 같은 프로그램을 쓰는 복수개의 프로세스가 있다면  프로그램의 code, link, stack 중 code를 공유하도록 page table code가 같은 곳을 가르치도록

segmentation, 외부파편화

 

 

가상메모리 - 물리적 메모리공간 한계극복

동적 적재와 비슷하게 현재 실행에 필요한 부분만 메모리에 적재 

demand paging - 프로세스 이미지는 뒤에 backing store에 저장하고 demand page만 메모리에 load

 

effetive access time =