Home 중간정리
Post
Cancel

중간정리

컴파일과 프로세스

  • 프로그래밍 언어
    • 컴파일 언어
      • 개발자가 프로그래밍 언어로 개발 -> 컴파일 -> 0과1로 이루어진 실행파일 생성
      • 컴파일 과정에서 개발자의 문법오류를 체크하고 CPU 에서 실행파일로 미리 만들기 때문에 속도가 빠르다.
      • EX) C, C++, C#
    • 인터프리터 언어
      • 미리 기계어로 만들지 않고 실행시 코드를 한 줄씩 해석해 실행한다.
      • 미리 검사를 하지않기 떄문에 실행하면서 오류가 날수도 있고 속도가 느리다.
      • EX) Javascript, Python, Ruby
  • 프로세스의 메모리 구조
    • 코드영역: 실행해야할 코드
    • 데이터 영역: 전역변수, 배열
    • 프로세스가 실행될때 할당되는 메모리
      • 힙: 실행중에 메모리 공간을 할당할 수 있는 유동적인 공간
      • 스택: 지역변수와 함수관련값
  • 컴파일 과정 test.c -> 전처리기 (: 파일의 주석이 사라지고 import되는 것들을 가지고 온다.) -> test.i -> 컴파일러 (: 어셈블리어로 변환한다.) -> test.s -> 어셈블러 (: 오브젝트파일로 변환한다.) -> test.o -> 링커(: 여러개의 오브젝트 파일을 하나의 데이터영역과 코드영역으로 묶고 실제 실행될 주소로 매핑시켜준다. -> test.exe -> exe파일을 실행하면 운영체제가 프로세스를 생성한다. -> exe의 코드영역과 데이터 영역을 프로세스의 코드영역과 데이터영역에 넣어주고 빈 상태의 힙과 스택을 할당한다. PCB를 만들어 관리가능하게 한다. ->프로그램 카운터(다음 실해할 명령어의 주소)를 첫번째 주소로 할당한다. -> cpu 스케줄링 -> 프로세스 작업하다 끝남

  • 오브젝트 파일(.o): 0과1로 구성된 기계어로 코드영역과 데이터영역으로 나뉘어져있다.
  • 실행파일(.exe): 완벽하게 코드영역과 데이터 영역으로 되어있다.
This post is licensed under CC BY 4.0 by the author.

데드락

메모리