프로세스 제어
수행모드
수행모드는 사용자 프로그램의 간섭으로부터 주요 운영체제 테이블을 보호해야하기 때문에 두 가지로 나뉨
- 사용자모드
- 시스템모드(=제어모드, 커널모드)
처리기는 어떤 모드인지 어떻게 아는지? ⇒ 프로그램 상태 워드의 한 비트를 사용해 수행모드 나타냄
모드는 어떻게 변경되는지? ⇒ 특정 사건에 따라 변함 ex) 사용자가 운영체제 서비스 호출, 인터럽트 등
프로세스 생성
- 프로세스 식별자 할당 → 프로세스 테이블에 추가
- 프로세스에 공간 할당(프로세스 이미지, 프로세스 제어블록 저장)
- 프로세스 제어블록 초기화
- 적절한 연결 설정 ex) 스케줄링 큐를 연결리스트로 유지하고 있다면 준비/보류 리스트에 저장
- 다른 자료구조 생성 or 확장 ex) 어카운팅 파일 유지(과금, 평가 목적)
프로세스 교환
- 인터럽트: 비동기적인 외부 사건에 반응
- 클럭 인터럽트: 수행 중인 프로세스가 주어진 시간 할당량을 모두 사용했는지 확인
- 입출력 인터럽트: 발생된 입출력 동작이 프로세스가 대기하고 있던 사건과 관련 o → 그 사건과 관련해 블록되어 있던 프로세스들을 준비 상태로 변경
- 메모리 폴트: 주기억장치에 없는 워드에 대해 참조→ 보조기억장치에서 주기억장치로 가져와야 함
- 트랩: 오류나 예외 상황 처리 → 오류나 예외 상황이 치명적인지 판단 치명 o: 프로세스 종료 상태로 변경, 치명 x: 복구 프로시저 수행
- 수퍼바이저 호출: 운영체제 기능에 대한 호출
프로세스 상태 변경
- 프로그램 카운터와 레지스터들을 포함한 처리기 문맥 저장
- 현재 수행 상태에 있는 프로세스 제어블록 갱신(준비 or 블록 or 준비/보류 or 종료 상태로 변경)
- 프로세스의 프로세스 제어블록을 적절한 큐로 이동
- 다음 수행시킬 프로세스 선택
- 선택된 프로세스 제어블록 생신(수행 상태로 변경)
- 메모리 관리와 관련된 자료구조 갱신
- 선택된 프로세스의 처리기 문맥 복원
'이론 > 운영체제' 카테고리의 다른 글
[OS] 멀티쓰레딩 (0) | 2023.07.29 |
---|---|
[OS] 쓰레드 (0) | 2023.07.28 |
[OS] 프로세스 제어 구조 (0) | 2023.07.24 |
[OS] 프로세스 모델, 프로세스 보류 (0) | 2023.07.23 |
[OS] 프로세스 생성/종료 (0) | 2023.07.22 |
댓글