min's devlog

메모리 영역과 변수 본문

Linux/TCP IP Socket Programming

메모리 영역과 변수

값진 2021. 3. 26. 17:25

 

os에서 가장 중요한것 : 자원! - 프로세스, 파일, cpu 
그중 프로세스 

test.c 를 gcc -i test test.c 로 컴파일하면 test라는 실행파일이 생김 
/test 시 실행하게 됨, main memory로 로드됨 

src code->compile->object code->cpu mainmemory->결과를 모니터에 

프로세스 
-실행중인 프로그램 
-프로그램이 메모리에 있거나, cpu에 있거나 

-사용자모드: 사용자 권한으로 명령실행 
-커널모드: 컴퓨터의 자원을 실행하기 위한 프로그램 
하드디스크를 읽기 위한 read()함수 등 

★ 
-준비ready 상태에서 cpu를 할당받으면 
실행running 상태에서 오래걸리는 IO를 만나면 {printf같은 기계적함수(화면에출력,읽기)} 
블록waiting 상태에 보내서 처리하게함 
IO가 끝나면 다시 ready 상태로 간다 
중간에 cpu를 바로 할당받을 수 없고 ready상태로 간다 
/test 실행도중 ^z 누르면 중단stopped 상태가 된다 
프로세스는 종료되었으나 부모프로세스에 보내지 않은 zombie좀비상태 


Sample.c (12:20)
environ에는 환경변수가 들어간다.
(env를 치면 환경변수들을 볼 수 있다)

3 부분 : 초기화가 된 global변수
uint: unsigned int

int함수 안에는 지역변수들(auto_ptr도) ( 함수 나가면 값 없어짐)
근데 static은 함수가 종료되더라도 남아있다

malloc은 10바이트 할당받고 리턴하는, 여기서 하는일 없는 아주 간단한 pro

->>gcc -o sample sample.c 해서 컴파일해 실행하면sample생성
./sample 하면 실행파일이 메인메모리에 load 된다.

스택에서는 : 변하는 local 값들을 관리한다
데이터영역은 : 내가 방금 할당받은 메모리영역

프로세스 이미지에는,
(저 코드들은) 어셈블드 코드영역(코딩), 데이터영역(초기화된부분,안된부분)
,stack에 의해 항상 바귀는 영역,
힙(메모리)영역, 환경변수영역이 있다


스택 : 현재 호출되어 실행중인 함수의 코드와 환경정보들을 저장
힙 : 스택은 영역을 사용하던 메모리가 함수의 종료와 함께 사라지지만
malloc()을 사용한 영역은 힙에 저장된다

int main(void)
a=() ~
하면 a함수로 간다

 

 

'Linux > TCP IP Socket Programming' 카테고리의 다른 글

소켓 옵션 종류(2)  (0) 2021.03.28
소켓옵션 종류  (0) 2021.03.27
소켓과 소켓 옵션  (0) 2021.03.27
fork()와 wait()  (0) 2021.03.27
어셈블된 코드  (0) 2021.03.26
Comments