OS 정리 - 메모리
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 =