목차
프로세스의 개념
초창기의 컴퓨터는 연산 등을 처리하는 작업을 하는 기기에 불과하였다. 이후에 계속 발전이 되면서 다중 태스킹을 지원하게 되면서 여러 프로그램 등을 한번에 실행할 수 있게된다. 따라서 초기의 작업에 국한하지 않고 메모리 관리 등과 같은 자체 적인 내부 활동을 지원하기도 해야한다. 이렇게 CPU가 하는 대부분의 모든 활동을 프로세스 라고 부른다.
과거에는 프로세스라는 용어 대신에 작업 이라는 용어를 더 많이 사용했다는 사실을 할고 있으면 추후의 개념들의 이해가 쉬워질 것이다.
메모리 배치
여러 섹션으로 나누어져 있고 텍스트 및 데이터 섹션의 크기는 고정 되기 때문에 실행되는 도중 크기가 바뀌지 않는다. 그러나 스택이나 힙 섹션은 프로그램 실행 중에 동적으로 줄어들거나 커질 수 있다.
함수가 호출될 때마다 함수 매개변수, 지역 변수 및 복귀 주소를 포함하는 활성화 레코드가 스택에 push가 된다
함수에서 제어가 돌아오게 되면 스택에서 활성화 레코드가 pop 된다
마찬가지로 메모리가 동적으로 할당 됨에 따라서 힙이 커지고 메모리가 시스템에 반환이 되면 축소 된다.
이 둘은 서로를 바라보면서 크기가 커지는 것을 확인 할 수 있는데 이를 겹치지 않게 할당 하는 것이 운영체제의 역할이다.
프로그램과 프로세스의 차이?
- 프로그램은 명령어 리스트를 가진 디스크에 저장된 일종의 실행 파일이다.
- 프로세스는 다음에 실행할 명령어를 지정하는 프로그램 카운터와 관련 자원의 집합을 가진 블록이다.
따라서 프로그램은 수동적인 존재이고 프로세스는 능동적인 존재가 된다.
프로그램은 메모리에 적재가 되면 프로세스가 된다.
같은 내용(텍스트 섹션) 을 가진 프로그램을 여러개의 프로세스가 실행하여 서로 다른 힙 및 스택 섹션에서 이용할 수 있다.
위의 사진을 보면서 각 섹션별로 어떤 자료가 들어가는지 살펴보면서 이해해보자
프로세스 제어 블록 PCB
프로세스는 운영체제에서 프로세스 제어 블록 혹은 태스크 제어 블록이라고도 불린다.
이 외에도
- CPU-스케줄링 정보 : 프로세스 우선순위 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수를 포함한다.
- 메모리 관리 정보 : 운영체제에 의해 사용되는 메모리 시스템에 따라서 base/limit 레지스터의 값, 운영체제가 사용하는 메모리 시스템에 따라서 페이지나 세그먼트 테이블에 대한 정보를 저장
- 회계 정보 : CPU 사용시간이나 경과된 시간, 시간제한, 계정 번호 , 프로세스 번호 등을 포함한다.
- 입출력 상태 정보 : 프로세스에 할당된 I/O 장치 들과 열린 파일 목록을 포함함
등이 있다.
요약해보면 PCB 제어 프로세스 블록은
회계 데이터와 함께 프로세스를 시작하거나 다시 시작하는데 필요한 데이터를 위한 저장소 라고 볼 수 있다.
'CS > Operating System' 카테고리의 다른 글
프로세스 :: 스케줄링 큐와 스와핑 (0) | 2022.08.16 |
---|---|
프로세스 :: 다중 프로그래밍과 스케줄링 (1) | 2022.08.14 |
운영체제 구조 :: 성능관찰(카운터, 추적) (0) | 2022.08.04 |
운영체제 구조 :: 운영체제의 생성과 부팅 (0) | 2022.08.03 |
운영체제 구조 :: 기술 구조 (2) | 2022.08.02 |