운영체제 (Operating System) (하드웨어와 응용 프로그램 사이의 인터페이스 역할을 담당하는 시스템 소프트웨어) 2. 프로세스란?(실행 중인 프로그램) A200812032 조사선
프로세스의 정의 프로세스의 정의 프로세스의 역할 수행 두 개의 프로세스가 같은 프로그램(문서편집기) 사용 프로세스의 정의 프로세스의 정의 실행중인 프로그램(가장 보편적으로 사용) 비동기적 행위(Asynchronous Activity) 프로시저가 활동중인 것 실행중인 프로시저의 제어 추적 운영체제 내에 PCB(Process Control Block)가 존재 프로세서가 할당하는 개체 디스패치가 가능한 대상 등 프로세스의 역할 수행 프로세서 점유, 메모리, 파일, 입출력 장치 - 자원 필요 프로세스 생성이나 실행 - 자원 할당 프로그램 코드, 프로그램 카운터, 프로세서 레지스터 내용 포함 데이터베이스, 문서편집기 - 재진입 프로그램 스택과 공통 자료를 보관하는 자료부분 두 개의 프로세스가 같은 프로그램(문서편집기) 사용 별개의 프로세스로 인식 [이유]코드 부분은 같지만 각기 별도의 스택에 다른 자료를 가짐
프로세스의 종류 운영체제 프로세스 : 커널 프로세스, 시스템 프로세스 사용자 프로세스(User Process) 프로세스들의 실행순서 제어, 중요한 시스템 감시 기능 담당 시스템 운영에 필요한 코드 수행 사용자 프로세스(User Process) 사용자 코드를 수행하는 프로세스 병행 프로세스(Concurrent Process) 여러 개의 프로세스가 동시에 수행되는 상태 병행성(동시성)동시에 시스템에 존재하나 어느 순간에는 단지 한 프로세스만 프로세서에서 실행 서로 관련이 없는 독립적인 프로세스와 다른 프로세스와 서로 협력하면서 수행하는 협동 프로세스로 구분 독립 프로세스 주어진 초기값에 따라 같은 결과를 보여주는 프로세스 다른 프로세스와 자료 미공유 협동 프로세스 다른 프로세스에게 영향을 주거나 영향을 받는 경우 제한된 자원 서로 공유하는 프로세스 사⇒ 통제된 상호 작용하는 경우에 발생 협동 필요한 경우 : 서로 통신을 위한 수단과 동기화 기능 필요
프로세스 제어 블록 프로세스 PCB : 작업 제어 블록 프로세스 상태 프로그램 계수기(program counter) 레지스터 PCB(Process Control Block)에 의해 운영체제 내에 표현 PCB : 작업 제어 블록 프로세스에 대한 자료 블럭 또는 레코드 프로세스의 현 상태, 식별자, 우선순위, 스케쥴링 정보, 메모리,시스템 자원, 계정 정보, 레지스터의 값 등에 관한 정보 보유 운영체제의 모듈에 의해 판독되고 수정 프로세스 생성시에 만들어지며 메인메모리에 유지 운영체제 내에서 한 프로세스 존재 정의 실행이 종료된 프로세스 : 해당 PCB 삭제 프로세스 상태 신규, 생성(new), 준비(ready), 실행(running), 보류(Blocked), 중단(halted)등 상태 표시 프로그램 계수기(program counter) 프로세스를 수행하기 위한 다음 명령의 주소 표시 레지스터 누산기(accumulator), 색인 레지스터(index register), 범용 레지스터, 조건 코드(condition code) 등 계정정보(account information) 프로세서 사용시간, 실제 사용시간, 사용상한 시간, 계정 번호, 작업이나 프로세스 번호 등 포함. 입출력 상태정보(I/O status information) 특별한 입출력 요구 프로세스에 할당된 입출력 장치, 개방된(opened) 파일의 목록 등 유지
프로세스 제어 블록 프로세서 스케줄링 정보 메모리 관리 정보 PCB : 모니터 메모리 영역에 저장 프로세스와 프로그램 프로세스의 우선 순위, 스케줄링 큐에 대한 포인터, 그 외 다른 스케줄 매개 변수를 가지고 있음 메모리 관리 정보 메모리 영역 정의 : 하한 및 상한 레지스터(경계레지스터) 페이지 테이블 정보 PCB : 모니터 메모리 영역에 저장 최대 프로세스의 수 선언, PCB에 공간을 미리 할당 시간에 따라 변화하므로 동적 기억 장소 관리가 바람직함 프로세스와 프로그램 프로그램 자체 : 프로세스가 아님 프로그램 : 여러 개의 프로세스들로 생성 디스크 상에 저장되어 있는 파일의 내용 수동적인 정적 단위 프로세스 : 능동적인 객체 사용 자원(프로그램 카운터, 레지스터 등) 정보 프로세스 실행 과정에서 다른 프로세스를 파생할 수 있음 프로세스 ⇒ 프로그램 실행을 위한 메모리영역, PCB등의 자원을 할당 받은 상태가 됨
프로세스 상태 전이 준비(Ready) 상태 보류(Blocked)/대기 상태 실행(Running) 상태 실행 프로세스 : 프로세스의 시간 할당량 초과시, 보류(Blocked) 프로세스 : 보류된 이유가 보류(Blocked)/대기 상태 실행 프로세스가 프로세서에서 수행을 하다가 입출력 명령 또는 유사한 요청을 낼 때 실행(Running) 상태 준비 상태의 프로세스가 디스패처(Dispatcher)에 의해 프로세스가 부여될 때
프로세스 상태 전이 준비 → 실행 : “디스패칭(Dispatching)” 실행 → 준비 준비 리스트의 맨 앞에 있던 프로세스가 프로세서 선택 상태 변환 표시 dispatch(프로세서 명) : 준비 → 실행 시간 할당량(time guantam) 실행 프로세스에게 일정시간 프로세서 사용할 수 있는 시간 제한 제한 이유 특정프로세스가 프로세서 계속 독점 사용 예방 실행 → 준비 프로세스가 프로세서 점유 상태 “프로세스 실행 상태” 프로세서 독점 방지 - 인터럽트 클럭 이용 - 프로세스 ⇒ 프로세서 점유(지정 시간 동안) - 일정한 시간 경과 후 프로세서 점유 ⇒ 클럭이 인터럽트를 발생시켜 운영체제가 프로세서 제어권 갖게 됨 운영체제가 제어권 보유 : 실행 상태 준비 상태(프로세스) 준비 리스트 내의 첫 프로세스가 실행 상태로 됨 상태 변환 표시 : timerunout(프로세스 명) : 실행 → 준비
실행 → 보류 보류 → 준비 프로세서 양도 ⇒ 스스로 보류 상태로 가게 됨 새로운 자원 요청 등 기타문제 발생 실행 상태의 프로세스가 지정된 시간 이전에 입출력 연산 필요로 할 경우 새로운 자원 요청 등 기타문제 발생 상태 변환 표시 :block(프로세스 명) : 실행 → 보류 보류 → 준비 입출력 작업이 끝났을 때에 발생하는 깨움(wake up)상태 보류 상태로부터 준비 상태로의 변환 상태 변환 표시 : wakeup(프로세스 명) : 보류 → 준비 프로세스 자신이 프로세스 변환 – 보류 나머지 상태 변환 - 외적 조건에 의해 발생
프로세스 생성 수행 시작(프로세스 생성 추가) 프로세스의 생성 하나의 프로세스가 다른 프로세스의 생성 허용 PCB를 만들어 프로세스 생성, 프로세스에게 주소 공간 할당 일괄처리 환경 - 작업이 제출될 때 대화형 환경 - 새로운 사용자의 로그온(log on)이 프로세스의 생성 운영체제의 도움 사용자의 애플리케이션 요청 [예] 사용자의 요청 : 프린터를 구동시키는 프로세스 생성 출력 작업 완료 하나의 프로세스가 다른 프로세스의 생성 허용 생성된 프로세스 : 자식 프로세스 생성시키는 프로세스 : 부모 프로세스
프로세스 종료 프로세스 마지막 명령 실행(프로세스 종료) 일괄처리 환경 운영체제 대화형 환경 운영체제 프로세스 마지막 명령 실행(프로세스 종료) 운영체제에게 프로세스 삭제 요청 일괄처리 환경 운영체제 작업의 종료 신호 : 인터럽트 발생시켜 통보 중지 명령(시스템 호출) 프로세스 완료 대화형 환경 운영체제 사용자가 로그 오프(log off) 터미널 끌 때 발생 여러 오류에 의해 발생 가능 [예] abort 시스템 호출 - 종료 프로세스 생성시킨 부모 프로세스만 가능 부모가 자식의 생사권 보유 다른 사용자들이 서로 상대방의 작업 중단 방지 새로운 프로세스 생성 새로운 프로세스의 신원(identity)을 부모에게 전달
프로세스 제거 프로세스 제거 자신을 생성한 부모 프로세스 소멸 시스템으로부터 프로세스를 제거하는 것 프로세스에 속해있던 자원은 다시 시스템으로 돌아가고 프로세스는 시스템 리스트 또는 테이블에서 사라지고 PCB가 회수되며 프로세스는 제거됨 프로세스의 프로그램 부분은 디스크에 저장 자신을 생성한 부모 프로세스 소멸 ⇒ 자식 프로세스들도 자동적으로 소멸
서스펜드와 재시작 프로세스의 준비, 실행, 대기(보류) 상태 이용 해결 방법 실행할 프로세스 선택 방법 ⇒ 시스템의 유휴 상태 입출력 동작 시간이 연산 시간 보다 느리기 때문 프로세서의 동작 시간이 입출력 동작보다는 짧기 때문 Windows상에서 수행 중인 윈도우 이외 대기 상태 ⇒ 옅은 색으로 바뀜 해결 방법 프로세스의 일시 중지 상태(서스펜드 상태) 이용 실행할 프로세스 선택 방법 새로운 프로세스를 생성하여 실행 이미 실행 중에 있던 프로세스를 중지시켰다가 다시 실행 일시 정지 후 다시 실행시키는 프로세스 과정 시스템 전체의 부하를 증가시키지 않고 프로세스에게 서비스 제공 실행 상태에서 일시 중지 상태(서스펜드 상태)를 추가 특정 이벤트의 발생을 기다리며 대기 상태로 변함 해당 이벤트 발생으로 즉시 실행 상태로 변환할 수 있음 서스펜드 프로세스가 입출력 요구 이외의 다른 원인으로 수행이 중단되어 있는 상태(자원 부족(대기) 상태) 중단된 프로세스는 기다리는 이벤트가 발생되면 중단 이전의 상태로 되돌아 감
서스펜드와 재시작 재시작 프로세스 서스펜드하고 재시작 -시스템의 부하 조정 프로세스의 서스펜드와 재시작 경우 중단 원인이 제거되어 다시 수행되는 것 프로세스 서스펜드하고 재시작 -시스템의 부하 조정 프로세스의 서스펜드와 재시작 경우 시스템 장애 발생 실행 프로세스 : 잠시 서스펜드 시스템 기능 회복 : 다시 재 시작 프로세스 부분이 의심스러움 실행 프로세스 서스펜드 시킴 : 확인 후 재 시작, 정지 여부 결정 시스템 부담 발생 몇 개의 프로세스 서스펜드 시킴 시스템 다시 정상 상태 복귀 : 재 시작 프로세스가 실행되기 전에 자원을 배당받고 실행 시작 다중프로그래밍 환경 - 동적자원 배당 자원의 이용율과 시스템 효율 향상 배당된 자원을 기다리는 경우 -서스펜드 상태 자원을 할당 받으려고 기다리는 상태 - 대기(보류) 상태 사용가능 장치가 부족할 경우 대기(보류) 상태 대기(보류) 상태 - 시간이 경과되면 요청한 자원을 사용 대기(보류) 상태 준비 상태 문제 하드웨어 고장 다른 프로세스가 해당자원을 반환할 수 없는 상태 - 교착상태
서스펜드와 재시작 프로세스 상태 변환 : 서스펜드와 재시작 추가 추가 ⇒ 서스펜드된 준비 상태와 서스펜드된 보류 상태
인터럽트의 종류 감시 프로그램 호출 인터럽트 입출력 인터럽트 외부 인터럽트 재시작 인터럽트 프로그램 검사 인터럽트 사용자가 함부로 운영체제 내에 들어올수 없으며 반드시 SVC를 통해 서비스를 받도록 하는것 입출력 인터럽트 입출력이 완료되었거나 에러가 발생 했을 때 알려주는 것 외부 인터럽트 인터럽트 시계에서 일정한 시간이 만료가 된 경우 또는 인터럽트 키를 입력하는 경우 또는 다중 처리 시스템에서 다른 CPU로 부터 신호가 왔을 경우에 발생 재시작 인터럽트 콘솔에서 재시작 단추를 누를때 또는 다중 처리 시스템에서 다른 CPU로 부터 재시작 SIGP명령문이 도착되면 발생 프로그램 검사 인터럽트 수행중인 프로세스가 0 으로 나누거나 허용되지 않은 명령문을 실행 하거나오퍼레이션 코드를 잘못 사용한 경우
문맥교환 실행 중인 프로세스 인터럽트 인터럽트 발생 트랩(trap) 발생 인터럽트 처리 인터럽트의 예 다른 프로세스 실행 상태 : 프로세스에게 제어 넘겨줌 실행 프로세스로부터 제어 인수 : 운영체제 다른 프로세스에게 제어 이동(프로세스 교환 일으킴) 인터럽트 발생 실행 프로세스와는 별도로 외부에서 발생되는 여러 종류의 이벤트 (예 입출력 동작의 종료)에 의해 발생 트랩(trap) 발생 부적절한 파일 접근 실행 프로세스에 의해 발생되는 오류나 예외 상황 때문에 발생 인터럽트 처리 인터럽트 처리 루틴으로 제어 이동 인터럽트 형태에 따라 관련된 운영체제 루틴으로 분기 인터럽트의 예 입출력 인터럽트 : 프로세스 준비 상태로 바꿈(실행 프로세스 결정) 클럭 인터럽트 : 할당 시간 조사 프로세스를 준비 상태로 변환하고 다른 프로세스를 디스패치
문맥교환 운영체제에서 인터럽트 발생 트랩의 경우 문맥교환(context switching) - 프로세스 교환 과부하 발생 프로세스의 교환으로 이루어지지 않고 인터럽트 처리 루틴 실행된 후 실행중인 프로세스가 재실행 가능 트랩의 경우 치명적 오류인 경우 프로세스는 종료되고 프로세스 교환 발생 문맥교환(context switching) - 프로세스 교환 이전의 프로세스 상태 레지스터 내용 보관 또 다른 프로세스의 레지스터들을 적재하는 과정 프로세스가 준비 → 실행 상태 프로세스가 실행 → 준비, 실행 → 대기 상태 : 문맥교환 과정 발생 과부하 발생 메모리 속도, 레지스터 수, 특수명령어(모든 레지스터 하나의 명령어 보관)에 따라 다름 현행 레지스터 포인터 변경(모든 레지스터 포인터 변경 포함)
exit dispatch timeout sleep (schedule) (premier) (black) wakeup swap in swap in (resume) (resume) 활동 상태 swap out swap out 지연 상태 (suspend) 실행 상태 종료 상태 준비 상태 대기 상태 생성 상태 지연 준비 상태 지연 대기 상태