메모리 공간할당은 누가하는지... 재질문
세이
질문 제목 :메모리 공간할당은 누가하는지... 재질문질문 내용 : 아침에도 질문을 했었는데 정확히 이해가 가지않아서 다시 정리해서 올려봅니다.일단 재가 아는 배운 개념은 프로그램이 실행되면 바이너리 코드가 ram의 메모리 공간중에서 code area라는 코드영역에 올라가게 되고, cpu가 코드를 하나씩 가져와 실행시킨다. 입니다.그리고 질문 내용은 그렇다면 코드중에서 변수나, 문자열 상수, 상수등이 오게될경우 cpu가 그에 맞는 메모리공간을 할당해주고, cpu가 메모리공간에 데이터 값을 저장하는지 였습니다.그런데 답변 내용을 보니 어떤분꼐서
코드 세그먼트(code segement), 데이터 세그먼트(data segment), 스택 세그먼트(stack segment) 등이 있고,소스 중 코드(명령어들)은 코드 세그먼트에,정적 변수는 데이터 세그먼트에 저장되고,자동 변수는 스택 세그먼트에서 생성되고 소멸된다고 답변을 달아주셨습니다.
지금 이게 살짝 이해가 안가서 그러는데요.위 답변자분 말을 토대로 재 개념하고 정리해보자면 먼저 바이너리 코드가code area라는메모리공간에 올라가고 cpu가 한줄씩 실행시키면서 명령어들이 나오면 코드 세그먼트에 저장시키고, 정적변수가 오면 데이터 세그먼트에 저장시키고, 자동 변수가 오면 스택 세그먼트에 생성했다가 소멸시키고, 이런다는 말인가요?
아니면 애초에 바이너리 코드가 메모리공간에 올갈때 코드 세그먼트, 데이터 세그먼트, 스택 세그먼트 등으로 나뉘어서 메모리공간에 올라간다는 소리인가요?
질문을 정리해 보자면,1.재가 열혈c프로그래밍 책으로 공부를 하고있는데 거기서 프로그램이 실행되면 바이너리 코드가 code area라는 메모리 공간에 올라가고 cpu가 한줄씩 가져와 실행한다고 설명했는데 이 개념이 맞나요?(특히 code area라는 공간이 존재하는게 맞나요?)
2. 프로그램이 실행되면 바이너리 코드 전체가 메모리 공간에 올라가고 거기서 코드, 데이터, 스택 세그먼트 등으로 나뉘어서 다시 따로 저장되는지 아니면 바이너리 코드가 메모리 공간에 올라갈때 애초에 나뉘어서 올라가는지...
3. 그리고 cpu가 코드를 한줄씩 가져다가 실행하다가 변수선언문이나 상수등이 나오면 그때 메모리를 할당하고 데이터값을 메모리 공간에 저장하는게 맞나요?
4. 맞다면 그 과정을 cpu가 하는건가요?
-
플랜
그리고 저런 이야기는 프로그래밍을 처음 배우는 초심자에겐 초보라 어렵고,
그냥 언어만 배우는 사람에겐 아무런 쓸대없는 쓰잘대기 없는 이야기라 의미없는 내용입니다.
실행파일이 어떻게 생성되고 로더와 링커는 이렇게 저렇게 작동되서 운영체제가 메모리를 이렇게 관리하고 어쩌고 저쩌고, cpu는 어셈블리 코드를 이렇게 저렇게 전기 신호 뿅뿅 거리면서 어쩌고 저쩌고...
이런건 다 언어 배울땐 쓸대 없는 이야기 입니다.
프로그래밍을 배우는 경우야 지나가면서 차근히 -
모두다
컴파일 타임에 생성될 데이터에 대한 저장공간은 모두 바이너리 안에 잡히고 그 데이터가 들어갑니다.
예를들면 정적배열이나 리터럴이 이런 류의 데이터입니다.
로더가 해당 바이너리 파일을 로딩해 메모리에 사상할때, 그 땐 어떤 데이터가 어떤 종류로 다뤄질 지가 좀 달라집니다.(스택이란건 여기서 나오는 이야깁니다)
동적 메모리를 끌어올경우는 또 이야기가 달라집니다.
자세한건 컴퓨터구조, 어셈블리, 시스템소프트웨어, os 와 같은 부분과 elf같은 실행 파
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695738 | fopen과fclose질문~~ (5) | 희선 | 2025-05-23 |
2695707 | 3의 배수 나타내기. (2) | 수리 | 2025-05-23 |
2695626 | 피보나치수열 과제 때문에 질문 드립니다. (6) | 옆집언니 | 2025-05-22 |
2695595 | 포인트공부중입니다 int형에서 4=1 인가요? (3) | 족장 | 2025-05-22 |
2695567 | 드라이브 고유번호를 가져오는 함수 (2) | 초코맛사탕 | 2025-05-21 |
2695533 | 음수의 산술변환! 질문이요 ㅠㅠ... (4) | 꽃여름 | 2025-05-21 |
2695506 | 구조체 배열 이용 도서목록 출력 프로그램 (1) | 가을귀 | 2025-05-21 |
2695450 | c언어 함수 질문이요.... | 이슬비 | 2025-05-20 |
2695403 | VirtualAlloc함수 및 메모리 질문 | 크리에이터 | 2025-05-20 |
2695355 | c언어 for함수 | 미쿡 | 2025-05-19 |
2695327 | 안녕하세요 제가 이번에 좀 큰 프로그램을.. | 악당 | 2025-05-19 |
2695295 | mutex동기화의 thread기반 채팅 서버소스 질문입니다 | 그루터기 | 2025-05-19 |
2695270 | 질문이요..swap 관한겁니다..ㅠㅠ (3) | 콩알녀 | 2025-05-19 |
2695244 | 노땅초보궁금한게 하나 있는데요..반복문(while문)초보자질문 (6) | 큰꽃늘 | 2025-05-18 |
2695166 | do while 문 어떤것이잘못된건지 모르겠어요 (2) | 아이폰 | 2025-05-18 |
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |
2695010 | C++의 STL은 왜 굳이 템플릿화 시켜서 라이브러리를 만드나요? (초보수준의 질문..) (2) | 엘보어 | 2025-05-16 |