min's devlog
메모리 영역과 변수 본문
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 |