프로세스: 컴퓨터에서 실행되고 있는 프로그램
CPU 스케줄링의 대상이되는 작업이라는 용어와 거의 같은 의미로 쓰인다.
스레드: 프로세스 내 작업의 흐름
인스턴스화란 프로그램이 메모리에 올라가 프로세스가 되늰 것을 말한다.
프로그램: 구글 크롬 프로그램(chrome.exe)같은 실행 파일
프로세스: 실행 파일을 실행했을 때
(c언어 기반 프로그램 기준으로 설명)
컴파일러가 컴파일 과정을 통해 컴퓨터가 이해할 수 있는 기계어로 번역하여 실행할 수 있는 파일을 만들게 된다.
컴파일 과정
: 소스 코드 주석 제거, #include 등 헤더 파일을 병합하여 매크로를 치환
: 오류처리, 코드 최적화 작업, 어셈블리어로 변환
: 어셈블리어를 목적 코드(object code)로 변환
(확장자는 운영체제마다 다름. 리눅스는 .o)
: 프로그램 내 라이브러리 함수, 다른 파일들과 목적 코드를 결합하여 실행파일을 만든다.
(확장자 .exe 또는 .out)
정적 라이브러리와 동적 라이브러리
정적 라이브러리: 프로그램 빌드 시 라이브러리가 제공하는 모든 코드를 실행 파일에 넣는 방식으로 라이브러리를 쓰는 방법
- 장점: 시스템 환경 등 외부 의존도가 낮다.
- 단점: 코드 중복 등 메모리 효울성이 떨어진다.
동적 라이브러리: 프로그램 실행 시 필요할 때만 dll이라는 함수 정보를 통해 참조하여 라이브러리를 쓰는 방법
- 장점: 메모리 효율성
- 단점: 외부 의존도가 높아진다.