프로세스란
CPU에 의해 실행 가능하거나 실행되는 프로그램들을 통칭 프로세스라고 한다.
워드나 파워포인트 같이 프로그램 하나를 실행하기 위해 할당된 시스템 자원이며 커널에 의해 정의된다.
프로그램 vs 프로세스
프로그램 : 하드디스크와 같은 메모리에 저장된 실행파일
프로세스 : cpu에 실제로 실행되어 구동하고 있는 프로그램
즉, 워드가 프로그램이고 우리가 실행시켜 작성을 하는 것이 프로세스이다.
이를 통해 프로그램 하나로 여러개의 프로세스를 생성이 가능하다는 것을 알 수 있다.
프로세스들은 각각 독립적인 프로세스이며 독립적인 메모리 공간을 가지고 있다.
프로세스 제어 블록과 프로세스 테이블
프로세스 제어 블록(PCB)
프로세스 하나에 관한 정보를 저장하는 구조체이다.
프로세스가 종료시 같이 사라지며 커널에 저장되고 관리되어 진다.
PCB에 저장되는 요소와 정보들이 운영체제마다 다르지만 대표적으로 8가지가 있다.
1. 프로세스 번호(PID)
프로세스를 구분할 수 있게 제공된 유일한 번호
2. 프로세스 상태 정보
3. 프로그램 카운터(PC)
선택될 시 실행을 시작할 프로세스 내 모드에 따른 코드의 주소
4. 레지스터
실행이 중지 되었을 때 CPU 레지스터들의 값
5. 스케줄링 정보
우선 순위 값, 스케줄 큐에 대한 포인터
6. 열어 놓은 파일 디스크립트들의 배열
7. 메모리 관리 정보
페이지 테이블, base register, limit register
8. 회계 정보
CPU의 사용 시간, 시간 제한,, 프로세스이 총 경과시간 등
프로세스 테이블
운영체제에 딱 하나만 존재하며 현재 실행중인 모든 PCB를 담은 표이다.
PCB와 프로세스 테이블은 모두 커널영역에 존재하며 커널코드만으로 접근이 허용된다.
프로세스 주소공간과 가상 주소 공간
프로세스 주소공간은 크게 4가지로 나눌 수 있다.
코드 공간 : 프로그램 실행 코드가 담겨 있는 공간으로 크기는 고정되어 있다.
정적 데이터 공간 : 전역변수 공간으로 고정된 저장공간이다. 프로그램 실행하기 전에 할당 할당되어 종료까지 쓰인다.
스택 : 함수가 실행될때 필요한 공간으로 영역 위쪽으로 공간이 할당되고 return혹은 종료시 공간을 반환한다.
힙 : 실행 도중 동적으로 할당되는 메모리를 위한 공간이다.
이 주소 공간들은 사용자가 보기에 0번지부터 연속적인 주소로 구성되어 있다.
그러나 이 주소 공간은 가상주소 공간으로 매핑 테이블에 의해 실제 메모리로 연결된다.
프로세스 주소 공간은 두가지로 나뉜다.
사용자 주소 공간 & 커널 주소공간
사용자 주소 공간
위에서 설명했던 코드, 정적 데이터, 스택, 힙으로 이루어져 있다.
프로세스가 구동되는 동안에 사용하는 주소 공간이다.
커널 주소 공간
커널콛, 커널데이터(PCB 등), 커널 스택, 커널 힙으로 이루어져 있다.
한개 프로세스의 가상 주소 공간에 포함되어 사용자 주소 공간과 같은 매핑 테이블에 의해 매핑된다.
그러나 커널 주소 공간은 시스템 전체에 하나 뿐이며 모든 프로세스들은 커널공간을 공유한다.
'운영체제' 카테고리의 다른 글
커널, 사용자 레벨 스레드와 맵핑 (0) | 2021.01.12 |
---|---|
스레드 (0) | 2021.01.12 |
컴퓨터 시스템과 운영체제 (0) | 2020.12.28 |
운영체제의 정의와 역사 (0) | 2020.12.28 |