본문 바로가기
운영체제

운영체제 정리 1. 프로세스

by sunday5214 2018. 11. 19.

프로세스의 정의


-수행 중인 프로그램

-컴퓨터 상에 수행 중인 프로그램의 인스턴스

-처리기에 할당되어 수행될 수 있는 개체

-명령들의 순차 수행, 현재 상태, 연계된 시스템 자원들의 집합 등에 의해 특정지어지는 활성화 단위


결론 : 실행 중인 프로그램



프로세스 제어블록


-역할 : 수행 프로세스를 인터럽트한 후 나중에 그 인터럽트가 발생되지 않은 것처럼 프로세스 수행을 재개할 수 있도록 충분한 정보를 유지하는 것


-저장 내용 : 식별자, 상태, 우선순위, 프로그램 카운터, 메모리 포인터, 문맥 데이터, 입출력 상태 정보, 어카운팅 정보


-작동 순서 :  프로세스 실행 중->인터럽트->제어블록에 상태 저장->인터럽트 끝->저장된 상태를 블록 or 준비->처리기 레지스터에 저장된 상태에 대한 PC값과 문맥데이터 적재->수행 시작



5-상태 모델


-수행 : 현재 수행중인 프로세스

-준비 : 기회가 주어지면 수행될 준비가 된 프로세스

-블록/대기 : 입출력 연산 완료 등과 같은 어떤 이벤트가 발생할 때까지 수행될 수 없는 프로세스

-생성 : 막 생성되었으나 수행 가능한 프로세스 풀로의 진입이 아직 허용되지 않은 프로세스

-종료 : 프로세스 수행이 중지되거나 어떤 이유로 중단되어 수행가능 프로세스 풀에서 방출된 프로세스


상태 전환 별 특징


-Null->생성 : 프로그램 수행을 위해 프로세스 생성


-생성->준비 : OS가 새로운 프로세스를 받아들일 준비가 되었을 때, 그 프로세스를 생성 상태에서 준비 상태로 전이합니다. 대부분의 OS는 시스템의 성능을 위해서 프로세스에게 할당되는 자원의 양 혹은 활성화되는 프로세스 갯수를 제한 합니다.


-준비->수행 : 스케줄러 또는 디스패처가 준비 상태의 프로세스들 중 하나를 선택하여 실행합니다.


-수행->종료 : 수행중인 작업이 완료되거나 수행이 중단되면, OS는 프로세스를 종료시킵니다.


-수행->준비 : 보통 TimeOut이 주된 이유이며 프로세스 우선순위에 따른 선점 또는 프로세스 스스로 처리기의 제어를 해제하여 다른 프로세스에게 양도하는 경우에 생기게됩니다.


-수행->블록 : 프로세스가 자원을 요구했는데 대기가 필요하면 블록 상태가 됩니다. 공유 자원이나 어떤 입력을 받아야 할 경우가 그 예시입니다.


-블록->준비 : 블록 상태에서 자신이 기다리던 이벤트가 발생하면 준비 상태로 전이됩니다.


-준비->종료 : 보통 부모프로세스가 자식프로세스를 종료시키거나 부모 프로세스가 종료되면 그 밑의 자식프로세스도 함께 종료되는 경우가 예시


-블록->종료 : 준비->종료와 같은 내용이 적용된다고 합니다.


수행모드(사용자 모드 vs 커널 모드)


-사용자 모드 : 보통의 사용자 프로그램은 이 모드로 수행된다. 커널 모드에 비해서 가지고 있는 권한이 낮다.


-커널 모드 : 운영체제 커널과 관련이 있기 때문에 커널 모드이다. 메모리관련 명령어, 특정한 메모리부분은 이 모드로만 수행 또는 접근이 가능하다.


모드가 있는 이유 : 사용자 프로그램의 간섭으로부터 OS 및 프로세스 제어블록과 같은 주요 OS 테이블을 보호해야하기 때문이다.(리눅스에서 sudo와 그냥 명령어의 차이? 같은 )


프로세스 교환


1. PC와 다른 레지스터들을 포함한 처리기 문맥을 저장한다.(어떤 일을 하는 중이었는지 등등)

2. 현재 수행 중인 프로세스의 제어 블록을 갱신한다. 이 때 그 프로세스는 준비, 블록, 준비/보류, 종료 상태 중 하나로 전이된다.

3. 교환될 프로세스의 프로세스 제어블록을 적절한 큐로 옮긴다.

4. 다음에 수행시킬 프로세스를 선택한다.

5. 선택된 프로세스의 제어블록을 갱신한다. 이 때 그 프로세스 상태가 수행 상태로 전이된다.

6. 메모리 관리와 관련된 자료구조를 갱신한다. 이것은 주소 변환이 어떻게 관리되는가에 따라 요구되지 않을 수도 있다.

7. 선택된 프로세스가 이전의 수행 상태에서 사용하였던 처리기의 문맥을 복원한다.(처리기에 저장했던 정보를 적재한다.)