본문 바로가기
IT/OS

[OS] 프로그램과 프로세스의 차이, 컴파일(Compile), CPU 구성요소

by 퐁시냥 2022. 1. 12.

프로세스란? 프로그램과 프로세스는 똑같은거 아닌가?

프로그램을 실행시키면 프로세스가 된다. 프로세스 = 실행 중인 프로그램

 

목차

  1. 프로그램과 프로세스
  2. 프로세스 제어목록(PCB, Process Control Block)
  3. 프로세스의 상태
  4. 프로세스의 관리
  5. 프로세스의 구조
  6. 컴파일 과정(Compile)
  7. CPU(중앙처리장치) 구성요소

프로그램(Program)

  • 저장장치(HDD, SDD)에 저장된 명령문의 집합체 (= 애플리케이션, 앱)
    • Windows : .exe / MacOS : .app
    • 수동적

프로세스(Process)

  • 실행 중인 프로그램
  • 저장장치에 있는 프로그램이 메모리에 올라갔을 때
  • 운영체제에 의해서 관리됨
  • 능동적 : 메모리, CPU 사용, 입력/출력 작업

 


프로세스 제어목록(PCB, Process Control Block)

  • 프로세스 정보를 담고 있는 자료구조
  • 구성요소
    • PID(Process IDentification) : 식별번호
    • 프로세스 상태
    • 프로그램 카운터 : CPU가 다음으로 실행할 명령어를 가리키는 값(메모리 주소)
    • 스케줄링 우선순위
    • 권한 : 프로세스가 접근할 수 있는 자원
    • 부모, 자식 프로세스 : 프로세스는 트리 계층 관계를 가지고 있음.
    • 프로세스의 데이터와 명령어가 있는 메모리 위치를 가리키는 포인터
    • 프로세스에 할당된 자원들을 가리키는 포인터

 


프로세스의 상태

  • 커널 내에는 준비 큐, 대기 큐, 실행 큐 등의 자료 구조가 있으며 커널은 이것들을 이용하여 프로세스의 상태를 관리한다.

  • 구성요소
    • 생성(create) : 프로세스가 생성되는 중이다.
    • 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
    • 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
    • 대기(waiting) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.
    • 종료(terminated) : 프로세스의 실행이 종료되었다.

 


프로세스의 관리

  • 운영체제는 프로세스의 상태를 실행(running), 준비(ready), 블록(block) 상태로 분류하고 프로세스들을 상태전이(state transition)를 통해 체계적으로 관리.
  • 이 과정을 디스패칭(dispatching)이라고 함. 디스패처(dispatcher)가 이 일을 수행.

 


프로세스의 구조

  • 코드(CODE) : 자신을 실행하는 코드가 저장되어 있음
  • 데이터(DATA) : 전역 변수, Static(정적) 변수 저장
  • 힙(HEAP) : 프로그래머가 동적으로 메모리를 할당(ex. malloc(), free() )
  • 스택(STACK) : 지역변수, 매개변수 저장

 


컴파일 과정(Compile)

확장자(.c) → 전처리기 → 확장자(.i) → 컴파일러 → 확장자(.s) → 어셈블러 → 확장자(.o) → 링커 → 확장자(.exe)
  • 전처리기(Preprocessor) : 코드에 포함된 전처리기 구문(ex. #define ~, #include ~)을 처리하는 것.
  • 컴파일러(Compiler) : C와 같은 고급 언어를 CPU 가 이해할 수 있는 기계어로 변환(ex. 어셈블리어)
  • 어셈블러 : 컴파일 한 파일을 완전한 기계어로 바꿔줌
  • 링커(Linker) : 여러개의 오브젝트 파일을 하나로 합치거나, 라이브러리를 합칠 때 필요함.

 


CPU(중앙처리장치) 구성요소

  • 제어장치(Control Unit, CU) : 주기억 장치에 저장되어 있는 명령어(프로그램)을 순서대로 호출하여 해독한 후, 제어 신호를 발생시켜 컴퓨터의 각 장치를 동작하도록 하는 장치
  • 연산장치 = 산술논리 연산장치(Arithmetic and Logical Unit, ALU) : 연산에 사용될 데이터를 받아 제어 장치가 지시하는 순서에 따라 산술 연산과 논리 연산을 실행하여 그 결과를 레지스터 혹은 누산기(Accumulator)에 저장
  • 레지스터(Register) : CPU 내부에서 처리할 명령어나 연산의 결과나 주소 등을 일시적으로 기억하는 임시 기억 장소

 


출처

댓글