일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- project3
- 유니티
- 알고리즘
- kraftonjungle
- 알고리즘수업-너비우선탐색2
- Unity
- 4기
- 연결리스트
- 크래프톤 정글 4기
- 티스토리챌린지
- 크래프톤 정글
- 크래프톤정글
- 백준
- TiL
- BFS
- 다익스트라
- 이벤트 함수 실행 순서
- 파이썬
- C
- 추상클래스와인터페이스
- 네트워크
- User Stack
- 오블완
- anonymous page
- KRAFTON JUNGLE
- 크래프톤정글4기
- pintos
- 핀토스
- c#
- 전쟁-전투
- Today
- Total
말감로그
demand zero memory 본문
demand zero memory
demand zero memory는 필요할 때 (demand) 할당하고 0으로 초기화해주는(zero) 메모리를 말한다.
리눅스의 메모리 시스템은 매우, 최대한 게으른 방식으로 작동하도록 되어있다.
어떤 자원을 요청하거나 동작을 요청했을 때, 그것이 정말 필요해질 때까지 실제 자원을 할당하거나 동작을 실행하지 않는다는 것을 의미한다.
-> 메모리 사용 효율성이 향상되고, 시스템 자원을 절약할 수 있다.
즉, 우리(user program)가 kernel에게 메모리를 할당해달라고 요청하면(sbrk) kernel은 거의 아무것도 하지 않고(특정한 VM 영역이 할당되었다는 최소한의 표시만 해두고) 우리에게 할당이 끝났다고 알려준다.
-> 실제 메모리는 할당되지 않은 상태로 남아있게 됨.
이렇게 되면 유저는 메모리가 할당된 줄 알고 해당 주소에 뭔가를 쓰거나 읽을텐데, 처음 읽거나 쓰려고 하는 순간 실제 메모리(페이지)가 할당되어있지 않기 때문에 page fault가 발생할 것이고 그제서야 kernel은 사용하지 않는 메모리(페이지)를 할당하고 , 그 페이지를 0으로 채운 뒤에, 유저가 원래 하려고 했던 명령어를 다시 실행하게 된다.
따라서 "demand-zero memory"는 힙 영역이 초기화되지 않은 상태로 시작되어, 프로그램이 메모리를 필요로 할 때 실제로 사용되기 전까지 초기화되지 않은 상태를 유지하며, 메모리 사용 효율성을 높이는 것을 의미한다.
출처
[SW 정글 45일차] segregated list 구현과 demand-zero memory
오늘은 지난 번에 계속해왔던 explicit dynamic allocator구현에서 free block list를 구현할 때 implicit list, explicit list를 사용하여 구현했었고 이번에는 segregated list를 사용해서 구현해보려고 한다. 1. segregat
straw961030.tistory.com
'이론 > 운영체제' 카테고리의 다른 글
32 bit OS vs 64 bit OS (0) | 2024.03.11 |
---|---|
프로세스와 스레드/세마포어와 뮤텍스/CPU 스케줄링 알고리즘/경쟁조건(Race condition)/데드락/문맥교환 (2) | 2024.03.05 |
CPU 스케줄링 알고리즘(FCFS, SJF, Priority Queue, Round Robin, SRTF, MLQ, MLFQ), 4BSD,nice (3) | 2024.02.29 |
DMA(Direct Memory Access) (0) | 2024.02.15 |
가상메모리(Virtual Memory)와 페이징&세그먼트 (0) | 2024.02.15 |