메모리의 관리 개요
목차
01. 운영체제의 개요
02. 컴퓨터의 구조와 성능 향상
03. 프로세스와 스레드
04. CPU 스케줄링
05. 프로세스 동기화
06. 교착 상태
07. 물리 메모리 관리
08. 가상 메모리의 기초
09. 가상 메모리 관리
10. 입출력 시스템과 저장장치
11. 파일 시스템
12. 네트워크와 분산 시스템
메모리의 관리 개요
메모리 주소
1Byte(바이트)로 나뉜 메모리의 각 영역은 메모리 주소로 구분, 0번지 부터 시작.
CPU는 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위해 메모리 주소 레지스터를 사용.
메모리 관리의 복잡성
메모리는 폰노이만 구조의 컴퓨터에서 유일한 작업 공간이며, 모든 프로그램은 메모리에 올라와야 실행 가능.
일괄 처리 방식에서는 한번에 하나의 프로그램만 실행시키므로, 메모리 관리가 단순함
시분할 시스템에서는 운영체제를 포함한 모든 응용 프로그램이 메모리에 올라와 실행 되야하므로 복잡함.
(선점형 비선점형 알고리즘에서 FIFO는 간단한 반면 라운드 로빈 방식은 복잡한 것을 생각하면 된다)
메모리 관리의 이중성
프로세스 입장에서는 메모리를 독차지하려 하고, 메모리 관리자 입장에서는 되도록 효율적으로 사용하고 싶어함.
언어 번역 프로그램의 종류
컴파일러 : 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후 실행(시언어, 자바 등)
인터프리터 : 소스코드를 한번씩 번역하여 실행(자바스크립트, 베이직, 파이썬 등) 에러가 많고 최적화가 힘듦 → 대화형 언어
컴파일러의 목적
- 오류 발견 : 소스코드에서 오류를 발견해 실행 시 문제가 없도록 하는 것
- 코드 최적화 : 소스코드를 간결하게 정리하여 실행속도를 증가시킴
컴파일러와 인터프리터 차이
구분 | 자바 | 자바스크립트 |
변수 | 변수를 선언해야 한다. | 변수를 선언할 필요가 없다. |
실행 | 컴파일 후 실행된다. | 한줄씩 실행된다. |
장점 | 오류찾기, 최적화 분할 컴팡리에 의한 공동 작업이 가능 | 실행이 편리 |
사용 프로그램 | 대형 프로그램 | 간단한 프로그램 |
컴파일 과정
1. 소스코드 작성 및 컴파일 (에러찾기, 최적화)
2. 목적 코드와 라이브러리 결정
3. 동적 라이브러리를 포함하여 최종 실행(DLL)
메모리 관리자
메모리 관리를 담당하는 하드웨어
(가져오기, 배치, 재배치)
메모리 관리자의 작업
- 가져오기 작업 : 프로세스와 데이터를 메모리로 가져옴
- 배치 작업 : 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정
- 재배치 작업 : 꽉 차 있는 메모리에 새로운 프로세스를 가져오기 위해 오래된 프로세스를 내보냄
정책
- 가져오기 정책 : 프로세스가 필요로하는 데이터를 언제 메모리로 가져올지 결정
- 배치 정책 : 가져온 프로세스를 메모리의 어떤 위치에 올려놓을지 결정(페이지, 세그먼테이션)
- 재배치 정책 : 메모리가 꽉 찼을 때 메모리 내에 어떤 프로세스를 내보낼지 결정
'Operating System' 카테고리의 다른 글
단일 프로그래밍 환경에서의 메모리 할당 (0) | 2022.05.26 |
---|---|
메모리 주소 (0) | 2022.05.25 |
교착 상태 해결 방법 (0) | 2022.05.23 |
교착 상태 필요조건 (0) | 2022.05.18 |
교착 상태의 개요 (0) | 2022.05.17 |
댓글
이 글 공유하기
다른 글
-
단일 프로그래밍 환경에서의 메모리 할당
단일 프로그래밍 환경에서의 메모리 할당
2022.05.26 -
메모리 주소
메모리 주소
2022.05.25 -
교착 상태 해결 방법
교착 상태 해결 방법
2022.05.23 -
교착 상태 필요조건
교착 상태 필요조건
2022.05.18