[cs 스터디] 3-3. 프로세스와 스레드 - 프로세스와 컴파일 과정

YooJeeun·2025년 1월 7일

cs 스터디

목록 보기
32/65

프로세스: 컴퓨터에서 실행되고 있는 프로그램
CPU 스케줄링의 대상이되는 작업이라는 용어와 거의 같은 의미로 쓰인다.
스레드: 프로세스 내 작업의 흐름

  1. 프로그램이 메모리에 올라감
  2. 프로그램 -> 프로세스 => 인스턴스화가 일어남
  3. 운영체제의 CPU 스케줄러에따라 CPU가 프로세스를 실행

프로세스와 컴파일 과정

인스턴스화란 프로그램이 메모리에 올라가 프로세스가 되늰 것을 말한다.
프로그램: 구글 크롬 프로그램(chrome.exe)같은 실행 파일
프로세스: 실행 파일을 실행했을 때

(c언어 기반 프로그램 기준으로 설명)
컴파일러가 컴파일 과정을 통해 컴퓨터가 이해할 수 있는 기계어로 번역하여 실행할 수 있는 파일을 만들게 된다.

컴파일 과정

전처리

: 소스 코드 주석 제거, #include 등 헤더 파일을 병합하여 매크로를 치환

컴파일러

: 오류처리, 코드 최적화 작업, 어셈블리어로 변환

어셈블러

: 어셈블리어를 목적 코드(object code)로 변환
(확장자는 운영체제마다 다름. 리눅스는 .o)

링커

: 프로그램 내 라이브러리 함수, 다른 파일들과 목적 코드를 결합하여 실행파일을 만든다.
(확장자 .exe 또는 .out)

정적 라이브러리와 동적 라이브러리
정적 라이브러리: 프로그램 빌드 시 라이브러리가 제공하는 모든 코드를 실행 파일에 넣는 방식으로 라이브러리를 쓰는 방법

  • 장점: 시스템 환경 등 외부 의존도가 낮다.
  • 단점: 코드 중복 등 메모리 효울성이 떨어진다.

동적 라이브러리: 프로그램 실행 시 필요할 때만 dll이라는 함수 정보를 통해 참조하여 라이브러리를 쓰는 방법

  • 장점: 메모리 효율성
  • 단점: 외부 의존도가 높아진다.
profile
제니벨로그

0개의 댓글