티스토리 뷰

TIL

[OS] 프로세스 상태

sayho 2022. 2. 3. 15:53
CPU 스케줄링

  CPU에 어떤 프로세스를 할당해야할 지 결정하는 방법이다. 

프로세스 상태

  프로세스 스케줄링을 하기 위해서는 프로세스 상태가 필요하다. 프로세스 상태를 고려하여 운영체제는

  CPU 스케줄링을 하게된다. 프로세스의 일생은 생성에서 시작하여 종료로 끝난다.

프로세스의 생성

  프로세스가 생성되면 메모리에 주소공간이 생성되고 PCB가 생성된다. 리눅스는 fork를 이용하여 프로세스

  를 생성하고 윈도우는 CreateProcess API를 이용하여 프로세스를 생성한다. 프로세스가 생성되는 조건은

  다음과 같다.

 

  1. 새로운 일괄처리 작업
  2. 대화형 로그온 : 사용자가 터미널에서 시스템에 로그인을 하는 경우
  3. 서비스를 제공하기 위해 운영체제가 생성
  4. 기존 프로세스에 의한 생성 : 병렬성을 활용하기 위해 사용자 프로그램가 프로세스의 생성을 명령하는 경우
프로세스의 종료 조건

  프로세스가 종료되는 조건은 다음과 같다.

 

  1. 정상완료 : 프로세스가 수행 완료됨이 알리는 운영체제 서비스를 호출하다면 프로세스가 종료되었다는 의미다.
  2. 시간 한도 초과
  3. 메모리 부족 : 프로세스가 시스템이 제공할 수 있는 메모리보다 더 많은 메모리를 요청할 경우
  4. 경계범위 위반 : 프로세스가 접근이 허용되지 않은 메모리 위치에 접근하려고 하는 경우
  5. 보호 오류 : 프로세스가 사용 금지된 자원이나 파일을 사용하려는 경우, 읽기 전용 파일에 쓰기를 하는 경우
  6. 산술 오류 : 프로세스가 0으로 나누기와 같은 금지된 계산을 하는 경우
  7. 시간 초과 : 프로세스가 이벤트의 발생을 명시된 최대 시간보다 초과하여 기다리는 경우
  8. 입출력 실패 : 파일을 찾을 수 없거나 최대 횟수 만큼 시도 후 읽기/쓰기가 실패한 경우 등
  9. 무효 명령어 : 프로세스가 존재하지 않는 명령어를 수행하려는 경우
  10. 특권 명령어 : 프로세스가 운영체제만 사용하는 예약 명령어를 실행하려는 경우
  11. 데이터 오용 : 데이터 타입이 잘못되거나 초기화 되지 않은 경우
  12. 오퍼레이터나 운영체제 간섭 
  13. 부모 종료 : 부모 프로세스가 종료된 경우 운영체제는 부모 프로세스가 생성한 모든 자식 프로세스를 자동 종료할 수 있다
  14. 부모 요청 : 부모 프로세스는 자식 프로세스를 종료시킬 수 있는 권한을 가지고 있다
프로세스 보류 조건

  블록킹 된 프로세스의 일부를 보조기억 장치로 옮겨 주기억장치의 공간을 확보하여 새로운 프로세스가 주기억

  장치에 적재되도록 한다. 

  • 스왑아웃 : 종료되지 않은 프로세스의 전체 또는일부 이미지(주기억장치에 프로세스가 적재되었을 때의 메모리 묶음, 사용자 데이터 + 사용자 프로토콜 + 시스템 스택 + PCB)를 주기억장치에서 디스크의 일부인 스왑 공간으로 이동시키는 것
  • 스왑 인 : 스왑 아웃된 프로세스의 전체 또는 일부 이미지를 디스크의 스왑 공간에서 주기억장치로 적재하는 것
  1. 스와핑 : 실행 준비가 된 프로세스를 불러 들여오기 위해 OS는 주기억장치를 해제할 경우
  2. 운영체제의 다른 이유 : 문제를 일으킬 가능성이 있는 프로세스를 보류시킬 경우
  3. 대화식 사용자의 요청 : 디버깅 또는 컴퓨터 자원 사용과 관련해서 프로그램의 수행을 보류시킬 경우
  4. 타이밍 : 주기적으로 실행되는 프로세스가 다음 주기까지 대기할 경우
  5. 부모 프로세스의 요청
디스패처 (Dispatcher)

  디스패처는 CPU 스케줄러에 의해 선택된 프로세스를 CPU에 할당하는 작업을 한다. 

준비 큐(Ready Queue) 와 블록 큐(Block Queue)
  • 준비 큐 : 큐 안에 있는 프로세스 중 우선순위에 의해 하나를 선택하여 실행한다. 단기 스케줄러가 선택하고 디스패처가 실행한다.
  • 블록 큐 : 이벤트가 발생하면 준비 큐로 이벤트가 대기 시 블록 큐로 진입한다. 
2-STATE 프로세스 모델

 

  CPU가 여러개의 프로세스를 돌아가면서 처리하기 위해서는 2개의 상태인 비실행, 실행 상태가 존재한다.

 

  1. 큐에 있는 비실행 프로세스 하나를 단기 스케줄러가 알고리즘에 의해 선택한다.
  2. 선택된 비실행 프로세스를 디스패처가 실행 상태 프로세스로 변경한다.
  3. 일시 정지되는 프로세스는 다시 준비큐에 등록한다.
5-STATE 프로세스 모델
  1. 실행 : 프로세스가 현재 실행중인 상태
  2. 준비 : 준비 큐에서 실행 될 준비가 되어있는 프로세스 상태 
  3. 블록/대기 : 프로세스가 입출력과 같은 이벤트가 완료되기를 기다리고있는 상태
  4. 생성 : 프로세스가 막 생성되어 준비큐에 들어오지 못한 상태 (주기억장치에는 PCB가 만들어졌으나 보조기억장치에 존재하는 경우)
  5. 종료 : 프로세스 풀에서 방출된 상태
5-STATE 프로세스 모델 : 상태 전이
  1. 없음 → 생성 : 프로세스 생성
  2. 생성 → 준비 : 프로세스가 준비상태가 되도록 승인
  3. 준비 → 수행 : 단기 스케줄러가 대기중인 프로세스를 선택하고 디스패처가 실행
  4. 수행 → 준비 : 시간만료 또는 선점 당한 경우(높은 우선순위 프로세스에 의해 밀렸을 경우)
  5. 수행 → 블록 : 수행 중에 입출력장치를 요청
  6. 블록 → 준비 : 블록의 원인인 사건 발생
  7. 수행 → 종료 : 프로세스 종료
  8. 준비 → 종료 : 부모프로세스가 종료
  9. 블록 → 종료 : 부모프로세스가 종료
7-STATE 프로세스 모델
  • 준비 : 프로세스가 주기억장치에 있고 수행될 수 있다
  • 블록 : 프로세스가 주기억장치에 있고 이벤트를 기다리고 있다
  • 블록/보류 : 프로세스가 보조기억장치에 있고 이벤트를 기다리고 있다
  • 준비/보류 : 프로세스가 보조기억장치에 있지만 주기억장치에 적재되면 즉시 수행될 수 있다
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함