part 1. 프로세스 기술(description) 과 제어
- 프로세스 : 수행 중인 프로그램
- 프로세스의 필수 적인 요소
- 프로그램 코드 및 연계된 데이터의 집합
- 프로세스를 식별하기 위한 구조 : Process Control Block (PCB)
- PCB의 주요 역할 : 프로세스의 다중처리 지원을 위해 프로세스 문맥의 정보를 유지
- 프로세스가 인터럽트 될 때, PCB에 정보를 저장하고 추후 재 스케줄링 될 때 해당 정보를 적절히 복구하여, 프로세스 수행에 차질이 없도록 함
- 프로세스 상태
- 2-상태 프로세스 모델 : 수행-비수행
- 5-상태 프로세스 모델 : 생성-(준비-수행-블록)-종료
- cf. 준비큐. 블록큐.
- 보류된 프로세스의 특성
- 즉시 수행 불가
- 보류 상태를 명시적으로 해제하지 않는 이상 해당 상태에서 벗어날 수 없다
- 보류 이유 : 스와핑. 운영체제의 다른 이유. 타이밍. 부모 프로세스의 요청 등
- 보류된 프로세스 (suspended process) -> swapping의 필요성
- OS의 욕심 : 더 많은 프로세스들을 수용하기 위해 주기억 장치를 확장
- 문제점 1 : 주기억 장치의 비용 문제
- 문제점 2 : 메모리 가격의 하락 속도 만큼 프로그램의 메모리 요구량이 증가하므로, 메모리의 용량이 커져도 프로세스 크기가 늘어남.
- cf. 스와핑 (swapping)
- 프로세스의 일부나 전체를 주기억장치에서 디스크로 옮겨놓는 방법
- 스와핑은 i/o 연산이므로, 문제 해결에 도움을 주려다가 오히려 더 악화 시킬 수 있음. 그러나 disk i/는 일반적으로 시스템에서 가장 빠른 i/o 작업이라 성능을 향상시킬 수 있다고 봄.
- 프로세스 생성과 종료
- 프로세스 생성
- cf. 기존 프로세스가 생성 (process spawning) - 명시적 요청에 의한 새로운 프로세스 생성 - fork()
- 프로세스 종료
- 정상 종료
- 비정상 종료
- timeout, 메모리부족, 부모 요청, 부모 종료, 데이터 오용 등
- 프로세스 생성
- 프로세스 기술 (description)
- 운영체제 제어 구조
- 운영체제 프로세스 및 자원 관리를 위해 현재 상태를 나타내는 정보 필요
- 메모리 테이블
- 주기억장치와 보조기억장치의 자취를 유지하기 위해 사용
- 입출력 테이블
- 파일테이블
- 프로세스 테이블
- 프로세스 제어 구조
- PCB, 프로세스 디스크립터, 태스트 제어블록(TCB)
- 프로세스 이미지
- 프로세스 속성
- PCB에 있는 정보들
- cf. PCB의 역할
- 운영체제에게 필요한 프로세스의 모든 정보 포함
- 스케줄링, 자원할당, 인터럽트 처리 등과 관련된 모듈들 포함
- 운영체제 제어 구조
프로세스 제어
- 수행모드 (mode of execution) … x86 기준
- User mode (사용자 모드)
- 사용자 프로그램들이 일반적으로 이 모드에서 수행
- Kernel mode (커널 모드)
- 더 많은 권한을 가진 모드는 system mode와 control mode
- 운영체제 커널과 관련
- 2가지 모드를 사용하는 이유
- 운영체제 및 PCB와 같은 주요 정보를 사용자 프로그램의 간섭으로부터 보호하기 위해
- 커널모드에서 수행되는 프로그램은 처리기, 모든 명령, 레지스터, 메모리를 완전히 제어할 수 있기 때문에, 해당 제어 수준을 사용자로 부터 분리해야 함
- 2가지 모드 사용의 문제점 및 해결 방법
- 어떤 모드에서 수행중인가 -PSW - process state word 의 bit를 통해 표시
- 모드 변경 방법
- 특정 이벤트에 따라 커널모드와 사용자 모드 변경
- 사용자 모드 --> 커널 모드
- 예) 사용자가 OS 서비스 호출
- 예) 인터럽트가 OS 커널 수행을 trigger
- 커널모드 --> 사용자 모드
- 제어가 OS 서비스를 수행 뒤 사용자 프로세스로 복귀 (return from syscall)
- 프로세스 생성 단계
- 새로운 프로세스에 유일한 프로세스 식별자 할당
- 프로세스에 공간 할당
- 프로세스 제어 블록 초기화
- 적절한 linkage 설정
- 프로세스 교환 방법
- cf. mode switching vs. process switching
- cf. mode switching vs. process switching
- 프로세스 교환 시점
- 인터럽트 (h/w interrupt)
- 현재 명령어 수행과 별개로 비 동기적인 외부 사건에 의해 발생
- 인터럽트 핸들러에서 시스템 관리작업 처리 후 유형에 따라 관련 OS 루틴으로 분기하여 핸들링
- (ex) HW interrupt — clock interrupt, i/o interrupt, memory fault
- 트랩
- 현재 수행중인 프로세스와 관련되어, 오류나 예외 처리를 위해 발생
- 관련 오류 또는 예외가 치명적인지 여부에 따라 프로세스 종료 or 복구 프로시저 수행 or 프로세스 교환 or 사용자 통보 등.
- 슈퍼바이저 호출
- 프로그램 수행 중 OS 기능에 대해 명시적 요청을 통해 발생
- 인터럽트 (h/w interrupt)
- 모드 전환 (mode switching)
- 프로그램 카운터를 인터럽트 핸들러의 시작주소로 설정
- 커널모드로 전환 후 인터럽트 처리코드 수행
- 기존 문맥 저장 후 인터럽트 핸들링 뒤 기존 문맥 복구
- 모드 전환 vs. 프로세스 전환
- 모드 전환 : 현재 수행상태에 있는 프로세스의 상태를 바꾸지 않고 수행 가능
- 프로세스 교환 : 교환을 위해 환경을 변경해야하고, 모드전환에 비해 많은 작업이 필요