[Week5] 0214.5

안나경·2024년 2월 14일

크프정 일상

목록 보기
34/109

2시 반~ 4시 반 코어

가상 메모리, 페이징

12기가 게임을 실행한다고 했을때
나의 램이 8기가이면
실행 되는 이유가 가상 메모리임을 설명.

투명성, 보호, ....

메모리끼리 침범하지 않음,
실행하는 프로세스 스스로가 가상 메모리를 인지 못하게 함,
....

그리고 물리메모리를 효율적으로 쓰기 위함.
무어의 법칙 설명을 곁듦.
인텔의 발전 8나노 등 얘기가 나옴.

실제 컴퓨터에서 가상 메모리 할당을 확인할 수 있음을 설명.

주소공간, 페이지,
페이지 테이블 엔트리 포인트,
DRAM, SRAM,
요구 페이징,
DRAM의 완전결합성 부가설명 붙임.

동적 메모리 할당

명시적 할당기, 묵시적 할당기.
전자는 malloc, free, realloc, calloc,
후자는 가비지 콜렉터 등.

묵시적 가용리스트를 쓰는 명시적 할당기 등
헷갈릴 수 있는 요소를 설명.

간단히 얘기하자면
묵시적, 명시적 가용리스트와
묵시적, 명시적 할당기는 전혀 다르다.

brk라는 힙의 포인터가 있으며
메모리를 할당한다면 힙을 더하고
반납할 때 포인터를 뺀다는 개념을 설명.

또한 동적 메모리 할당 시
더블 워드 정렬 요건을 설명하며
padding에 대한 이론을 설명.

더블 워드 정렬을 지키지 않으면
최대 비트만 운송하는 CPU 특성 상
패딩 하지않고 꼼꼼히 넣으면
따로 분리되어 전송하는 과정에서
뒷부분 전송이 일어나지 않아 소실 등이 일어날 수 있음.

왜 하필 딱 더블 워드 단위로 쓰는지
이유는 아직 추상적, 두리뭉술.

여하튼 이러한 이유로
C에서는 구조체나 함수를 만들때도
크기가 큰 데이터 타입을 나중에 선언하는게 그래서 좋다.
(멋진 프...로그래머가 되자)

메모리 단편화

padding 에 의해
필요치 않은 자리를 넓게 할당하는게 내부 단편화.

분명 전체적으로는 메모리가 충분하나
실제로는 메모리가 할당 불가능한게 외부 단편화.

외부 단편화는 측정이 어렵기때문에
내부 단편화를 늘리는 식으로 오류 조정.

내부 단편화가 모이면 외부 단편화인가? ....

메모리 할당 정책

first fit, best fit, next fit,
Worst fit, Buddy System 다섯 가지 설명.

Worst fit은 일단 가장 큰 블록을 할당하고,
Buddy system은 아예 2의 제곱 단위로 관리.

장점, 단점 설명.

Q. 만약 전체 블록 대신 가용 블록만 검색한다면 검색 속도가 줄어드는가?

경계 태그 관련 이라고 생각했는데 메모리 할당 영역인가.
사실 둘은 걸쳐져있는 것 같긴 하다.

명시적, 묵시적 가용 리스트

묵시적 가용 리스트.

sbrk 라는 함수로
받는 incr에 따라 brk의 위치는 실제로 변하지만
함수는 아무것도 반환하지 않음....

(디버깅 하기 힘들겠다.)

실제 할당할때
블록 앞에
사이즈/가용,비가용 여부
가 적힌 헤더를 설명하면서

헤더만 있으면
빈 가용 블록끼리 연결하는데에
애로사항이 있기때문에
경계 태그, 풋터를 다는 이유를 설명.

연결하는 경우 네 가지를 설명.

...

명시적 가용 리스트는 아직 공부가 필요함.

구조체로 추가적으로 정의되었기때문에
명시적 가용 리스트는 아닌지 제안함.

demand-zero memory

일반 파일, 무기명 파일 설명.

시스템 콜 함수에서
일반 파일을 호출할 때와 무기명 파일 호출할 때를 설명.

fd인자를 받을 때와 무기명 파일의 차이점과,
무기명 파일이 메인 메모리를 쓰기 때문의 효율성,
임시 데이터로서의 장점,

프로세스 간 공유 가능한 무기명 파일임,

OS를 할 때 더 유용한 것 같긴하지만
생김새는 동적할당과 유사하다는 얘기.

시스템 콜

시스템콜.
바로 하드웨어에 접근하기 보다
OS에 먼저 요청하여 처리하는 것을 설명.

실제로 시스템콜을 쓸 일은 별로 없긴 함.
mmap, munmap 함수 등도 예시로 나옴.

DMA

DMA가 사실 동적 메모리 할당은 아닌가 의심되지만
직접 메모리 접근으로 설명.

별도의 하드웨어에서 스스로 처리하는 메커니즘.
CD, 블루레이 등에서 코팅된 자성을 띄는 물질도
그런 하드웨어와 관련이 있음을 설명.

하지만 지금은 CPU를 거치지 않는다면
해킹 당하기 쉽기 때문에 쓰지 않는 기술임.

이더넷

LAN, hub, bridge, router
protocol software 설명.

그리고 캡슐화 언급.

이후 코어는
malloc, init, free,
가용 조작 매크로를 내일(목) 3시쯤에 하기로.

내가 맡은 부분은 free.

profile
개발자 희망...

0개의 댓글