본문 바로가기
카테고리 없음

시스템 프로그래밍 보고서(1) - 프로그램과 프로세스

by 자바지기 2021. 10. 29.
반응형

프로그램과 프로세스

프로그램이란?

컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 집합체이다.

쉽게 말해 파일 시스템에 존재하는 실행파일이다. 

 

프로세스란?

프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위를 지칭한다.

쉽게 말해 프로세스는 프로그램의 하나의 인스턴스이다.

 

예를 들면 크롬을 사용하고 싶을 때 크롬의 실행 파일을 클릭하여 크롬 창을 띄운다. 

크롬이라는 하나의 실행 파일을 통해 여러 개의 크롬 창을 띄울 수 있다.

이때의 크롬 실행 파일이 프로그램이고 여러 개의 크롬 창은 여러 개의 프로세스이다.

각각의 크롬 창은 메모리 상에서 실행되는 하나의 인스턴스이다.

 

프로세스의 구조

  • Stack

프로그램이 자동으로 사용하는 임시 메모리 영역이다.

매개 변수, 지역 변수, return 주소를 저장하기 위한 저장 장소이다.

함수 호출 시 생성되고 함수가 끝나면 다시 반환된다.

 

 

  • Heap

프로그램 수행 중 동적 할당을 위한 저장 장소이다. Code, Data, Stack 영역과는 다르게 Heap은 메모리 영역이 런타임에 결정된다. 

Stack 영역보다 할당할 수 있는 메모리 공간이 많다.

그러나 포인터로 메모리 영역을 접근해야 하기 때문에 데이터를 읽고 쓰는 것이 느리다.

 

 

  • Data, BSS

전역 변수를 위한 저장 장소이다.

초기화된 데이터는 Data 영역에 저장되고 초기화되지 않은 데이터는 BSS(Block Stated Symbol) 영역에 저장된다.

Data 영역에서는 초기에 사용할 메모리를 확보한다. BSS 영역에서는 런타임 후에 사용할 메모리를 확보한다. 

즉 초기화할 필요 없는 변수들을 할당할 때 BSS영역을 사용하면 메모리 사용면에서 효율적이다. 

 

 

  • Code(text, instruction) 

프로세스가 실행할 기계어가 저장된 공간이다. Read-Only로 지정된 영역이다.

 

 

 

프로세스의 상태

 

  • new :

방금 생성된 상태, 생성은 되었지만, 아직 OS에 의해 승인은 받지 못한 상태이다.

 

  • running :

프로세스의 기계어가 CPU에서 실행 중인 상태, 단 하나의 프로세스만이 running 상태를 갖는다.

ready 상태에 있는 프로세스들 중 운영체제의 스케줄링 작업을 통해 하나의 프로세스를 running 상태로 만든다.

여러 개 중에 하나를 고르는 것을 스케줄링, 고른 것을 CPU에 올려놓는 것을 dispatch라고 한다.

 

  • wating

프로세스가 특정 event 발생을 기다리는 상태

 

  • ready

프로세스가 CPU 실행을 기다리는 상태

 

  • terminated

프로세스가 종료된 상태

 

 

 

 

 

 

 

Reference

https://shinluckyarchive.tistory.com/159

https://selfish-developer.com/entry/%EC%8A%A4%ED%83%9D-%ED%9E%99-%EC%BD%94%EB%93%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%98%81%EC%97%AD

https://devnick.tistory.com/38

https://iredays.tistory.com/118

https://jhnyang.tistory.com/7
반응형

댓글