찬란
프로세스 관리(Process Managemenet) 본문
해당 블로그의 내용은 학교에서 배운 내용을 개인적으로 정리한 내용이므로, 잘못된 부분이 있을 수도 있습니다.
작업(Job)
- 실행 할 프로그램(Program) + 데이터(Data)
- 컴퓨터 시스템에 실행 요청 전의 상태
프로세스 (Process)
- 작업 관리자 켜면 나오면 작업 목록들
- 실행을 위해 시스템(커널)에 등록된 작업
- 시스템 성능 향상을 위해 커널에 의해 관리됨
- 작업(Job) -> 프로세스(Process)
프로세스(Process)의 정의
실행중인 프로그램
- 커널에 등록되고 커널의 관리 하에 있는 작업
- 각종 자원들을 요청하고 할당 받을 수 있는 개체
- 프로세스 관리 블록(PCB)을 할당 받은 개체
- 능동적인 개체
- 실행 중에 각종 자원 요구/할당/반납하여 진행
프로세스의 종류
역할에 따라
- 시스템(커널) 프로세스
- 모든 시스테 메모리와 프로세서의 명령에 접근할 수 있는 프로세스
- 프로세스 실행 순서 제어
- 다른 사용자 및 커널 영역을 침범 못하게 감시
- 사용자 프로세스 생성
- 사용자 프로세스
- 사용자 코드 수행
병행 수행 방법에 따라
- 독립 프로세스
- 다른 프로세스와 독립적인 병행 프로세스
- 협력 프로세스
- 다른 프로세스에 영향을 주는 병행 프로세스
자원 (Resources)
- 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체
- H/W Resource
- S/W Resource
프로세스 관리 블록(PCB, Process Control Block)
- 커널 공간 내에 존재
- 각 프로세스들에 대한 정보를 관리
- OS가 프로세스 관리에 필요한 정보 저장
- 프로세스 생성 시, 생성됨
PCB가 관리하는 정보
- PID, Process Identification number
- 프로세스 고유 식별 번호
- 스케줄링 정보
- 프로세스 우선순위 등
- 프로세스 상태
- 자원 할당, 요청 정보 등
- 메모리 관리 정보
- Page Table, segment table 등
- 입출력 상태 정보
- 할당 받은 입출력 장치, 파일 등에 대한 정보 등
- 문맥 저장 영역
- 프로세스의 레지스터 상태를 저장하는 공간 등
- 계정 정보
- 자원 사용 시간 등을 관리
프로세스의 상태 (Process State)
- 프로세스 – 자원 간의 상호작용에 의해 결정
Create State
- 작업(Job)을 커널에 등록
- PCB 할당 및 프로세스 생성
- 가용 메모리 공간 체크 및 프로세스 상태 전이(Ready or Suspended ready)
Ready State (Create State >> Memory Allocate)
- 프로세서 외에 다른 모든 자원을 할당 받은 상태
- 프로세서 할당 대기 상태
- 즉시 실행 가능
- Ready 상태를 가지는 여러 개의 프로세스 존재 가능
Running State (Ready State >> Dispatch(or Schedule))
- 프로세서와 필요한 자원을 모두 할당 받은 상태
- 명령어를 수행중인 상태
- Preemption
- Running 상태에서 Ready 상태로 돌아가는 것
- time-out / priority change 같은 원인들..
Blocked/asleep State (Running >> sleep(block))
- 프로세서 외에 다른 자원을 기다리는 상태 (ex. 입출력 대기 등)
- 자원 할당은 시스템 호출에 의해 이루어 짐
- 시스템 호출(System Call)
- 사용자 모드에서 커널 모드로 변환하는 동작
- wake-up (입출력이 완료되었을 경우)을 통해 Ready 상태로 돌아감
Suspended State (Ready or asleep State >> swap-out)
- 메모리를 할당 받지 못한(빼앗긴) 상태
- 프로세스 수행이 정지됨
- memory image를 swap device에 보관
- 빼앗기기 전 메모리 상태를 그대로 사진을 찍듯이 기억(저장)
- 커널 또는 사용자에 의해 발생 (외부에서 재개시켜야 함)
- Swap-out
- 지연 (메모리 임시 반납)
- Swap-in
- 재개 (메모리 재할당)
* Blocked 와 Suspeded의 차이?
- Blocked는 잠시 중지되었다가 끝나면 Ready로 돌아감
- Suspended는 잠시 중지되었다가 외부에서 재개시켜줘야 Ready로 돌아감
Terminated/Zombie State (Running >> Exit)
- 프로세스 수행이 끝난 상태
- 모든 자원 반납 후,
- 커널 내에 일부 PCB 정보만 남아 있는 상태 (이후 프로세스 관리를 위해 정보 수집)
인터럽트 (Interrupt)
- 예상치 못한, 외부에서 발생한 이벤트
- Unexpected, external event
- CPU 프로세서가 다른 여러 가지 원인에 의하여 현재 하는 일을 중단하고 발생된 일을 처리한 후
다시 실행중인 작업으로 복귀하는 것
인터럽트 종류
내부 (소프트웨어)
- 프로그램 내부에서 발생하는 것.
- 잘못된 명령이나 잘못된 데이터를 사용할 때 = Trap
- ex) 허용되지 않은 명령, 또는 공간 접근 / 계산결과에 따른 오버플로우,언더플로우 등
외부 (하드웨어)
- 컴퓨터의 하드웨어에서 발생하는 것.
- 전원의 이상, CPU의 기능 및 기계의 착오, 키보드 동작, 입출력 장치의 데이터 전송 등
인터럽트 과정
1. 인터럽트 발생
- 인터럽트 요청 발생
- 운영체제가 제어권을 받음
2. 프로세스 중단 (커널 개입)
- 현재 수행중인 명령의 수행이 완료된 시점에서 중단 (현재의 주기억 장치 사이클이 끝나는 시점이 아님)
- 현재의 프로세스 상태를 저장, PC에 기억되어 있는 주소를 안전한 곳에 기억시켜서 보존 (Context saving)
= 상태 레지스터와 PC(현재 명령어 + 1의 주소) 등을 스택(Stack)에 저장한다.
3. 인터럽트 전처리 실행
- 원인 판단
- 처리 루틴 (Interrupt Processing Routine)을 호출
4. 인터럽트 서비스(Interrupt Servie Routine) 실행
- 인터럽트 서비스 루틴은 인터럽트를 처리하는 프로그램
- 프로그램의 상태를 안전한 곳에 기억시켜 보존
- 인터럽트 해결
5. 프로그램 재개
- 저장하였던 프로세서와 PC의 주소를 복원하여 (Context restoring) 해당 PC 명령어부터 정상적으로 실행
문맥 교환 (Context switching)
Context
- 프로세스와 관련된 정보들의 집합
Context saving
- 현재 프로세스의 register context를 저장하는 작업
Context restoring
- Register context를 프로세스로 복구하는 작업
Context switching
- 실행 중인 프로세스의 context를 저장하고 (Context saving),
- 앞으로 실행 할 프로세스의 Context를 복구하는 일 (Context restoring)
- * 커널의 개입으로 이루어짐
Context Switch Overhead
- Context switching에 소요되는 비용, OS마다 다르고, OS의 성능에 큰 영향을 줌
- 불필요한 Context switching을 줄이는 것이 중요
'운영체제' 카테고리의 다른 글
프로세스 동기화 & 상호배제 (Synchronization & Mutual exclusion) (0) | 2023.04.15 |
---|---|
프로세스 스케줄링 (Process Scheduling) (1) | 2023.04.15 |
스레드 (Thread) 관리 (1) | 2023.04.15 |
운영체제에 대하여 (0) | 2023.04.14 |
컴퓨터 시스템 (0) | 2023.04.14 |
Comments