Fixed pratitions

-
physically contiguous:
-
logically contiguous: 우리가 64bit 단위로 프로세스를 만든다 -> 피지ㅣ컬리 컨디키어스가 보장된다고 하는 것은 아님
-
지금 설명하는 메모리 관리는 모던하게 사용하는 것은 아님
-
피지컬 어드레스에서 process 3번이 메모리를 사용하지 않는 움직임을하면 process 7을 피지컬에 할당하여 사용한다.

1. logical address + physical address base는 실제 코드의 physical address이다 -> 이때 base 주소를 저장하고있는 하드웨어장치가 있다 이를 base register라고 한다. -> pcb에 저장됨
2. 그럼 다른 physical의 주소를 읽으려면 어떻게 해야하나?
- 예를들어 프로세스 2에서 0x5123의 주소를 읽을 수 있나? 없다.
Fixed Partitions
1. 장점
- 구현이 쉽다.
- context switch가 쉽다.
- 단점
- partition size: 모든 프로세스의 최대 크기는 partition size이여야한다.
- 동시에 사용할 수 있는 프로세스의 개수를 multiprogramming degree라고한다.
- size를 작게 쓰면 multiprogramming degree를 크게 쓰고, size를 크게 쓰 면 그 역으로 진행됨
- internal Fragmentation

ex) 가게의 테이블이 4명씩밖에 앉을 수 없다. -> 손님이 4명씩 온다면 최대의 효율이겠지만 6명은 한번에 받을 수 없고, 손님이 1명씩 오면 빈자리가 많아지게 된다.
Variable Partitions

- process가 사용하는 메모리 크기를 예측할 수 있다면 그 만큼을 할당해 준다.
- internal fragmentation이 발생하지 않는다.
- chuck: 메모리 블럭을 의미한다.
- Base register와 Limit resgister를 사용한다. -> 프로세스의 size가 다 다르기 때문이다.
- base resgister + logical address (< limit address) -> 추가된 계산
- 위 같은 연산으로 실제 Physical address를 참조한다.
- 위 과정은 MMU가 처리한다.
- Q: limit에서 막히면 어떻게 되나? exception을 울리게 됨 -> exception을 따라 exception handler가 발생하게 됨 -> signal을 통해 process를 통제함.
External fragmentation

- 프로세스가 종료되고 남은 공간을 사용할 수 없다.
- 조건 1.allocation과 delocaiton이 반복되는 상황
- 조건 2.variable size이여야 한다.
- 조건 3.다음 allocation이 physically contiguous인 상황
allocation strategies

- 공간을 더 효율적으로 사용해야한다. -> 이것을 정하는 정책을 Allocation strategies 라고한다.
- First fit: 그냥 첫번째 공간을 준다.
- Best fit: 가장 딱 맞는 크기의 공간을 준다. -> fragment가 제일먼저 발생한다. -> 작은 공간이 계속해서 발생한다.
- Worst fit: 가장 큰 홀에서부터 준다.
- 이게 중요한가? -> 그냥 first fit으로 진행하게 된다면 메모리를 50%를 사용하지 못한다.
Segmentation
-
프로세스 자체를 나누자. -> physically decontiguous하게 만들자.
![업로드중..]()
-
section 별로 메모리를 나눠서 둘 수 있도록 한다.
이때 꼭 나눌 필요는 없다.
-
Segment table: 하드웨어로 저장이 될 수 도 있지만, 메모리에 테이블 형태로 저장되는 방식을 많이 사용한다.
-
seg#: 번호를 통해서 각각의 section을 구별한다.
-
각 segment 별로 memory를 구성하게 되면 resizing이 가능해진다.
-
Dir: 메모리의 크기를 조정하는 방향을 의미한다.
- section마다 크기가 늘어가는 방향을 조절하여 빈공간을 준비할 수 있다. 빈공간이 없어도 된다.
- Q: 빈공간이 없을 때 스텍 공간이 필요하면 어떡하나요? A: 프로세스 섹션의 위치를 더 큰 공간으로 relocation을 해주면된다
- Q: 스텍 segment 공간을 두개 만들어줄 수 있나?
-
Segmentation violation: Segmentation fault가 나는 이유. Segment의 영역을 벗어나서 사용했다.
-
Prot: 권한(permission)을 의미한다
- 해당 섹션에 write를 해도 되는지, 실행시켜도 되는지를 RWX로 표현하는 방법
모각소 후기
백엔드를 달리기 전 저번 학기 잘 이해하지 못했던 운영체제 부분을 복습했다. 백엔드를 공부하는 중이지만, 그렇다고 프레임워커가 되면 안되니 이런 기본적인 것들에 충실해 지는 것이 중요하다고 생각한다. 언어는 그저 도구일 뿐, 근본적인 것을 잊지 말도록 하자.