๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
: program์ ์คํ์ํค๋ฉด ์ด์์ฒด์ ๋ ์ฐ๋ฆฌ๊ฐ ์คํ์ํจ program์ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํด์ค.
์ฆ os๋ program์ ์คํ์ํค๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ๊ณต
ํ ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ stack, heap, data ์์ญ์ผ๋ก ๋๋ ์ง
์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์ด๋ ํ ์ฉ๋๋ก, ์ธ์ , ์ด๋์ ํ ๋น๋๋๊ฐ
-
ํ ๋น ์๊ธฐ: ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋๋ง๋ค
-
ํ ๋น ์ฅ์: main memory (RAM)
-
ํ ๋น ์ฉ๋: program ์คํ ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(์ง์ญ/์ ์ญ๋ณ์ ์ ์ธ์ ์ํด) ํ ๋น
๋ฐ์ดํฐ ์์ญ
: ์ ์ญ๋ณ์์ static ๋ณ์๊ฐ ํ ๋น๋๋ ์์ญ
ํ๋ก๊ทธ๋จ์ด ์์๊ณผ ๋์์ ํ ๋น๋๊ณ program์ด ์ข ๋ฃ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์๋ฉธ๋จ
#include <stdio.h>
int a=10; // data ์์ญ์ ํ ๋น
int b=20; // program ์คํ์, main ํจ์๊ฐ ํธ์ถ๋๊ธฐ ์ ์ data์์ญ์ ํ ๋น๋จ
// -> progam์ด ์ข
๋ฃ๋ ๋๊น์ง ์กด์ฌ
int main(){
...
return 0;
}
stack ์์ญ
: ํจ์ ํธ์ถ ์ ์์ฑ๋๋ ์ง์ญ๋ณ์์ ๋งค๊ฐ ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ
ํจ์ ํธ์ถ์ด ์๋ฃ๋๋ฉด ์ฌ๋ผ์ง
#include <stdio.h>
void func1(int);
void func2(int);
int a=10; // ์ ์ญ๋ณ์ a,b๊ฐ data์์ญ์ ํ ๋น๋จ
int b=20;
int main(){
int i=100; // ์ง์ญ์ ์ i๊ฐ stack ์์ญ์ ํ ๋น๋จ
func1(i);
func2(i);
return 0;
}
void func1(int c){
int d=30; // ๋งค๊ฐ๋ณ์ c์ ์ง์ญ๋ณ์ d๊ฐ stack ์์ญ์ ํ ๋น๋จ -> ํธ์ถ์ด ๋๋๋ฉด stack์์ ์ญ์ ๋จ
}
void func2(int e){
int f=40; // ๋งค๊ฐ๋ณ์ e์ ์ง์ญ๋ณ์ f๊ฐ stack ์์ญ์ ํ ๋น๋จ
}
heap ์์ญ
: ํ์์ ์ํด ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ๋ ์ฌ์ฉ (ํ๋ก๊ทธ๋๋จธ๊ฐ ํ ๋น)
heap์์ญ์ ์ธ์ ํ ๋นํ๋๊ฐ
์) ๋ฐฐ์ด
int main(){
// ์ ์์ ์ธ ๋ฐฐ์ด ์ ์ธ
int arr[10];
// ๋น์ ์์ ์ธ ๋ฐฐ์ด ์ ์ธ: ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์ซ์๋ก ์ก์์ฃผ๋ ๊ฒ
int i=0;
scanf("%d", &i);
int arr[i];
return 0;
}
์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์ ์ผ๋ฉด ์ ์์ ์ธ ๋ฐฐ์ด์ ์ ์ธ ๊ฒฝ์ฐ arr ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 40byte๋ผ๋ ๊ฒ์ ์ ์ ์์ง๋ง ๋น์ ์์ ์ธ ๋ฐฐ์ด์ ์ธ์ ๊ฒฝ์ฐ i์ ํฌ๊ธฐ๊ฐ 4byte์์ ์ ์ ์์ง๋ง arr๋ฐฐ์ด์ ํฌ๊ธฐ๋ ์ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด...
int main(){
int i=10;
int arr[i];
return 0;
}
์์ ๊ฐ์ด ์ ๋๋ค๋ฉด arr ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 10 (40byte)์ด๋ผ๋ ๊ฒ์ ์ ์ ์์ง ์์๊น?
-> NO
complieํ๋ ๋์ i๊ฐ 4byte ํฌ๊ธฐ์์ ์ ์ ์์ง๋ง i๊ฐ 10์ผ๋ก ์ด๊ธฐํ๋์๋ค๋ ์ฌ์ค์ ๋ฌด์๋จ
i=10์ผ๋ก ์ด๊ธฐํ ๋์๋ค๋ ๊ฒ์ ์คํ๋๋ ๋์์ธ, run time์ ๊ฒฐ์ ๋จ
=> ๋ฐ๋ผ์ complier๋ arr์ ํฌ๊ธฐ๊ฐ 40byte ๋ผ๋ ์ฌ์ค์ ๋ชจ๋ฅธ๋ค!
heap ์์ญ: ํ ๋นํด์ผ ํ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ฅผ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ๊ฒฐ์ ํด์ผ ํ๋ ๊ฒฝ์ฐ(run time) ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ ๊ณต๊ฐ
-
๋์ ํ ๋น: ์คํ์๊ฐ ๋์ ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๋ ๊ฒ, ์ฌ์ฉ์ด ๋๋๋ฉด ์ด์์ฒด์ ๊ฐ ์ธ ์ ์๋๋ก ๋ฐ๋ฉ (↔ ์ ์ ํ ๋น: program์ด ์คํํ๋ ์๊ฐ program์ด ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น์ด ์ด๋ฃจ์ด์ง)
-
C++์ธ์ด์์๋ new, delete ์ฐ์ฐ์๋ฅผ ํตํด ๋์ ํ ๋น (Cํจ์๋ ์ด์ฉ๊ฐ๋ฅ)
์ถ์ฒ: http://dsnight.tistory.com/50
์ด ๊ธ์ ์ ์ถ์ฒ ๊ธ์ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์์ต๋๋ค
'Computer Science > ๊ธฐํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ํ ์คํธ ํ์ผ ์๋ฅด๊ธฐ (text file crop) (0) | 2021.11.04 |
---|---|
[๊ฐ๋ฐ์ฉ์ด] pilot ์ด๋? (0) | 2021.05.12 |
[Window10 ๋จ์ถํค] ์๋์ฐ10 ์ ์ฉํ ๋จ์ถํค ๐น (0) | 2021.04.22 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ] ํ๊ธฐ ๊ด๋ จ ์๋ฃ(์์ฝ๋ณธ, ๊ธฐ์ถ)์ ์ํ ํ๊ธฐ (0) | 2021.03.08 |
[์ด์์ฒด์ ] process vs thread (0) | 2021.03.06 |
[์ด์์ฒด์ ] kernel vs shell ์ฐจ์ด (0) | 2021.03.06 |
ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ ๋ง๋ค๊ธฐ (python) (0) | 2021.03.05 |
HTML/CSS font color name, HEX code, RGB (0) | 2021.03.05 |