프로세스 개념
프로세스(process) = 작업(job)
: 모든 CPU 활동들- 비공식적으로, 프로세스란 실행 중인 프로그램
- 프로세스의 현재 활동 상태는 프로그램 카운터 값 + 프로세서 레지스터의 내용
프로세스의 구조
텍스트 섹션
: 실행 코드- 프로그램 실행 시간 동안 크기 고정
- 프로그램 실행 시간 동안 크기 고정
데이터 섹션
: 전역 변수- 프로그램 실행 시간 동안 크기 고정
- 프로그램 실행 시간 동안 크기 고정
힙 섹션
: 프로그램 실행 중 동적으로 할당되는 메모리- 프로그램 실행 중 동적으로 변함
- 메모리가 동적으로 할당됨에 따라 힙이 커짐
- 반대로 메모리가 시스템에 반환되면 축소됨
- 프로그램 실행 중 동적으로 변함
스택 섹션
: 함수 호출 시 임시 데이터 저장소(함수 매개변수, 복귀 주소, 지역변수)- 프로그램 실행 중 동적으로 변함
- 함수 호출 → 매개변수, 지역변수, 복귀 주소를 포함하는 활성화 레코드가 스택에 push
- 함수 종료 → 함수에서 제어가 되돌아오면서 스택에서 활성화 레코드가 pop
- 프로그램 실행 중 동적으로 변함
- 스택 및 힙 섹션은 서로의 방향으로 커진다. → 겹치지 않게 조심해야 함
프로세스와 프로그램
- 프로그램 그 자체는 프로세스가 아님
- 프로그램 : 실행 파일과 같은 *수동적인 존재
- 프로세스 : 다음 명령어를 지정하는 능동적인 존재(프로그램 카운터와 관련된 자원의 집합)
- 실행 파일이 메모리에 적재될 때 프로그램은 프로세스가 됨
- 프로세스들은 동일한 프로그램에 연관될 수 있지만, 두 개는 각각의 별도의 프로세스다.
- 예 : 여러 사용자가 메일 프로그램의 서로 다른 복사본을 실행
- 텍스트 섹션이 동등하다 할지라도 데이터, 힙 및 스택 섹션은 다를 수 있다.
- 예 : 여러 사용자가 메일 프로그램의 서로 다른 복사본을 실행
- 프로세스 자체가 다른 개체를 위한 실행 환경으로 동작할 수 있다.
- 예 : Java 프로그램(JVM)
프로세스 상태
- 프로세스는 실행되면서 상태가 변한다.
- 프로세스의 상태는 부분적으로 그 프로세스의 현재 활동에 따라 정의됨
새로운(new)
: 프로세스가 생성 중실행(running)
: 명령어들이 실행되고 있다.- 한 처리기에 코어에서 오직 하나의 프로세스만이 실행 상태가 됨
- 한 처리기에 코어에서 오직 하나의 프로세스만이 실행 상태가 됨
대기(waiting)
: 프로세스가 어떤 이벤트가 일어나길 기다린다.- 입출력 완료 또는 신호의 수신 같은 일
- 많은 프로세스가 대기 상태에 있을 수 있음
준비(ready)
: 프로세스가 처리기에 할당되기를 기다린다.- 많은 프로세스가 준비 상태에 있을 수 있음
- 많은 프로세스가 준비 상태에 있을 수 있음
종료(terminated)
: 프로세스의 실행이 종료되었다.
프로세스 제어 블록(PCB)
- 태스크 제어 블록이라고도 불린다.
- 약간의 회계 데이터와 함께 프로세스를 (재)시작시키는데
필요한 모든 데이터를 위한 저장소 역할 - 특정 프로세스와 연관된 여러 정보를 수록하며 여러 정보들을 포함한다.
- 각 프로세스는 운영체제에서 프로세스 제어 블록에 의해 표현된다.
프로그램 카운터
: 이 프로세스가 다음에 실행할 명령어의 주소를 가리킴- 프로세스가 다시 스케줄 될 때 계속 올바르게 실행되기 위해서 인터럽트 발생 시 저장돼야 함
- 프로세스가 다시 스케줄 될 때 계속 올바르게 실행되기 위해서 인터럽트 발생 시 저장돼야 함
CPU 레지스터
- 컴퓨터의 구조에 따라 수와 유형이 다름
- 레지스터에는 누산기, 인덱스 레지스터, 스택 레지스터, 범용 레지스터들과 상태 코드 정보가 포함
- 프로세스가 다시 스케줄 될 때 계속 올바르게 실행되기 위해서 인터럽트 발생 시 저장돼야 함
CPU 스케줄링 정보
- 프로세스 우선순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수를 포함
- 프로세스 우선순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수를 포함
메모리 관리 정보
- 운영체제에 의해 사용되는 메모리 시스템에 따라 base 레지스터와 limit 레지스터의 값,
운영체제가 사용하는 메모리 시스템에 따라 페이지 테이블 또는 세그먼트 테이블 등의 정보를 포함
- 운영체제에 의해 사용되는 메모리 시스템에 따라 base 레지스터와 limit 레지스터의 값,
회계(accounting) 정보
- CPU 사용 시간과 경과된 실시간, 시간제한, 계정 번호, Job 또는 프로세스 번호 등을 포함
- CPU 사용 시간과 경과된 실시간, 시간제한, 계정 번호, Job 또는 프로세스 번호 등을 포함
입출력 상태 정보
- 이 프로세스에 할당된 입출력 장치들과 열린 파일의 목록 등을 포함
스레드(Thread)
단일 제어 스레드
: 프로세스가 한 번에 단 한 가지 일만 실행- 사용자는 문자를 입력하면서 동시에 철자 검사기를 시행할 수 없음
- 사용자는 문자를 입력하면서 동시에 철자 검사기를 시행할 수 없음
- 현대 운영체제는 한 프로세스가 다수의 실행 스레드를 가질 수 있도록 허용
→ 한 프로세스가 하나 이상의 일을 수행할 수 있음- 다중 처리기 시스템 → 스레드가 병렬로 처리
- 다중 처리기 시스템 → 스레드가 병렬로 처리
- 스레드 지원 시스템에서의 PCB는 각 스레드에 관한 정보를 포함하고 있음