2장 프로세스 과목: 운영체제 학번:200605004 이름:오승현
1. 프로세스의 개요 과거 시스템은 단일 프로그래밍 시스템 으로 시스템의 자원이 낭비되며 시스템 의 성능이 저하되었다. 이를 해결하기 위 해 다중 프로그래밍 기법 을 사용하게 되 어 시스템의 효율성은 높아지는 대신 각 프로그램에 대한 강력한 통제가 필요하 게 되어서 등장 한 것이 프로세서 개념이 다.
2 . 프로세스의 정의 프로세스(Process)는 일반적으로 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프 로그램을 의미하며, 작업(Job), 태스크(Task)라고도 한다. 프로세스는 다음과 같이 여러 형태로 정의 할 수 있다. - PCB를 가진 프로그램 - 실기억장치에 할당되는 실체 - 프로세서가 할당되는 실체 - 프로시저가 활동중인 것 - 비동기적 행위를 일으키는 주체 - 지정된 결과를 얻기 위한 일련의 계통적 동작 - 목적 또는 결과에 따라 발생되는 사건들의 과정 - 운영체제가 관리하는 실행 단위
3.프로세서의 종류 -운영체제 프로세스 역할 : 실행순서 제어, 커널 영역 침범 방지, 사용자 프로 세서 생성 입출력 프로세서 생성 -사용자 프로세스 역할 : 사용자 프로그램, 데이터 코드 실행 -병행 프로세스 역할 : 여러 프로세서 동시 수행 상태 점검 -독립 프로세스 역할 : 다른 프로세서로부터 영향을 주지 않거나 영향을 받지 않도록 하는 것 -협동 프로세스 역할 : 하나의 프로세서가 다른 프로세서에 영향을 주거 나 영향을 받는 프로세서이다.
4. 프로세스 관리블(PCB) PCB(Process Control Block, 프로세스 제어 블록)는 운영체제가 프로세스에 대한 중요한 정보를 저장 해 놓는 곳으로, Task Control Block 또는 Job Control Block 이라고도 한다. 각 프로세스가 생성될 때마다 고유의 PCB가 생성 되고, 프로세스가 완료되면 PCB는 제거된다. PCB에 저장되어 있는 정보는 다음과 같다
. - 포인터 : 프로세서가 적재된 기억장소의 주소에 대한 포인터 값. - 프로세서 현재 상태 : 준비, 실행, 대기, 종료 등의 상태를 나타낸다. - 프로세서 식별자 : 프로세서 생성시 부여한 고유한 정수 번호의 값. - 프로그램 카운터 : 다음에 실행할 명령어의 주소를 나타낸다. - 프로세서 우선순위 : 프로세서 스케줄링을 하기 위해 실행될 우선 순위를 나타 낸다. - 각종 레지스터 : 누산기, 인덱스, 스택 레지스터 등의 상태 코드 정보를 가지고 있다. - 기억장치 관리 정보 : 경계 레지스터나 페이지 테이블들을 가지고있다. - 입출력 정보 : 입출력 요구사항, 입출력장치에서 오픈된 파일리스트를 가지고 있다. - 문맥 저장 정보 : 프로세서가 실행 중에 어떤 이유로 인하여 실행을 중지해야 할 때 프로세서가 갖고 있던 값들을 보존하기 위해 사용된다.
5. 프로세스의 상태 프로세스는 실행되기 위하여 우선적으로 기억 장치를 할당받아 야 하고 할당받은 기억 장치에 자신의 프로그램과 데이터 등을 일 부라도 적재시켜야 한다. 이러한 관점에서 프로세스의 상태는 크 게 활동 상태(Active State)와 지연 상태(Suspended State)로 나누어 지는데, 활동 상태란 프로세스가 기억 장치를 할당받은 상태를 말 하며 지연 상태란 프로세스가 기억장치를 할당받지 못한 상태를 의미한다. -활동 상태(active, swapped-in) : 기억 장치를 할당 받은 상태 -실행 상태(running) : 프로세서를 할당받은 상태 -준비 상태(ready) : 필요한 자원을 모두 소유하고 프로세서를 요 청하고 있는 상태 -대기 상태(blocked, asleep) : 프로세서 외 다른 자원 없는 상태 -지연 상태(suspended, swapped-out) : 기억 장치를 잃은 상태 -지연 준비 상태(suspended ready) : 프로세서를 요청하고 있는 상 태 -지연 대기 상태(suspended blocked) : 프로세서와 다른 자원 없는 상태
5-1 프로세스 상태 전이도
6. 프로세스의 상태 전이 - 생성 : 프로세스 생성시 프로세스를 실행하기 위해 프로세스에 메모리 공간을 활당하고 프로그램의 코드 를 메모리에 적재 - 준비 : 프로세스가 준비 큐에 놓여진다. 스케줄러로 부터 CPU를 할당 받아 실행되기까지 기다린다 - 실행 : 스케줄러로부터 CPU를 할당 받아 프로세스 가 실행 - 대기 : CPU를 반납한 상태에서 프로세스가 특정 이 벤트가 발생하기를 기다린다.
6.1 스레드 스레드란? - 프로세스를 구성하는 실행부분과 환경부분에서 실행부분만 분리한것 - 스레드의 장점 - 프로세스를 구성하는 실행부분과 환경부분에서 실행부분만 분리한것 - 스레드의 장점 (1) 빠르게 작동하는 네트워크 프로그램 작성 (2) IPC의 사용이 필요없다 - 스레드의 단점 (1) Fork를 이용한 프로세스 기반의 프로그램보다 불완전하게 작동 할 수 있다 (2) 디버깅이 어렵다
8. 인터럽트와 문맥교환 8.1 인터럽트의 종류 인터럽트란? 컴퓨터의 장착된 장치나 컴퓨터 내의 프로그램으로부 터 오는 신호로서 운영체계가 하던일을 멈추고 다음에 무엇을 할 것인지를 결정하게 된다 8.1 인터럽트의 종류 SVC(Supervisor Call) 인터럽트 : 기억장치 할당, 오퍼레 이터와 대화 등 입출렵 인터럽트 : 입출력시 에러, 입출력 완료시 클럭(Clock) 인터럽트 : 프로세서 시간 할당량을 모두 사용할 시 콘솔(Console) 인터럽트 : 키보드에서 인터럽트 키를 누 를 때 프로세스간 통신인터럽트 : 통신 메시지를 받을 때 발 생 프로그램 검사인터럽트 : 정의 되지 않은 명령어 사용 시 발생 하드웨어 검사인터럽트 : 하드웨어 자체 에러 시 발생
8.2 인터럽트 처리 과정
1. 인터럽트가 발생하면 시스템은 항상 현재 실행 중이던 프로세를 중단 시키고 이 인터럽트에 대한 처리 시작 2. 컴퓨터 시스템의 인터럽트 처리기능이 실행 3. 인터럽트 처리기능은 우선 인터럽트가 어디에서 무엇때문에 발생했는지 파악 4. 인터럽트에 서비를 할지 결정 5. 결정한 경우에는 해당 인터럽트에 대한 인터럽 트 서비스 루틴을 호출하여 실행 6. 이같은 과정이 끝난후 인터럽트로 인하여 중지 되었던 프로세스가 다시 실행 될 수도 있으며 또 다 른 프로세스가 디스 패치 되어 실행 상태로 전이 될 수 있다
8.3 문맥 보존과 문맥 교환 - 문맥이란? 특정 프로세스와 관련된 정보의 총집합이다 - 문맥 보존이란? 모든 프로세스들은 각자 자신의 문맥을 가지며 실행 중에 인터럽트가 발생하면실행중인 프로 세스의 레지스터 문맥을 보존하게 되는 과정 - 문맥 교환이란? CPU를 다른 프로세스로 교환하기 위해 이전에 프로세스의 상태를 보관하고 새로운 프로세스 의 보관된 상태를 적재하는 작업 - 문맥 재 적재란? 언젠가 중지되었던 프로세스가 다시 프로세스를 할당받아 실행 상태로 전이되면이 프로세스는 이전에 중지될 당시에 저장해 두었던 레지스터 문맥등을 프로세스를 재적재하고 실행하게 된 다