기억장치 관리
주 기억 장치
- 프로그램과 데이터는 주 기억장치에 올라와 있어야 한다.
- 용량이 제한되어 있음
- 실 기억장치
- 가상 기억장치
주소 바인딩
- 정의
n 논리 주소 : 컴파일을 할 때만 사용하는 주소 (기준을 0으로 해서 한다.)
n 물리 주소 : 컴파일을 완료 한 후에 운영체제로부터 받은 메모리 주소에 직접 올라오는 주소
n 위의 논리 주소 -> 물리 주소로 변환되는 것
- 컴파일 시간(Compile Time) 바인딩
n 컴파일 할 때 물리주소가 결정된다
n 실행 시 위치(주소)가 바뀌면 다시 컴파일 해야 한다.
- 적재 시간(Load Time) 바인딩
n 로딩 할 때 물리 주소가 결정된다.
n 논리 주소로 컴파일을 할 때 결정 됨
- 실행 시간(Execution Time) 바인딩
n 실행 할 때 메모리에 올라올 주소를 정해준다.
n 현재 사용중인 방식
n 프로그램의 일부만 메모리에 올린다.
n 필요한 부분만 가져와서 메모리 상에 올리고 그 부분을 다 사용하면 다른 부분을 해당 위치에 다시 올린다.
논리주소 & 물리주소
- 논리주소
n 가상 주소
n CPU가 생성하는 주소
n 실제 메모리에 올라갈 주소가 아님
- 물리주소
n 메모리의 실제 주소
n 기억장치의 위치
- 기억장치 관리기(MMU : Memory Management Unit)
n 논리주소 -> 물리주소로 변환하는 작업
n 논리주소에 기본 주소(Base Address)를 더하는 역할
- 논리주소(CPU) -> MMU(특정 값을 더해 줌 – 덧셈 위주 계산) -> 메모리
기억장치 계층 구조
- 레지스터
n 가장 적은 비율
n 가장 제한적임
n CPU접근 속도가 가장 빠름
- 캐시기억장치
n CPU접근 속도가 빠름
n 저장량이 제한적임
- 주기억장치
n CPU가 직접 참조할 수 있음
- 보조기억장치
n 가장 큰 비율
n CPU가 직접 접근을 못함
기억장치 관리 기법
- 인출(fetch) 기법
n 메인 메모리로 언제 가져올 것 인가를 결정
- 배치(placement) 기법
n 메인 메모리 어디 위치에 저장하는 것이 좋은가를 결정
- 교체(replacement) 기법
n 동일한 위치에 어떤 정보를 내보내고 들여 올 것인가를 결정
단일 사용자 연속 기억장치 할당
- 경계 레지스터
n 운영체제와 사용자 프로그램 사이의 주소
n 운영체제가 사용중인 주소는 접근하면 안된다.
- Overlay 기법
n 주기억장치보다 더 큰 프로그램의 실행이 가능
n 프로그램을 자른다. (개발자가 직접)
n 자른 프로그램 중 하나를 먼저 실행 시키고 나머지를 순서대로 실행 시킨다.
- 시스템 보호
n 경계 레지스터 사용
- 슈퍼 바이저 호출(SVC : Super Visor Call) 명령
n 사용자가 운영체제에 서비스 요청
n 운영체제가 해당 서비스를 해준다.
n fork명령어 등과 같은 것
n 운영체제에 직접 access를 하는 것이 아님
고정 분할 기억장치 할당
- 주기억장치를 나누어서 사용
- 고정적으로 메모리를 나누어서 사용 하는 것
- 동시에 여러 프로그램을 메모리에 올려서 사용할 수 있게 해 줌
- 사용중인 위치에 프로그램이 나가면 해당 위치에 다를 프로그램을 접근 시킨다.
- 고정된 메모리 주소를 벗어날 수 없다.
n 경계 레지스터와 같은 것이 다수 출현
- 절대 번역(Compile) 및 로딩
n 컴파일 시간 바인딩
n 해당 위치는 변하지 않는다.
- 재배치 가능 번역(Compile) 및 로딩
n 로딩 시간, 실행시간 바인딩
- 할당 한 메모리 보다 큰 프로그램이 들어온 경우 실행 불가
n 적정선을 찾아야 한다.
n 적정선은 랜덤
- 로딩 타임과 컴파일 타임 바인딩에서 사용 가능
분할 공간의 크기와 단편화
- 기억장치의 단편화(fragmentation) 현상 발생
- 내부 단편화(internal fragmentation)
n 고정된 크기 안에서 프로세스를 할당 해 준 나머지
n 내부에 남은 공간
n 항상 발생
n 낭비가 심함
- 외부 단편화(external fragmentation)
n 내부 단편화로 인해서 프로세스를 할당해 줄 공간이 없는 경우 발생
n 외부 단편화가 더 큰 문제
- 프로세스 각각의 크기를 알지 못하기 때문에 내부 단편화가 심해진다.
가변 분할 기억장치 할당
- 미리 정한 크기가 아닌 항상 바뀌는 분할 방법
- 작업들이 필요로 하는 공간을 동적으로 할당
n 만약 20K가 나가고 18K가 들어오게 되면 외부 단편화가 된다.
n 대부분 외부에서 들어와서 공간이 남으면 외부 단편화
n 아예 들어갈 수가 없음
n 분할을 할 때마다 사용할 수 있는 공간이 줄어든다.
공백의 합병
- 남은 공간을 모은다.
- 인접한 빈 공간을 합병한다.
- 가변 분할에서는 이러한 작업을 해야 한다.
n 하지 않을 경우엔 사용할 수 있는 공간이 줄어든다.
기억장소의 집약(compaction)
- 비어 있는 공간을 모두 압축시켜서 남은 공간을 확보한다.
- 단점
n 시스템 자원을 낭비할 수 있음
u 사용자의 요청을 받지 못하는 경우
n 집약을 하는 도중에는 서비스를 불가능
n 주소 재배치
기억장소 배치 전략 (memory placement strategy)
- 최초 적합 기법
n 처음 남는 곳에 저장
n 가장 처음 비교 했을 때 들어갈 수 있으면 들어 감
- 최적 적합 기법
n 크기가 가장 비슷한 곳에 저장
n 조각을 최대한 조금 남기기 위한 방법
- 최악 적합 기법
n 가장 넓은 곳에 저장
n 굉장히 나쁜 것은 아님
n 공간을 많이 남겨서 다른 서비스를 해 줄 수 있음
기억장치 교체(Swapping)
- 문제가 생긴 경우
- Swap Out(프로세스를 내보냄)
- Swap In(나간 자리에 프로세스를 들여옴)
- 많은 프로세스를 한번에 서비스 하기 힘들기 때문에 바로바로 교환을 해준다.
- 프로세스를 들어왔다 나갔다 하는 시스템
'3학년 > 운영체제' 카테고리의 다른 글
Chapter4-2 (0) | 2018.04.17 |
---|---|
Chapter4-1 (0) | 2018.04.17 |
Chapter2-3 (0) | 2018.04.12 |
Chapter2-2 (0) | 2018.03.28 |
Chapter 2-1 (0) | 2018.03.22 |