본문 바로가기
이론/운영체제

[OS] 프로세스 제어(수행모드, 프로세스 생성, 교환, 상태변경)

by ohojee 2023. 7. 26.

프로세스 제어

수행모드

수행모드는 사용자 프로그램의 간섭으로부터 주요 운영체제 테이블을 보호해야하기 때문에 두 가지로 나뉨

  • 사용자모드
  • 시스템모드(=제어모드, 커널모드)

처리기는 어떤 모드인지 어떻게 아는지? ⇒ 프로그램 상태 워드의 한 비트를 사용해 수행모드 나타냄
모드는 어떻게 변경되는지? ⇒ 특정 사건에 따라 변함 ex) 사용자가 운영체제 서비스 호출, 인터럽트 등

프로세스 생성

  1. 프로세스 식별자 할당 → 프로세스 테이블에 추가
  2. 프로세스에 공간 할당(프로세스 이미지, 프로세스 제어블록 저장)
  3. 프로세스 제어블록 초기화
  4. 적절한 연결 설정 ex) 스케줄링 큐를 연결리스트로 유지하고 있다면 준비/보류 리스트에 저장
  5. 다른 자료구조 생성 or 확장 ex) 어카운팅 파일 유지(과금, 평가 목적)



프로세스 교환

  • 인터럽트: 비동기적인 외부 사건에 반응
    • 클럭 인터럽트: 수행 중인 프로세스가 주어진 시간 할당량을 모두 사용했는지 확인
    • 입출력 인터럽트: 발생된 입출력 동작이 프로세스가 대기하고 있던 사건과 관련 o → 그 사건과 관련해 블록되어 있던 프로세스들을 준비 상태로 변경
    • 메모리 폴트: 주기억장치에 없는 워드에 대해 참조→ 보조기억장치에서 주기억장치로 가져와야 함
  • 트랩: 오류나 예외 상황 처리 → 오류나 예외 상황이 치명적인지 판단 치명 o: 프로세스 종료 상태로 변경, 치명 x: 복구 프로시저 수행
  • 수퍼바이저 호출: 운영체제 기능에 대한 호출


프로세스 상태 변경

  1. 프로그램 카운터와 레지스터들을 포함한 처리기 문맥 저장
  2. 현재 수행 상태에 있는 프로세스 제어블록 갱신(준비 or 블록 or 준비/보류 or 종료 상태로 변경)
  3. 프로세스의 프로세스 제어블록을 적절한 큐로 이동
  4. 다음 수행시킬 프로세스 선택
  5. 선택된 프로세스 제어블록 생신(수행 상태로 변경)
  6. 메모리 관리와 관련된 자료구조 갱신
  7. 선택된 프로세스의 처리기 문맥 복원

'이론 > 운영체제' 카테고리의 다른 글

[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

댓글