//구글콘솔 광고 추가가
실행 중인 프로 그램, "프로세스"

 

프로세스
: 포그라운드 프로세스와 백그라운드 프로세스로 나뉜다.
포그라운드 프로세스 사용자가 볼 수 있는 공간에서 실행되는 프로세스 메모장, 웹브라우저
백그라운드 프로세스 사용자가 볼 수 없는 공간에서 실행되는 프로세스
사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스
데몬, 서비스로도 불림.

 

프로세스 제어 블록
: 프로세스 관련 정보를 저장하는 자료구조
모든 프로세스는 실행을 위해 CPU가 필요하지만 CPU자원은 한정되어 있다.
프로세스들은 돌아가며 한정된 시간만큼만 CPU이용한다. - 자신의 차례에 정해진 시간만큼 CPU이용, 타이머 인터럽트가 발생하면 차례 양보.

빠르게 번갈아 수행되는 프로세스들을 관리해야 하며 이를 위해 사용하는 자료구조가 프로세스 제어 블록(이하 PCB)이다.
프로세스 관련 정보를 저장하는 자료구조. 프로세스 생성 시 커널 영역에 생성, 종료 시 폐기.
프로세스 제어 블록에 담기는 대표적인 정보
프로세스 ID( = PID)
: 특정 프로세스를 식별하기 위해 부여하는 고유한 번호(학교의 학번같은 거)
레지스터 값
: 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 모두 복원. >> 실행재게

프로세스 상태
: 입출력 장치를 사용하기 위해 기다리는 상태. CPU를 사용하기 위해 기다리는 상태, CPU이용중인 상태
CPU 스케줄링 정보
: 프로세스가 언제, 어떤 순서로 CPU를 할당 받을 지에 대한 정보
메모리 정보
: 프로세스가 어느 주소에 저장 되어 있는 지에 대한 정보. 페이저 테이블 정보(== "메모리 현재주소를 알 수 있는 정보가 담기는 군") 
사용한 파일과 입출력 장치 정보
: 할당된 입출력 장치. 사용중인(열린) 파일 정보

운영체제는 커널 영역에 적재된 프로세스 제어 블록 (PCB)를 보고 프로세스를 관리.

 

문맥 교환(context switch)
한 프로세스에서 다른 프로세스로 실행 순서가 넘어가면?
- 기존에 실행되던 프로세스는 지금까지의 중간 정보를 백업(프로그램 카운터 등 각종 레지스터 값, 메모리 정보, 열었던 파일, 사용한 입출력 장치 등)
          - 이러한 중간 정보 == 문맥
          - 다음차례가 왔을 때 실행을 재개하기 위한 정보
          - 실행 문맥을 백업해두면 언제든 해당 프로세스의 실행을 재개할 수 있다!
- 뒤이어 실행할 프로세스의 문맥을 복구
          - 자연스럽게 실행 중인 프로세스가 바뀜 
  • 이처럼 기존의 실행 중인 프로세스 문맥을 백업하고 새로운 프로세스 실행을 위해 문맥을 복구하는 과정을 문맥 교환 이라 한다.(여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리)

프로세스의 메모리 영역

: 크게 코드 영역(=텍스트영역), 데이터 영역, 힙 영역, 스택 영역

프로세스의 메모리 영역  
코드 영역(= 텍스트 영역) - 실행할 수 있는 코드, 기계어로 이루어진 명령어 저장
- 데이터가 아닌 CPU가 실행할 명령어가 담기기에 쓰기가 금지된 영역(read- only)
크기가 고정되어 있는 영역
(== 정적 할당 영역)
데이터 영역 - 잠깐 썼다가 없앨 데이터가 아닌 프로그램이 실행되는 동안 유지할 데이터 저장
- e.g. 전역변수 
힙 영역 - 프로그램을 만드는 사용자, 즉 프로그래머가 직접 할당할 수 있는 저장공간
- 메모리 공간을 할당했을 때 언젠가는 이 공간을 반환해야 함. 이걸 대신 해주는게 c#에는 가비지 콜렉션이란 기능이 있음, 하지만 c언어같은 경우는 직접해줘야 함 이걸 안해주면 메모리 누수가 일어날 수 있음.
크기가 가변적으로 변할수 있는 영역
(== 동적 할당 영역)

- 일반적으로 힙 영역은
낮은 주소 >> 높은 주소로 할당
- 일반적으로 스택영역은
높은 주소 >> 낮은 주소로 할당
- 주소가 겹치지 않게 하기 위해 힙과 스택은 할당되는 방향이 반대되는 방향으로 차오름.
스택 영역 - 데이터가 일시적으로 저장되는 공간
- (데이터 영역에 담기는 값과는 달리) 잠깐 쓰다가 말 값들이 저장되는 공간.
- e.g. 매개변수, 지역변수 

 

728x90
반응형

+ Recent posts