공부기록

프로세스 제어 본문

CS/OS

프로세스 제어

코타쿠 2021. 5. 3. 23:13
  • 수행모드
    • User Mode
      • 권한을 덜 가진 사용자 모드
      • 사용자 프로그램들이 일반적으로 이 모드에서 수행됨
    • Kernel Mode
      • 더 많은 권한을 가진 시스템 모드, 제어 모드
      • 운영체제 커널과 관련
    • 두 모드를 이용하는 이유
      • 사용자 프로그램의 간섭으로부터 PCB와 같은 주요 운영체제 테이블을 보호하기 위함
      • 커널 모드에서 소프트웨어는 프로세서와 명령어, 레지스터들, 메모리에 대한 완전한 제어를 가질 수 있음, 이는 안전하지 않다.
      • 모드를 나타내는 방법?
        • 프로세스는 Program Status Word의 한 비트를 사용하여 수행모드를 나타냄
      • 모드의 전환 방법?
        • 사용자가 system call 을 호출하거나 interrupt trigger에 의해서 커널 모드로 전환됨
        • 제어가 OS 서비스에서 사용자 프로세스로 돌아오면서 유저 모드로 돌아옴
  • 프로세스 생성
    • 새로운 프로세스에 유일한 식별자를 할당
      • 새로운 항목이 주요 프로세스 테이블에 추가됨
    • 프로세스에 공간 할당
      • 사용자 주소 공간(프로그램 및 데이터), 사용자 스택
    • PCB Init
      • 프로세스 id, 부모 프로세스 id
      • 프로세스 상태
    • 적절한 연결 설정
      • 스케줄링을 위해 자료구조에 넣는다.
      • linked list로 준비 큐에 넣는다거나 하는 작업 수행
    • 다른 자료구소 생성, 또는 확장
      • 과금, 어카운팅 파일 유지
  • 프로세스 교환
    • 어떠한 이벤트가 프로세스를 교환하게 하는가?
      • 인터럽트, 트랩, 시스템콜에 의해 일어난다.
      • 인터럽트
        • 현재 수행중인 프로세스와는 별개로 외부에서 유발되는 사건에 의해 발생 
        • 비동기적인 사건에 반응하기 위함
        • 처리의 흐름 : 인터럽트 핸들러 -> 기본적인 관리 작업 처리 -> 관련된 OS 루틴으로 분기
        • 종류
          • 클락 인터럽트
            • 시간할당량 (time slice)를 모두 소진
          • I/O 인터럽트
            • 사건과 관련있는 블록된 프로세스를 준비상태로 전이시키고 preemptive할지 결정하여 스케줄링
          • 메모리 폴트
            • 주기억장치에 없는 워드에 대한 가상메모리 주소를 참조해야함
            • 해당 주소의 메모리 블록을 보조기억장치에서 주기억장치로 반입해야함
            • I/O 요청후, 메모리 폴트를 발생시킨 프로세스는 블락됨
            • 다른 프로세스로 교환
            • I/O 사건이 완료되면 블록된 프로세스는 준비상태로 전이
      • 트랩
        • 현재 수행중인 프로세스의 오류 및 예외조건에 의해 일어난다.
        • 오류 및 예외조건을 처리하기 위함
        • OS는 관련 오류 또는 예외 조건이 치명적인지 아닌지 판단
          • 치명적일 경우, 현재 수행되는 프로세스는 종료상태로 전이, 프로세스 교환
          • 그렇지 않으면 복구 프로시저를 수행하거나 사용자에게 통보, 프로세스 교환하거나 현재 프로세스의 수행을 재개
      • 수퍼바이저 콜
        • 명시적인 요청에 의해 일어난다.
        • OS 기능을 사용하기 위함
        • 수행중인 프로세스가 시스템 콜을 수행
  • 모드 전환
    • 프로그램 카운터 값을 인터럽트 핸들러 프로그램의 시작 주소로 설정
    • 사용자 모드를 커널 모드로 전환 시켜 인터럽트 처리 코드가 특권 명령어를 수행
    • 처리기는 반입 절차를 계속 수행하여 인터럽트를 처리하는 인터럽트 핸들러 프로그램의 첫 명령을 가져옴
      • 인터럽트된 프로세스 문맥은 PCB에 저장된다.
      • 저장된 문맥의 구성
        • 인터럽트 핸들러의 수행으로 인해 변경될 수 있는 정보, 인터럽트된 프로그램을 다시 재개해는데 필요한 정보
        • PCB의 일부인 processor state information이 필요
        • 프로그램카운터, 처리기의 레지스터들의 내용, 스택 정보 등
    • 인터럽트 핸들러는 인터럽트에 관련된 몇몇 기본적인 작업을 수행하는 프로그램이다.
  • 모드 전환 vs 프로세스 교환
    • 모드 전환은 수행중인 프로세스의 상태를 바꾸지 않고 수행가능
      • 문맥을 저장하거나 복구할 때 생기는 오버헤드가 거의 없다.
    • 프로세스 교환은 환경을 크게 변경시키며 모드 전환에 비해 상당히 많은 작업을 요한다.
      • 프로세스 교환 순서
        • 프로그램 카운터와 다른 레지스터들을 포함한 처리기 문맥을 저장
        • 현재 수행 상태인 프로세스의 PCB를 갱신
          • 프로세스는 다음 상태로 전이됨
          • 이 프로세스가 수행상태를 떠나는 이유, 과금 정보 및 다른 정보들 또한 갱신되어야 한다.
        • PCB를 적절한 큐로 옮긴다.
        • 다음 프로세스를 선택
        • 다른 프로세스의 PCB를 갱신, 수행상태로 전이
        • 메모리 관리와 관련된 자료구조 갱신
        • 선택된 프로세스가 이전에 수행 상태에서 사용하였던 처리기 문맥 복원
    • 따라서 프로세스 교환은 모드 전환보다 많은 노력을 요구한다.

'CS > OS' 카테고리의 다른 글

처리기 스케줄링의 유형  (0) 2021.05.04
스케줄링의 개념  (0) 2021.05.04
프로세스의 표현  (0) 2021.05.03
프로세스 상태  (0) 2021.05.03
프로세스의 개념  (0) 2021.05.03