티스토리 뷰
주소 바인딩(address binding)
한 주소공간에서 다른 공간으로 사상하는 것
동적 적재(dynamic loading)
루틴이 실제로 실행될 때 까지는 디스크에 존재
OS지원 없이 프로그래머가 구현 가능하다.
동적 연결(dynamic linking)
실행할 때 까지 메모리 상주 라이브러리 연결을 보류한다.
매 라이브러리 참조마다 해당 라이브러리가 메모리에 있으면 그곳으로, 없으면 해당 라이브러리를 메모리로 로드해서 링크 시키는 stub코드가 있다.
논리적/물리적 주소
논리적 주소 : cpu주소
물리적 주소 : 실제 주소
HW지원(MMU:MemoryMappingUnit)
재배치 레지스터 : 프로그램의 실제 주소를 계산하기 위한 레지스터(주소 = 프로그램 주소 + 재배치 레지스터 주소)
스와핑(swapping)
메인 메모리와 보조 기억 장치 간의 프로세스 이동을 말한다.
unix : 평소에는 안하다가 프로세스가 많아지면 스와핑
windows : 메인 메모리에 새로운 프로세스를 위한 공간이 없으면 스와핑
연속 메모리 할당(contiguous memory allocation)
프로세스들에게 연속된 메모리 공간을 할당해 주는 것을 말한다.
단일 분할 할당
배치 주소 고정
다중 분할 할당
고정 크기 분할
여러 개의 고정 크기 분할
다중 프로그래밍 정도를 제한
예 : MFT(Multiprogramming with Fixed number of Tasks)->내부 단편화
가변 크기 분할
hole(사용 가능 메모리)에서 필요한 만큼만 할당
예 : MVT(Multiprogramming with Variable number of Tasks)->외부 단편화
할당 방법
first-fit : first hole
best-fit : smallest hole
worst-fit : largest hole(경우에 따라서 더 유용)
단편화(fragmentation)
기억장치 내부의 빈공간 또는 자료가 여러 조각으로 나뉘는 현상을 말한다. 기억장치의 사용가능한 공간을 줄이거나 읽기 쓰기 수행 속도를 저하시킨다.
내부 단편화
기억장치가 의도된 바 없이 할당될 때 일어난다. 내부란 필요없는 기억 자료가 할당된 공간에 있지만 사용되지 않는 것을 뜻한다.
페이징 기법을 사용할 때 일어날 수 있다. 페이지에 프로세스를 할당할 때 프로세스의 크기가 페이지보다 작을 경우 발생한다.
외부 단편화
여유 공간이 여러 조각으로 나뉘는 현상을 말한다. 프로그램이 다양한 기억장소를 할당하고 해제하면서 발생한다. 외부란 사용할 수 없는 기억장소가 할당된 영역 밖에 있음을 뜻한다.
자료의 단편화
자료가 여러 조각으로 나뉘는 현상을 말한다. 외부 단편화가 일어난 기억장치에 자료를 저장하려고 할 때 발생한다.
해결책
통합기법(coalescint) : 인접한 단편들을 하나로 통합시키는 방법
압축기법(compaction) : 분산된 단편들을 하나로 압축시키는 방법(재배치가 동적인 경우에만 가능)
페이징(paging) : 메모리를 일정한 크기로 나눠서 관리
세그멘테이션(segmentation) : 메모리를 다양한 크기로 나눠서 관리
세그멘테이션(segmentation)
페이징 기법과 다르게 가상 메모리를 크기가 다른 세그먼트로 분할하는 방법이다. 크기가 다르기 때문에 페이징 기법처럼 미리 분할할 수 없고 메모리를 할당할 때 빈 공간을 찾아 할당하는 사용자 관점의 메모리 관리 기법이다.
세그멘트(segment)
세그멘트 기법의 세그멘트 주소는 v = (s, d)로 나타내며, s는 세그멘트의 번호, d는 블록 내 세그멘트의 변위를 나타낸다.
세그멘트 테이블(segment table)
세그멘트 항목별 시작주소와 길이 정보를 가지고있다.
단점
세그멘트의 크기가 다르기 때문에 외부 단편화가 발생한다.
페이징(paging)
가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법
frame : 물리 메모리를 일정한 크기로 나눈 블록
page : 논리 메모리를 일정한 크기로 나눈 블록
HW지원
page table HW
각 페이지의 물리주소에서의 시작 주소를 저장하는 테이블
논리주소 : page number + page offset
물리주소 : 해당 page의 물리적 시작주소 + page offset
address generation HW(register)
page table을 참조하여 물리주소 계산
논리주소 = 2^m page size = 2^n (예 : n=12 -> page size = 4096 = 4kb) n+m = 32
특징
페이지 크기가 작을수록
내부단편 크기가 작아진다.
디스크 I/O 시간이 증가한다.
동적 재배치의 한 형태이다.
페이지 테이블(page table)
페이징 기법에서 사용되는 자료구조로 프로세스의 페이지 정보를 저장하고있다. 하나의 프로세스는 하나의 페이지 테이블을 가진다.
구성
색인 : 페이지 번호
내용 : 해당 페이지에 할당된 물리 메모리의 시작주소
유효 접근 시간(effective access time)
hit ratio = 0~1(page를 cache에서 찾을 확률)
cache = cache access time + memory access time
non-cache = cache access time + 2 * memory access time
유효 접근 시간 = hit ratio * cache + (1-hit ratio) * non-cache
구조
계층적 페이지 테이블 : 가장 일반적으로 사용되는 페이지 테이블(예 : 2단계 페이지 테이블)
해시 페이지 테이블 : 주소공간이 32bit보다 커질 때 사용. 성긴 주소 공간(sparse address space)에 유용
역 페이지 테이블 : 페이지 테이블 크기를 줄이는 장점이 있지만 페이지 단위의 메모리 공유가 어려운 단점이 있다.
단점
내부 단편화가 발생한다.
페이지화 된 세그멘테이션(segmentation with paging)
최대 세그멘테이션 크기를 가진 분할 방법(?)
단점
내부 단편화
#1 stub 코드
컴파일러가 프로그램을 만들면서 임의로 삽입하는 코드 조각
#2 성긴 주소 공간(sparse address space)
메인 메모리에서 stack영역과 heap영역 사이에 비어있는 메모리
'Non-Programming > Computer' 카테고리의 다른 글
오류 검출 코드 - 해밍코드(Hamming Code) (16) | 2017.02.19 |
---|---|
IOCP의 기본 동작 원리 (0) | 2017.02.10 |
OS : 가상 메모리(virtual memory) (0) | 2015.06.15 |
OS : 교착상태(dead lock) (0) | 2015.06.14 |
OS : 프로세스 동기화(process syncronization) (0) | 2015.06.14 |
- Total
- Today
- Yesterday
- SwiftUI
- C
- 국내여행
- OS
- Spring
- swift
- mongoDB
- Java
- ue4
- ios
- 수학
- SOCKET
- JSP
- C/C++
- 자료구조
- DesignPattern
- game
- 운영체제
- 데이터베이스
- machine learing
- Git
- 알고리즘
- scala
- winsock
- SHADER
- C++
- 드라마
- database
- Cocos2d-x
- rxswift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |