들어가기 앞서 .. 복습 ! 논리적 주소 vs 물리적 주소 논리적 주소(가상 주소) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작 CPU가 보는 주소는 논리적 주소이다. 물리적 주소 메모리에 실제로 올라가는 위치 보통 메모리의 낮은 주소 영역에는 운영체제가 올라가고, 높은 주소 영역에는 사용자 프로세스가 올라간다. Address Binding (주소 바인딩) 어떤 프로그램이 메모리의 어느 위치에 즉, 어떤 물리적 주소에 load 될지를 결정하는 과정이다. 즉, 프로세스의 논리적 주소를 물리적 메모리 주소로 연결하는 작업을 말한다. 이는 binding하는 시점에 따라 분류된다. Symbolic Address → Logical Address → Address Binding → Ph..
OS는 할껀데 핵심만 합니다. 13편 가변 분할 메모리와 고정 분할 메모리, 단편화 과거에는 메모리가 정말 작았다. 요즘은 메모리가 차고 넘치지만, 프로그램도 그만큼 무거워지고 용량이 커졌다. 가령 스타2라는 게임을 플레이한다고 하자. 스타2 프로그램이 총 20GB인데, 메모 velog.io 페이징과 세그멘테이션에 대해 공부하던 중 고정 분할 방식과 가변 분할 방식의 차이점에 대해 잘 설명된 글을 찾았다. 연속 메모리 관리 프로그램 전체가 메모리에 연속적으로 할당되어야 하는 관리 기법 고정 분할 기법 : 메모리가 고정된 파티션으로 분할 → 내부 단편화 발생 동적(=가변) 분할 기법 : 파티션들이 동적 생성, 프로세스는 자신의 크기와 같은 파티션에 적재 → 외부 단편화 발생 가변 분할 방식 vs 고정 분할..
Page reference string 페이지 교체 알고리즘을 살펴보기 전에 Page reference string이라는 용어를 알아야 한다. CPU가 내는 주소는 이진수 단위이지만, 페이지 교체 알고리즘을 계산하기 위해서는 이진수 주소 단위가 아닌 페이지 단위로 계산해야한다. CPU 논리 주소 요청할 페이지 번호 100 1 101 1 432 4 612 6 103 1 104 1 611 6 612 6 예를 들어, CPU가 내는 주소를 위와 같이 표현해보자. 편의를 위해 주소는 십진수로 표현했다. 만약 페이지 크기를 100이라 하면, 우측과 같이 된다. 주소 100번지는 1번 페이지에서 offset이 0인 위치이고, 101은 1번 페이지의 offset 1인 위치라고 볼 수 있다. 마지막으로 페이지 번호로 나..
고정 분할 기법을 사용하면 내부 단편화가 발생하고 동적 분할 기법을 사용하면 외부 단편화가 발생하는 이유는 무엇일까 ? 내부 단편화와 외부 단편화의 원인 프로세스가 수행되기 위해서는 프로세스가 주기억장치, 즉 메인 메모리에 적재되어야 하는데 이 과정에서 프로세스는 일정 크기의 메모리를 요청한다. 이 때 요청한 크기보다 큰 메인 메모리의 파티션을 할당해 주었을 때 내부 단편화가 발생한다. 일반적으로 고정 분할 기법은 한 파티션에 하나의 프로세스만 적재될 수 있는데 위와 같은 상황에서는 프로세스보다 큰 파티션을 할당해 주었기 때문에 남는 메모리가 생긴다. 남는 메모리라 하더라도 한 파티션에는 하나의 프로세스만 들어갈 수 있기 때문에 그 남은 메모리는 사용할 수가 없다. 이 내부 단편화를 보완하기 위해 나온 ..
메모리 개념 메인 메모리(Main Memory, Physical Memory, 주기억장치) 메인 메모리란 CPU가 직접 접근할 수 있는 기억 장치로, 프로세스가 실행되려면 프로그램 코드를 메인 메모리에 적재해두어야 한다. 이때, 프로그램 용량이 메인 메모리보다 크다면 어떻게 될까 ? 가상 메모리(Virtual Memory) 실제 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것이다. Memory 공간은 한정적이므로 사용자에게 더 많은 Memory를 제공하기 위해 가상 주소를 사용한다. MMU를 통해 논리 주소, 물리 주소를 나누어 사용하며 CPU의 메모리를 관리한다. MMU란 ? Memory Management Unit로 가상 주소를 실제 메모리 주소로 변환해주는 장치 가상 주소 공간 - 하나의..
✔︎ 임계 영역 (Critical Section) 여러 프로세스가 데이터를 공유하면서 수행될 때 각 프로세스에서 공유 자원에 접근하는 프로그램의 코드 부분을 의미한다. 프로세스 간에 공유자원을 접근하는데 있어 문제가 발생하지 않도록 공유 자원의 독점을 보장해줘야 하는 영역이다. 멀티 프로그래밍 시스템에서 여러 프로세스들이 공유하고 있는 자원을 한 시점에 하나의 프로세스만 접근할 수 있게 하는 영역이다. ✔︎ 임계 영역의 문제점 1. 경쟁 상태의 발생 공유 자원(임계 자원)에 여러 프로세스가 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결괏값에 영향을 줄 수 있는 경쟁 상태가 발생할 수 있다. 2. 자원의 독점 문제 임계 영역 내에서는 작업을 반드시 빠른 속도로 수행해야 하며 프로세스 하나가 임계..