요즘 운영체제는 "멀티 프로세스(Multi-Process)운영체제" 라고 불린다. 이는 프로세스라는 것이 여러개 존재할 수 있는 운영체제라는 뜻이다.
프로세스란 실행중인 프로그램을 의미한다.
실행파일(.exe)이 더블클릭되면, 프로그램 실행을 위해 메모리(RAM) 할당이 이루어지고, 메모리 공간으로 바이너리 코드가 올라간다.
이순간부터 프로그램은 프로세스라고 불리게된다. 즉 실행중인 프로그램이 프로세스이다.
프로세스를 구성하는 요소
Execution of "C" Program
프로그램이 실행되면 각각 데이터가 특정 영역에 저장된다.
Data 영역 : 전역변수(global), 정적 변수(static), 배열(array), 구조체(structure) 등이 저장된다. 초기화 된 데이터는 data영역에 저장되고, 초기화되지 않는 데이터는 BSS(Block Stated Symbol)영역에 저장된다. BSS는 초기화되지 않은 전역 데이터를 위한 영역이다.
Stack 영역 : 지역 변수 할당과 함수 호출시 전달되는 인자값들의 저장을 위해 존재한다. LIFO(Last in First out)데이터 구조를 가진다.
Heap 영역 : 필요에 의해 동적으로 메모리를 할당할 때 사용. malloc, calloc 함수에 의해 할당된다.
Code 영역 : 프로그램을 실행시키면, 실행파일 내에 존재하는 명령어들이 메모리상에 올라가서 순차적으로 실행되는데 실행파일을 구성하는 명령어들이 올라가는 영역을 Code 영역이라고 한다.
프로그램 실행시 메모리 구조
Register Set
실행파일을 실행하면 실행을 위한 데이터들로 레지스터가 채워진다.
즉 레지스터들의 상태까지도 프로세스의 일부라고 말할 수 있다.
'Programming > Windows System Programming' 카테고리의 다른 글
프로세스 생성 (0) | 2020.06.08 |
---|---|
프로세스의 스케줄링과 상태변화 (0) | 2020.06.07 |
Direct 모드와 Indirect 모드 (0) | 2020.06.02 |
LOAD & STORE 명령어 디자인 (0) | 2020.05.27 |
컴퓨터 구조의 접근방법 (0) | 2020.05.25 |