프로세스와 컴파일 과정
프로세스(Process)
프로세스는 컴퓨터 시스템에서 실행 중인 프로그램의 인스턴스를 나타냅니다.
프로세스는 메모리에 로드된 프로그램 코드와 데이터를 실행하는 단위이며, 독립적으로 실행됩니다.
각 프로세스는 다른 프로세스와 격리되어 있어, 하나의 프로세스가 다른 프로세스에
영향을 미치지 않습니다.
이는 운영 체제가 제어하며, 멀티태스킹 환경에서 여러 프로세스가 동시에 실행될 수 있게 합니다.
프로세스의 주요 특징 및 구성 요소
프로세스 ID (PID):
각 프로세스는 고유한 식별자인 PID를 가지며, 시스템에서 해당 프로세스를 식별하는 데 사용됩니다.
프로그램 코드:
실행 중인 프로그램의 명령어와 로직이 포함된 메모리 영역입니다.
데이터 영역:
프로세스가 사용하는 변수와 데이터 구조를 저장하는 메모리 영역입니다.
스택:
프로세스의 함수 호출과 관련된 정보를 저장하는 메모리 영역으로,
함수 호출 스택(Call Stack)이라고도 합니다.
힙:
동적으로 할당된 메모리를 관리하는 영역으로, 동적 메모리 할당을 위해 사용됩니다.
컴파일 과정
컴파일 과정은 소스 코드를 컴퓨터가 이해하고 실행 가능한 형태로 변환하는 과정을 의미합니다.
주로 컴파일러(Compiler)라는 소프트웨어 도구를 사용하여 수행됩니다.
소스 코드 작성:
프로그래머가 고수준 언어로 소스 코드를 작성합니다.
이 코드는 사람이 이해하기 쉽고 가독성이 높은 형태입니다.
컴파일:
소스 코드를 컴파일러에 전달합니다. 컴파일러는 소스 코드를 분석하고,
문법 오류를 확인하며 중간 언어 또는 기계어로 번역합니다.
이러한 번역 작업을 통해 오브젝트 코드(Object Code) 또는 바이너리 코드(Binary Code)를 생성합니다.
링킹 (Linking):
대부분의 프로그램은 여러 개의 소스 파일로 구성되며,
이러한 파일 간에 함수나 변수를 공유해야 할 때가 있습니다.
링커(Linker)는 이러한 파일들을 연결하여 하나의 실행 파일을 생성합니다.
이 과정을 정적 링킹(Static Linking)이라고 합니다.
로드 (Loading):
생성된 실행 파일은 메모리에 로드됩니다.
이 과정에서 운영 체제는 프로세스의 메모리 공간을 할당하고 실행 파일을 메모리로 복사합니다.
실행 (Execution):
프로세스가 시작되고, 프로그램 코드가 메모리에서 실행됩니다.
이때 프로그램이 사용자 또는 시스템과 상호 작용하며 원하는 작업을 수행합니다.
컴파일 과정을 거친 프로그램은 소스 코드에 비해 실행 속도가 빠르며,
기계어로 작성되어 특정 하드웨어 아키텍처에서 실행될 수 있습니다.
프로세스와 컴파일 과정 자세히 알기!!
프로세스 (Process):
학교에서 수업을 듣고 있는 학생들을 프로세스로 비유해 보겠습니다.
각 학생은 수업을 듣는 개별한 인스턴스이며, 서로 다른 수업 내용을 학습하고 있습니다.
각 학생은 학교 규칙과 일정을 따르며 수업을 진행합니다.
학교 직원(운영체제)은 학생들의 수업을 관리하고 제어합니다.
컴파일 과정 (Compile Process):
컴파일 과정을 학교를 예시로 설명하겠습니다.
소스 코드 작성:
선생님(프로그래머)은 각 과목에 대한 교수안을 작성합니다.
이 교수안은 수업의 내용과 계획을 담고 있습니다.
학생들(컴퓨터)은 이 교수안을 기반으로 수업을 듣게 됩니다.
컴파일:
선생님(컴파일러)은 교수안을 기반으로 강의를 개선하고, 강의 계획을 수업 가능한 형태로 번역합니다.
이것은 수업을 효과적으로 전달하기 위한 강의 자료(컴파일된 코드)를 생성하는 것과 유사합니다.
링킹 (Linking):
수업이 여러 과목으로 나누어져 있을 수 있으며, 이러한 강의를 하나로 묶어야 할 때가 있습니다.
이것은 수업 과목들 간의 관계를 설정하는 것과 유사합니다.
로드 (Loading):
학생들이 수업을 듣기 위해 교실(메모리)에 들어가야 합니다.
이것은 컴퓨터가 프로그램을 메모리에 로드하는 것과 유사합니다.
실행 (Execution):
학생들이 교실(메모리)에 들어가면, 선생님의 강의를 듣기 시작하고 수업 내용을 학습합니다.
이것은 프로그램이 메모리에서 실행되는 것과 유사합니다.
이렇게 학교와 수업을 예시로 들어 프로세스와 컴파일 과정을 비유적으로 설명할 수 있습니다.
*바쁜 사람을 위한 깜찍한 정리
프로세스는 컴퓨터 시스템에서 실행 중인 각 개별 인스턴스(데이터)를 의미하고 그 인스턴스(데이터)를 컴퓨터가 이해할 수 있게 컴퓨터 언어로 변환을 해서 처리하는 과정을 컴파일 과정이라고 합니다. 예를 들어 내가 게시판 프로그램을 만들고 있다고 치면 그 프로그램을 프로세스라 하고 게시판을 만드는 과정 중 소스코드를 기계어로 번역하고 실행 가능한 형태로 만들어 주는 것이 컴파일 과정이라고 생각하면 된다.
'목차훔치기 > 면접을 위한 CS 전공지식 노트' 카테고리의 다른 글
프로세스의 메모리 구조(면접을 위한 CS 전공지식 노트) (0) | 2023.09.17 |
---|---|
프로세스의 상태(면접을 위한 CS 전공지식 노트) (0) | 2023.09.16 |
메모리 관리(면접을 위한 CS 전공지식 노트) (0) | 2023.09.14 |
메모리 계층(면접을 위한 CS 전공지식 노트) (0) | 2023.09.13 |
컴퓨터 구성요소(면접을 위한 CS 전공지식 노트) (0) | 2023.09.12 |