on
#DAY5 물리 메모리 관리
#DAY5 물리 메모리 관리
728x90
블로그에 작성하면서 다시 복습하는 노트이다. 스터디 책은 '쉽게 배우는 운영체제-(한및아카데미)'를 사용했다.
MAR (메모리 주소 레지스터): CPU는 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위해 메모리 주소 레지스터를 사용한다.
메모리 관리의 이중성: 프로세스 입장에서 작업의 편리함과 관리자 입장에서 관리의 편리함이 충돌을 일으키는 것을 말한다.
계층적 메모리 구조: 메모리를 계층적 구조로 만들어 작업 속도를 올리고 가격을 낮추는 방법
컴파일러: 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후 한꺼번에 실행한다. C언어, 자바 등이 있다.
인터프린터: 소스코드를 한 행씩 번역하여 실행한다. 자바스크립트, 베이직 들이 이 방식으로 프로그램을 실행한다.
컴파일러 목적
오류 발견: 소스코드에서 오류를 발견하여 실행 시 문제가 없도록 하는 것이다. 컴파일러는 오류를 찾기 위해 symbol table(심벌 테이블)을 사용한다. 심벌 테이블은 변수 선언부에 명시한 각 변수의 이름과 종류를 모아놓은 테이블로, 선언하지 않은 변수를 사용하지는 않았는지, 변수에 다른 종류의 데이터를 저장하지는 않았는지 알 수 있다.
코드 최적화: 사용하지 않는 변수를 삭제하면 더욱 간결해서 실행 속도가 빨라진다. 컴파일러는 실행하기 전에 코드를 점검하여 오류를 수정하고 최적화함으로써 작은 빠른 실행 파일을 만든다.
컴파일러와 인터프린터 목적
크고 복잡한 프로그램에는 컴파일러를 사용하고 간단한 프로그램에는 인터프린터를 사용한다.
컴파일 과정
소스코드 작성 및 컴파일: 프로그래머가 C 언어나 자바로 소스코드를 작성하여 컴파일하면 목적 코드가 만들어진다. 목적 코드와 라이브러리 연결: 목적 코드가 만들어지면 라이브러리에 있는 코드를 목적 코드에 삽입하여 최종 실행 파일을 만든다.
Memory Manage Unit(메모리 관리 유닛): 메모리 관리자
fetch(가져오기 작업) : 프로세스와 데이터를 메모리로 가져오는 작업이다. 메모리 관리자는 사용자가 요청하면 프로세스와 데이터를 모두 메모리로 가져온다.
: 프로세스와 데이터를 메모리로 가져오는 작업이다. 메모리 관리자는 사용자가 요청하면 프로세스와 데이터를 모두 메모리로 가져온다. placement(배치 작업) : 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정하는 작업이다. 배치 작업 전에 메모리를 어떤 크기로 자를 것인지가 매우 중요하다.
: 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정하는 작업이다. 배치 작업 전에 메모리를 어떤 크기로 자를 것인지가 매우 중요하다. replacement(재배치 작업) : 새로운 프로세스를 가져와야 하는데 메모리가 꽉 찼다면 메모리에 있는 프로세스를 하드디스크로 옮겨놓아야 새로운 프로세스를 메모리에 가져올 수 있따.
paging: 메모리를 같은 크기로 자르는 것을 페이징이라고 한다.
segmentation: 프로세스의 크기에 맞게 자르는 것을 세그먼테이션이라고 한다.
728x90
from http://easy-day.tistory.com/154 by ccl(A) rewrite - 2021-11-26 15:01:46