Ch07 물리 메모리 관리

 

해당 내용은 쉽게 배우는 운영체제을 기반으로 작성되었습니다.


1. 메모리 이해하기

메모리 구조는 1 Byte 크기로 나뉜다.

1Byte = 8 bit

1B로 나뉜 메모리의 갹 영역은 주소 address로 구분됨

주소는 0번지부터 시작

CPU = 매인 메모리에 있는 데이터를 가져오거나 작업 결과를 메인메모리에 저장하기 위해 주소 사용

주소    CPU와 메인 메모리 간 작업의 기준이 된다. 

운영체제도 프로그램이므로 메인 메모리에 올라와야 실행할 수 있다. 

 

컴퓨터 부팅 시 -> 하드디스크에 저장된 운영체제가 메모리에 올라감

부팅 끝날 시 -> 여러 응용 프로그램이 메모리에서 작업을 시작할 수 있다. 

 

메인 메모리는 매우 빠른 장치 같지만, CPU 입장에서는 느린 장치이다. 

메모리에 접근하는 속도가 몇 배 이상 느리다 (CPU 안에 있는 레지스터에 접근하는 속도보다)

메모리에 접근한다 = 메모리에 있는 데이터를 CPU로 가져온다

 

메모리에 있는 데이터를 CPU로 가져오는 속도 ➡ 1~2 클록

CPU 안에 있는 레지스터에 접근하는 속도 ➡ 10배 이상의 클록

 

속도 차이를 극복하기 위해

- CPU 안에 캐시 cache를 만들어두고 메모리의 일정 부분을 미리 가져와 prefetch 작업한다.

- 하드디스크나 SSD 같은 저장장치를 메인메모리의 보조 저장장치로 활용한다. 

 

2. 메모리 관리의 이중성

메모리 관리는 운영체제를 비롯해 여러 작업을 동시에 처리할 때 메모리를 어떻게 관리하는 가에 관한 문제다. 

이처럼 복잡한 메모리 관리는 메모리 관리 시스템이 담당한다. 

 

일괄 처리 시스템  한 번에 한 가지 작업만 처리  메모리 관리 easy

시분할 시스템 ➔  메모리에서 여러 작업 처리   ➔  메모리 관리 hard  

 

ex) 한 도마(메인 메모리)에 여러 재료(프로세스)를 올려놓고 요리하는 것

 

 

 

 

 

 

메모리 관리의 이중성

  • 프로세스 입장에서는 메모리를 독차지하려 하고, 메모리 관리자 입장에서는 되도록 관리를 효율적으로 하고 싶어하는 성질

 

3. 소스코드의 번역과 실행

기계어와 가장 유사한 언어 = 어셈블리어

저급언어 = 컴퓨터의 동작을 가장 직접적으로 표현한 기계어와 어셈블리어

고급언어 = 사용자가 이해하기 쉽게 프로그래밍할 수 있는 언어 (ex: C, JAVA)

 

언어 번역 프로그램 = 고급언어 -- (번역) --> 기계어

언어 번역 프로그램 : 컴파일러, 인터프리터

 

컴파일러 인터프리터
소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후 한꺼번에 실행 소스코드를 한 행씩 번역하여 실행
ex) C언어, 자바 ex) 자바스크립트, 파이썬

 

 

요리 레시피 준비물에 양파가 있다.

하지만 조리 순서에는 양파가 없고, 양배추가 있다. 

 

그렇다면 양파를 양배추로 잘 못 쓴것일까. 준비 재료에 양배추가 빠진 것인지 모르게 된다. 양배추가 준비 재료에 없으므로 오류에 해당한다. 오류를 발건하면 요리사에게 즉시 알려주어 수정하도록 조치해야한다. 

 

 

컴파일러 방식

  1. 오류발견
    소스코드에서 오류를 발견하여 실행 시 문제가 없도록 하는 것 (심벌테이블에 선언된 변수가 있는지 확인)
    * 심벌테이블 : 변수 선언부에 명시한 각 변수의 이름과 종류를 모아놓은 테이블
  2. 소스코드 최적화
    소스코드를 간결하게 정리하여 실행 속도를 빠르게 하는 것
    ( 당근 써는 것을 2번으로 나누는 것이 아니라, 한 번 당근을 썰때 2개의 당근을 썰면 좀 더 효율적인 프로세스를 가질 수 있음)
  3. 컴파일러 컴파일 과정

컴파일러는 오류가 있는지 점검하고 최적화를 통해 필요 없는 변수와 코드를 삭제

 

이렇게 만들어진 기계어 코드

= 목적코드(obj code)

 

목적 코드인 이유

실행 전 단계의 코드임. 아직 처리할 단계가 낭아 있어서. 

 

목적 코드는 기계어 코드로 가기 직전의 초벌 번역 상태이다. 

 

 

 

 

 

 

 

 

 

라이브러리

  • 자주 사용하는 함수를 시스템 내에 파일 형태로 모아 만들어 둔 것

동적 라이브러리 파일 DDL (Dynamic Link Loader)

  • 윈도우에서 함수의 변경이 일어나면 해당 DDL 파일을 특정 폴더에 삽입하여 새로운 기능을 사용할 수 있다.

메모리 관리 작업

 

메모리 가져오기 fetch

 

메모리 배치 (placement)

 

메모리 재배치 (replacement)

 

'SCHOOL > 운영체제' 카테고리의 다른 글

7장 퀴즈 (gpt made) (ing)  (0) 2024.09.04
Ch09 가상 메모리 관리 (ing)  (0) 2024.09.04
Ch09 가상 메모리 관리 요약  (0) 2024.06.20
10강 Raid  (0) 2024.06.20
4장 CPU 스케줄링 - 02(1) 선점형, 비선점형 스케줄링  (0) 2024.04.30