Operating system #2 Process 조태문 2019-02-17
Definition - process 현재 실행 중이거나 곧 실행할 수 있는 PCB를 가진 프로그램 목적 또는 결과에 따라 발생되는 사건들의 과정을 말함. 지정된 결과를 얻으려는 일련의 계통적 동작 비동기적 행위로서 이는 앞에서 어떤 명령의 동작이 끝났음을 가리키는 신화가 오는 것으로써 다음 명령의 수행을 시작함. 프로세스가 할당하는 entity로서 dispatch를 할 수 있는 단위 2019-02-17
Discription - process 시스템 프로세스 다른 프로세스를 관리, 시스템을 감시, 사용자 프로세스를 생성, 입출력 프로세스를 생성하는 등 시스템 운영에 필요한 작업을 수행 사용자 사용자 코드 수행, 데이터 코드 수행 병행 다수의 프로세스들이 동시에 수행상태에 있는 프로세스 독립 타 프로세스로부터 독립적임 협동 타 프로세스로부터 영향을 받거나 타 프로세스에게 영향을 주는 프로세스
PCB(Process Control Block) 1/2 프로세스는 프로그램 자체와 PD(Process Descriptor), PCB으로 이루어져 있는 PD는 운영체제가 그 프로세스를 관리하는데 필요한 모드 정보를 유지하는 자료구조 테이블이다. 운영체제는 기억 장치에 PD를 유지하며 운영체제가 CPU를 다른 프로세스에 넘겨주고자 할 때, 프로세스의 모든 정보를 PD에 저장시키고 실행시 이를 재사용한다. 프로세스가 생성될 때 만들어지며 각각 고유한 PCB를 가진다. 상태 변화 시 프로세스 관리자에 의해 정보가 변경되어 진다. PCB 같은 상태의 프로세스들이 존재하는 리스트들은 FIFO, Queue, Stack, Priority queue, Tree list, Simple linked list 등의 리스트로 연결되어 구성한다.
PCB(Process Control Block) 2/2 프로세서가 적재된 기억장소의 주소에 대한 포인터 값. 포인터 준비, 실행, 대기, 종료 등의 상태를 나타낸다. 프로세서 현재 상태 프로세서 생성시 부여한 고유한 정수 번호의 값. 프로세서 식별자 다음에 실행할 명령어의 주소를 나타낸다. 프로그램 카운터 프로세서 스케줄링을 하기 위해 실행될 우선순위를 나타낸다. 프로세서 우선순위 누산기, 인덱스, 스택 레지스터 등의 상태 코드 정보를 가지고 있다. 각종 레지스터 경계 레지스터나 페이지 테이블들을 가지고 있다. 기억장치 관리 정보 입출력 요구사항, 입출력장치에서 오픈된 파일 리스트를 가지고 있다. 입출력 정보 프로세서가 실행 중에 어떤 이유로 인하여 실행을 중지해야 할 때 프로세서가 갖고 있던 값들을 보존하기 위해 사용된다. 문맥 저장 정보
(Suspended, Swapped-in Process State State Specification 활동상태 (Active, Swapped-in) 실행상태 (Running) 프로세서를 할당받은 상태 기억장치를 할당받은 상태 준비상태 (Runnalbe in memory) 필요한 자원을 모두 소유하고 프로세서를 요청하고 있는 상태 대기상태 (Sleeping in memory) 프로세서 외 다른 자원이 없는 상태 지연상태 (Suspended, Swapped-in 지연 준비상태 (Runnable swapped) 잃은 상태 지연 대기상태 (Sleeping swapped)
Process State Transition Running Terminated Sleep Preempt (Timer runout) Assign CPU (Dispatch) Runnable in memory Sleeping in memory 실행상태 Main memory Wakeup Created Swap out Swap in Swap out Runnable swapped Sleeping swapped 지연상태 Virtual memory Wakeup
Interrupt 시스템에서 예측하지 못한 사항이 발생한 상황 인터럽트의 종류 SVC(Supervisor Call) 인터럽트 : 기억장치 할당, 오퍼레이터와 대화 등 입출렵 인터럽트 : 입출력시 에러, 입출력 완료시 클럭(Clock) 인터럽트 : 프로세서 시간 할당량을 모두 사용할 시 콘솔(Console) 인터럽트 : 키보드에서 인터럽트 키를 누를 때 프로세스간 통신인터럽트 : 통신 메시지를 받을 때 발생 프로그램 검사인터럽트 : 정의 되지 않은 명령어 사용시 발생 하드웨어 검사인터럽트 : 하드웨어 자체 에러 시 발생 인터럽트 발생 실행중인 프로세스 중단 인터럽트 처리 시작 인터럽트 발생 장소, 원인 파악 인터럽트 서비스 결정 인터럽트 서비스 루틴 호출
Context switching 한 프로세스에서 다른 프로세스로 CPU가 할당되는 과정. Timer run-out, Device Interrupt, System call 등 시 발생되는 현상으로 Dispatch 되어 Running 중인 상태의 프로세스를 대기상태로 되돌린 후 새로운 프로세스에서 Dispatch는 일련의 과정 그러므로 할당 시간이 짧을 수록 Context switching이 비번해지며 이는 Over-head를 유발하여 성능 문제가 발생한다.
Thread about APP 흔히 미니 프로세스 혹은 Light Weight Process라고 부르며 이는 최소 하나 이상의 작업의 실행 주체임을 나타낸다. 현대적인 프로세스는 하나의 process는 최소 하나 이상의 Thread를 가지고 작업을 수행하며 여러 개의 thread를 Process 상에서 수행하여 Parallelism을 구현화 하기도 한다. 하나의 Process의 하위 Thread 들은 Process의 메모리(Heap storage, static storage, code section), Stack과 register를 모두 공유하기 때문에 IPC를 통한 자원 공유가 필요없지만 반대로 Parallel processing 중 Critical section, Deadlock 등 synchronization문제가 발생될 여지가 높다.