Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘
- 사이드프로젝트
- Vue.js
- 리액트
- 4기
- defee
- pintos
- 모션비트
- TiL
- 자바
- 스택
- JavaScript
- 큐
- 나만무
- userprog
- 백준
- 크래프톤 정글
- 코드트리
- 소켓
- Flutter
- 자바스크립트
- 핀토스
- CSS
- 크래프톤정글
- corou
- 오블완
- Java
- 티스토리챌린지
- 시스템콜
- HTML
Archives
- Today
- Total
미새문지
크래프톤 정글 week05, day44 - 퀴즈, 메모리 관리 전략, 잔디심기 본문
728x90
오늘 퀴즈푸는 날이라 몇 문제 끄적인다.
페이징과 세그멘테이션 정의 및 각각의 장단점
- 페이징
- 메모리를 동일한 크기의 블록, 즉 ‘페이지’로 나누는 방법
- 각 페이지는 가상 메모리 주소와 매핑되며, 페이지 테이블을 통해 메모리 주소로 변환된다.
- 메모리 관리를 단순화하고, 메모리 낭비를 줄이며, 프로그램 간의 메모리 충돌을 방지한다.
- 장점
- 외부 단편화 문제를 해결함
- 메모리 관리가 상대적으로 단순함
- 단점
- 내부 단편화 발생 가능성이 있다.
- 페이지 테이블 관리에 추가적인 메모리가 필요
- 세그멘테이션
- 메모리를 ‘세그먼트’로 나누는 방법
- 각 세그먼트는 시작 주소와 길이를 가지며, 다른 유형의 데이터를 위해 사용된다.
- 메모리를 더 유연하게 관리할 수 있게 해주며, 프로그램의 논리적 구조를 반영할 수 있다.
- 장점
- 메모리를 논리적 단위로 나누어 프로그램의 구조를 반영함
- 세그먼트별 보호와 공유가 용이함
- 단점
- 외부 단편화 발생 가능성이 있다.
- 메모리 관리가 복잡해질 수 있다.
메모리 할당 방법으로 할당되는 순서 작성
메모리 블록이 A(10), B(50), C(25), D(30), E(40) 이렇게 있을 때 First-fit, Next-fit, Best-fit 순서
- First-fit
- B-C-D-A
- Next-fit
- B-C-D-E
- Best-fit
- D-C-E-A
코드의 실행결과를 작성하기
#include <stdio.h>
int main() {
char* str[2];
str[0] = "hello!";
str[1] = "jungler";
printf("1. %s\n", str[0] + 1);
printf("2. %s\n", (str + 1)[0] + 2);
return 0;
}
결과
- ello!
- ngler
메모리 관리 전략
단편화
- 메모리를 비효율적으로 사용하게 되어 발생하는 문제이다.
- 이는 메모리 공간이 작은 조각들로 나눠져서 사용되는 현상을 지칭하며, 이로 인해 전체 메모리를 효율적으로 사용하지 못하는 문제가 발생할 수 있다.
- 단편화 종류
- 내부 단편화
- 할당된 메모리 공간 내부에서 일부분이 사용되지 않는 현상
- 8바이트 메모리 안에 7바이트만 사용하게 되면 1바이트가 남게 되는데 이런 메모리 잉여 자리를 **패딩(padding)**이라고 한다
- 내부 단편화를 해결하려면 세그멘테이션을 사용해야 한다.
- 외부 단편화
- 메모리 공간 중 사용되지 않는 부분들이 여러 개의 작은 조각으로 나뉘어져 있는 상태를 말한다.
- 이로 인해 충분한 메모리 공간이 존재해도 연속적인 공간이 부족해 메모리 할당이 어려워지는 문제가 발생할 수 있다.
- 외부 단편화를 해결하려면 페이징을 사용해야 한다.
메모리 할당 방법
- First-Fit(최초 적합)
- 메모리를 처음부터 탐색하여, 요구 사이즈보다 크거나 같은 첫 번째 빈 공간에 메모리를 할당하는 방법
- 이 방법은 메모리를 할당하는 데 필요한 시간을 최소화하는 장점이 있지만, 메모리 끝 부분에 큰 빈 공간이 남아있을 수 있는 외부 단편화를 일으킬 수 있다.
- Next-Fit(다음 적합)
- First-Fit과 비슷하지만, 이전에 할당했던 메모리 위치의 다음부터 탐색을 시작하는 방법
- 이 방법은 First-Fit보다 외부 단편화를 덜 일으키지만, 메모리의 앞 부분에 큰 빈 공간이 남아있을 수 있는 문제점이 있다.
- Best-Fit(최적 적합)
- 메모리를 처음부터 끝까지 탐색하여, 요구 사이즈와 가장 잘 맞는 빈 공간에 메모리를 할당하는 방법
- 이 방법은 메모리를 효율적으로 사용할 수 있지만, 메모리를 탐색하는 시간이 오래 걸릴 수 있다.
- Worst-Fit(최악 적합)
- 메모리를 처음부터 끝까지 탐색하여, 요구 사이즈보다 가장 큰 빈 공간에 메모리를 할당하는 방법
- 이 방법은 큰 빈 공간을 유지할 수 있지만, 많은 수의 작은 빈 공간을 생성하여 외부 단편화를 일으킬 수 있다.
오늘의 잔디심기
백준
|
21760
|
파이썬
|
실버5
|
야구 시즌
|
import sys
input = sys.stdin.readline
def Baseball_season():
case = int(input())
for _ in range(case):
n, m, k, d = map(int, input().split())
b = 2*d//(k*n*m*(m-1) + m*m*n*(n-1))
if b:
print(m*(m-1)*n*k*b//2 + m*m*n*(n-1)*b//2)
else:
print(-1)
Baseball_season()
이번 주차 malloc lab은 내일 마무리하려고 한다.
학습 시간 : 10 ~ 26시
728x90
'크래프톤 정글 > TIL' 카테고리의 다른 글
크래프톤 정글 week06, day46 - 소켓, 파일 디스크립터, 잔디심기 (1) | 2024.02.23 |
---|---|
크래프톤 정글 week05, day45 - Malloc Lab(Implicit), 잔디심기 (1) | 2024.02.22 |
크래프톤 정글 week05, day43 - 힙 정렬 (1) | 2024.02.21 |
크래프톤 정글 week05, day42 - 메모리 관련 키워드 (2) | 2024.02.21 |
크래프톤 정글 week05, day41 - 시스템 콜 함수, IPC (1) | 2024.02.21 |