반응형
Notice
Recent Posts
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Today
Total
관리 메뉴

오식랜드

[운영체제] 메모리 본문

dev-log/cs

[운영체제] 메모리

개발하는 오식이 2023. 10. 1. 14:18
반응형

메모리

  • 폰노이만 구조 중 “유일한 작업공간”
  • 프로세스 → 독차지 하고싶어 함
  • 관리자 → 효율적 운영하고 싶어 함
  • 운영체제 → 위 둘의 중재자

메모리 주소

  • 0번지부터 시작
  • 16진수 사용

메모리 관련 작업

  1. fetch : 가져오기
  • 실행할 프로세스, 데이터를 메모리에 적재
  • 언제 가져올지
  1. placement : 배치
  • 어디에 가져올지
  1. replacement : 재배치
  • 메모리가 꽉 찼을 때 비교
  • 어떤 프로세스를 내보낼지

언어 번역 프로그램

  • 컴파일러 : 코드를 한번에 번영
  • 인터프리터 : 코드를 한줄 씩 번역

컴파일러 과정

  1. 에디터 (고급언어) → test.c
  2. 컴파일러 (어셈블리어)
  3. 어셈블러 (2진수) → test.obj
  4. 링커 (라이브러리 연결)
  5. 로더 (메모리 적재) → test.exe
  • 다이나믹 라이브러리 : 파일 실행 시 라이브러리를 호출하는 형식 → test.dll

CPU의 크기 영향

  • 32bit, 64bit로 나뉨
  • 레지스터, ALU, BUS 대역폭의 크기가 동일함 (32bit cpu면 다같이 32bit)
  • 메모리 크리는 2의 bit제곱임 (32bit → 2^32 → 약 4GB)

메모리 영역 구분

  • 사용자 영역 / 운영체제 영역
  • 경계 레지스터로 구분
    • 사용자가 작업 요청 시 매번 검사
    • 벗어나면 해당 프로세스 강제 종료
  • 서로 침범 X

물리 주소

  • 실제 주소
  • 메모리 입장
  • 운영체제 영역과 사용자 영역을 모두 합친 상태
  • MAR 레지스터에 담기는 주소

논리주소

  • 사용자 입장 (= 프로세스 입장)
  • 사용자 역역 내에서 구한 주소
  • 코딩 시 변수는 메모리 주소의 심볼임
  • 항상 0부터 시작

메모리 오버레이

  • 프로그램 크기 > 메모리 크기 일 때
  • 필요한 모듈만 올려서 실행
  • 모듈 구분은 프로그래머가 함

***** 메모리보다 큰 프로그램 실행이 가능하게 해주는 것

스왑 영역

  • 메모리가 모자를 때 프로세스 또는 데이터가 옮겨지는 곳
  • 사용자는 스왑영역까지 메모리로 인식
  • 스왑 인 : 스왑영역 → 메모리로 적재
  • 스왑 아웃 : 메모리 → 스왑영역으로 이동

메모리 분할

: 여러가지 프로세스를 메모리에 올리려면 필요

  1. 가변 분할 방식
  • 세그멘테이션 기법
  • 프로세스 크기에 맞게 분할
  • 연속 메모리 할당 가능 (장점) (프로세스가 연속됨)
  • 외부 단편화 발생
    • 프로그램 크기가 맞는 자리에 들어가야하는데, 그게 안되어 빈 섹션이 발생
    • 막기
      • 메모리 배치 방식 필요 (예방) : 메모리 관리가 복잡해짐 (단점)
        • 최초배치(first fit) : 처음 발견한 자리에 배치
        • 최적배치(best fit) : 적당한 크기 중 남는 공간이 제일 적은 곳에 배치
        • → 남는 조각이 제일 작으면 재사용이 불가능 → 메모리 낭비
        • 최악배치(worst fit) : 남은 공간이 가장 큰 곳에 배치
        • → 남는 공간을 다른 프로세스에게 재할당할 수 있음
      • 조각 모음 필요 (후처리)
  1. 고정 분할 방식
  • 페이징 기법
  • 현대 기본 관리법
  • 모든 메모리 영역이 같은 크기로 분할되어있음 → 어떤 크기로 나눌지 신중한 결정 필요
  • 프로세스를 조각내서 배치
  • 비연속 메모리 할당
  • 내부 단편화가 생김 (정해진 크기보다 조각난 프로세스 크기가 더 작아서 남는 영역)
  • 메모리 관리가 수훨 (장점)
  • 메모리 낭비가 있을 수 있음 (단점)
  • 조각 모음 필요

조각모음

  • 메모리 빈 공간을 하나의 큰 덩어리로 만드는 작업
  • 프로세스 이동이 필요
    • 이동하는동안 프로세스 사용 X
    • 프로세스가 이동하며 지워지고 새로 써짐
    • 프로세스들의 주소가 변경됨
    • 시간이 많이 들음

버디 시스템

  • 가변분할 + 고정분할이 섞인 느낌
  • 프로세스 크기에 맞게 메모리를 2/1 씩 잘라서 사용 → 메모리가 프로세스 크기대로 나뉨
  • 나뉜 구역에는 1개의 프로세스 배치
  • 프로세스 종료 시 주변의 빈 조각과 합쳐짐 → 비슷한 크기라 조각모음이 쉬움
  • 내부 단편화, 외부 단편화가 동시 발생

반응형

'dev-log > cs' 카테고리의 다른 글

[운영체제] 입출력장치  (0) 2023.10.01
[운영체제] 가상메모리  (0) 2023.10.01
[운영체제] 교착 상태  (0) 2023.10.01
[운영체제] 임계구역  (0) 2023.10.01
[운영체제] 프로세스 간 통신  (0) 2023.09.27
Comments