<aside> <img src="/icons/list-indent_lightgray.svg" alt="/icons/list-indent_lightgray.svg" width="40px" />

Table Of Content

</aside>

프로세스와 스레드

프로세스(Process) : 컴퓨터에서 실행되고 있는 프로그램, CPU 스케줄링의 대상이 되는 작업(task) 스레드(Thread) : 프로세스 내 작업의 흐름

프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행한다.


1. 프로세스와 컴파일 과정

프로세스의 생성

컴파일 과정 (C언어 기준)

image.png

컴파일러가 소스 코드를 기계어로 번역하여 실행 파일을 만드는 과정이다.

단계 설명 결과물
1. 전처리 • 소스 코드의 주석 제거
#include 등 헤더 파일 병합
• 매크로 치환 전처리된 소스 코드
2. 컴파일 • 오류 처리
• 코드 최적화
• 어셈블리어로 변환 어셈블리 파일(.s)
3. 어셈블 • 어셈블리어를 기계어로 변환 목적 코드(.o) → 운영체제마다 다름, 리눅스는 .o
4. 링킹 • 프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드 결합하여 실행 파일 생성 실행 파일(.exe, .out)

라이브러리 종류

종류 설명 장점 단점
정적 라이브러리 빌드 시 모든 코드를 실행 파일에 포함 시스템 환경 등 외부 의존도 낮음 코드 중복 등 메모리 효율성이 저하
동적 라이브러리 실행 시 필요할 때만 DLL이라는 함수 정보를 통해 참조 메모리 효율성 높음 외부 의존도 높음

2. 프로세스의 상태

프로세스의 상태는 여러 가지 상태 값을 갖는다.