CS/운영체제&네트워크
프로세스 구조
린예라
2024. 4. 11. 22:07
프로세스란?
실행중인 프로그램으로, 하나의 프로그램에 여러개의 프로세스가 있을 수 있다.
이 프로세스의 구조를 우리가 짜는 C언어 코드랑 연관지어서 이해해보자
1.Code
우리가 작성한 코드가 컴파일된 소스코드가 저장되는 장소이다.
2.Data
Data는 다음의 2개의 공간을 가지고 있음
Data : 초기값이 있는 전역 및 정적 변수가 저장. 프로그램이 실행되기 전에 이미 값을 가지고 있는다.
BSS : (Block Started by Symbol의 약자) 초기화 되지 않은 전역변수 및 정적변수 저장. 이 변수들은 프로그램이 실행되기 전에 초기화 되지 않았기에, 프로그램 실행중에 값이 지정되기 전까지는 0으로 초기화된다.
이렇게 초기화된 변수와 아닌것을 구분하여 효율적으로 메모리를 할당하고 초기화 과정을 최적화 할 수 있다. (초기화된 변수는 이미 값을 가지고 있으니 초기화를 생략, 초기화 되지 않은 변수는 0으로 초기화 되기 때문에 별도의 초기화 과정 생략)
3.Heap
동적으로 할당된 메모리가 저장되는 공간. C언어의 malloc() 등이 사용.
4.Stack
함수호출이나 지역변수들이 저장되는 공간.
함수호출이 발생할 때마다 스택 프레임이 생성되어 호출된 함수의 지역변수와 매개변수가 저장된다.
운영체제는 이러한 각 프로세스들을 관리하기 위해 프로세스제어블록(PCB)를 가지고 있다.
PCB는 프로세스에 대한 정보들을 가지고 있다.