C/C++로 프로그래밍했지만 꽤 많은 시간이 걸렸습니다. 아마도 저는 잘 쓰여지고 권위있는 자료를 읽지 않았을 것입니다.컴파일 된 프로그램이 운영 체제와 상호 작용하는 방법에 대한 질문
(1) Linux/Unix의 경우, 얼마나 큰 사용자 프로그램이 될 수 있습니까? 프로그램이 가질 수있는 스택의 최대 크기? 사용자 프로그램이 사용할 수있는 힙의 최대 메모리 양
(2) C 실행 파일에는 데이터 섹션, 코드 섹션 & 스택 섹션이 있다는 것을 알고 있습니다. 프로그램이 많은 재귀 호출을받는다면 많은 양의 스택이 필요합니다. 이 미리 정의 된 크기의 스택입니까, 재귀가 증가하면 커집니다. 성장의 경우 프로그램의 주소 공간도 동적으로 증가해야합니까? 그렇다면 프로그램을 느리게하지 않겠습니까?
(3) 마찬가지로 프로그램 mallocs가 실행될 때 런타임에 힙의 메모리가 프로그램에 할당되면 프로그램의 주소 공간에 힙 영역을 추가해야합니까? 따라서이 경우에도 프로그램의 페이지 테이블을 업데이트해야합니다. 내 이해가 맞습니까?
(4) 하나의 실행 파일을 구성하기 위해 결합하려는 두 파일에 동일한 이름의 전역 변수를 사용할 수없는 이유는 무엇입니까? 오브젝트 파일의 모양을 밝히는 데 도움이됩니다.
추가 :
나는 http://www.open-std.org/jtc1/sc22/wg...docs/n1256.pdf에서 ISO C99 표준을 읽고있다. 한 번 이상은 프로세스라는 연결하여 동일한 객체 또는 함수를 참조하도록 할 수있는 다양한 범위 또는 동일한 범위에서 선언 확인 시험 과학 ERS 1 확인 시험 파이 어의
6.2.2 연계 : 그것은 42 페이지에 말한다 외부, 내부 및 아무도 연결의 3 개의 종류 가있다.
2 전체 프로그램을 구성하는 번역 단위 집합과 라이브러리 집합에서 외부 연결을 사용하는 특정 식별자를 선언 할 때 동일한 개체 또는 함수를 나타냅니다. 하나의 번역 단위 내에서 내부 식별자 인 을 가진 식별자의 각 선언은 동일한 객체 또는 기능을 나타냅니다. 연결이없는 식별자의 각 선언은 고유 한 엔터티를 나타냅니다.
3 개체 또는 함수에 대한 파일 범위 식별자의 선언에 저장소 클래스 지정 정적이 포함되어 있으면 식별자에 내부 연결이 있습니다. 확인 시험 인터넷 ER 들어
4는 확인 시험 인터넷 ER의 종래 선언이 표시되는 범위 스토리지 클래스 특정한 어 통근 선언 경우 종래 선언 특정한 ES 내부 또는 외부 링크, 나중에 선언에서 확인 시험 인터넷 ER의 연계 이전 선언에서 명시된 연계와 동일합니다. 이전 선언이 표시되지 않거나 이전 선언이 연결을 지정하지 않은 경우 식별자는 외부 연결을가집니다.
5 함수에 대한 식별자의 선언에 저장 영역 클래스가 없으면 함수의 연결은 저장 클래스 지정 extern으로 선언 된 것처럼 정확하게 결정됩니다. 객체에 대한 식별자의 선언에 파일이 있으면 범위 및 스토리지 클래스가 지정되지 않은 경우 해당 링크가 외부입니다.
2 개의 소스 파일에서 int int와 같은 변수를 선언하면이 내용을 읽은 것 같습니다. 둘 다 규칙 5와 4에 따라 외부 연결을 가지고있다. 그리고 규칙 2에 따라, 둘 다 같은 대상을 참조해야한다.그러면 컴파일러가 왜 문제를 일으 킵니까? 표준에서 2 개의 소스 파일에서 이것을 선언 할 수 없다는 암시가 있으며 컴파일 오류가 발생합니다.
감사합니다.
http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm – Anycorn
-1. 네 가지 질문은 네 가지 질문으로 게시해야하므로 앞으로 검색 할 수 있습니다. 현재 제목을 검색 할 수 없습니다. –