메모리를 배우는 이유?
- 본인이 직접 OS를 설계할 일은 거의 없다. 그러나 배운 내용을 본인이 개발한 프로그램 내부에 설계한다면 어떨까? 예를 들어, 디스크에서 데이터를 그대로 가져와서 프로그램에 넣지 않고, 본인이 직접 설계한 메모리 형식에 디스크에서 가져온 데이터들을 먼저 넣는다. 그리고 프로그램의 성격에 맞게 데이터를 어떻게 가져올지 결정하면 프로그램의 성능이 높아질 것이다.
메모리의 종류
용어 표현
- Block : 보조기억장치와 주기억장치 사이의 데이터 전송 단위
* size : 1 ~ 4kb
- Word : 주기억장치와 레지스터 사이의 전송 단위
* size : 16 ~ 64kb
* 예시 : windows 64 bits 운영체제
- Address binding : 프로그램의 논리 주소와 실제 메모리의 물리 주소를 매핑하는 작업
* 예 : int a는 논리 주소와 메모리의 위치 1004는 물리 주소를 연결
* binding의 종류
+ compile time binding
~ 컴파일러가 프로세스를 적재할 메모리의 위치를 아는 경우
~ 프로그램 전체가 메모리에 올라가야 함
+ load time binding
~ 컴파일러가 프로세스를 적재할 메모리의 위치를 모르는 경우, 임시 주소를 생성하고(주소 : a+10) 적재 시점(load time)에 시작 주소를 반영(a = 300)하여 주소를 재설정(주소 : 310)
~ 프로그램 전체가 메모리에 올라가야 함
+ run time binding
~ 프로세스가 running 상태일 때 주소를 설정
- Dynamic loading : 모든 루틴(함수)을 교체 가능한 형태로 디스크에 저장
* 예 : func A, func B, func C를 디스크에 저장해 놓고, func A가 호출되면 그 때 address binding 수행
* 장점 : 메모리 공간의 효율적 사용
- Swaping
* swap-out : 프로세서 할당이 끝나고 수행 완료된 프로세스는 swap-device로 보냄
* swap-in : 새롭게 시작하는 프로세스는 메모리에 적재
본 내용은 한국기술교육대학교 김덕수 교수님의 유튜브 강의를 듣고 정리한 내용입니다.
'Software Courses > Operating System' 카테고리의 다른 글
[Memory] Memory allocation : Non-continuous memory allocation (0) | 2020.12.09 |
---|---|
[Memory] Memory allocation : Continuous memory allocation (0) | 2020.12.09 |
[Deadlock] Deadlock Solutions (0) | 2020.12.06 |
[Deadlock] Deadlock and Resources types (0) | 2020.12.04 |
Process Synchronization and Mutual Exclusion (0) | 2020.12.02 |