Notice
Recent Posts
«   2024/11   »
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
Archives
관리 메뉴

교대최소제곱법

[퀴즈 오답노트] 세그멘테이션, DMA, 포인터 배열 본문

크래프톤 정글

[퀴즈 오답노트] 세그멘테이션, DMA, 포인터 배열

옐라크레 2023. 11. 15. 16:36

페이징과 세그멘테이션

모든 메모리 관리에는 단편화 문제가 생기고 (현실적으로는)

외부 단편화 해소를 위한 것이 페이징

내부 단편화 해소를 위한 것이 세그멘테이션

 

페이징과 세그멘테이션의 차이

페이징 → 일정한 크기의 페이지로 분할해서 메모리에 적재

세그멘테이션 → 논리적 단위인 세그먼트로 분할해서 메모리에 적재

 

돼지를 비유하면

무조건 같은 크기로 잘라서 넣는 것 → 페이징

부위 별로 잘라서 보관하는 것 → 세그먼트

 

세그먼트는

부위 별로 잘라서 보관하기 때문에 내부 단편화가 생기지 않는다

하지만 부위의 크기가 다 다르기 때문에 외부 단편화 문제가 발생한다

 

단편화가 생기는 것은 똑같은데 그럼 왜 세그멘테이션이 아니라 페이징을 쓰나요?

→ 외부 단편화를 파악하는 것이 더 복잡하기 때문!

차라리 내부 단편화가 생기는 것이 차악이기 때문에 페이징을 채택한 것이다.


DMA는 Direct Memory Access이다

하드웨어에서 메모리로 바로 접근하여 CPU의 중재 없이 데이터를 읽고 쓸 수 있게 하는 기능

 

이를 통해 CPU의 부하를 줄여 전체 시스템의 효율성을 올릴 수 있고

하드웨어는 버스를 따로 사용하기 때문에 데이터 전송 속도가 향상되어 전반적인 시스템 응답 시간이 단축된다


포인터 배열

포인터 배열은 간단하게 생각하면 이차원 배열이다

[C언어] 배열포인터, 포인터배열 정리 (pointer)

 

[C언어] 배열포인터, 포인터배열 정리 (pointer)

안녕하세요! BlockDMask 입니다 오늘은 많이들 햇갈려 하는 array pointer pointer array pointer pointer array array pointer. C언어의 포인터 개념과 배열 개념을 조금은 알고 계셔야 내용을 이해할 수 있을 것 입니

blockdmask.tistory.com

 

새롭게 알게된 지식은 %s의 작동방식이다

%s은 주소값을 받고 그 주소값 안에 저장되어 있는 문자를 시작으로 \0이 나올 때까지 출력하는 format이다.

printf function(함수) - %s, %c차이

 

printf function(함수) - %s, %c차이

char *a = "1234"; printf ("%s, %c", a, *(a)); %s는 char *형을 요구 %c는 char형을 요구 %s는 주소값을 받고 그 주소값에 안에 저장되어 있는 문자를 시작으로 \0이 나올 때까지의 문자열을 출력 %c는 실제 문자

comfun.tistory.com