NOWS/Operating Systems

프로세스 - part 1. 프로세스 기술(description) 과 제어

emzei 2016. 7. 11. 16:18
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

  • 프로세스 교환 시점
    • 인터럽트  (h/w interrupt)
      • 현재 명령어 수행과 별개로 비 동기적인 외부 사건에 의해 발생
      • 인터럽트 핸들러에서 시스템 관리작업 처리 후 유형에 따라 관련 OS 루틴으로 분기하여 핸들링
      • (ex) HW interrupt — clock interrupt, i/o interrupt, memory fault
    • 트랩 
      • 현재 수행중인 프로세스와 관련되어, 오류나 예외 처리를 위해 발생
      • 관련 오류 또는 예외가 치명적인지 여부에 따라 프로세스 종료 or 복구 프로시저 수행 or 프로세스 교환 or 사용자 통보 등.
    • 슈퍼바이저 호출
      • 프로그램 수행 중 OS 기능에 대해 명시적 요청을 통해 발생

  • 모드 전환 (mode switching)
    • 프로그램 카운터를 인터럽트 핸들러의 시작주소로 설정
    • 커널모드로 전환 후 인터럽트 처리코드 수행
    • 기존 문맥 저장 후 인터럽트 핸들링 뒤 기존 문맥 복구

  • 모드 전환 vs. 프로세스 전환
    • 모드 전환 : 현재 수행상태에 있는 프로세스의 상태를 바꾸지 않고 수행 가능
    • 프로세스 교환 : 교환을 위해 환경을 변경해야하고, 모드전환에 비해 많은 작업이 필요