본문 바로가기

프로그래밍 기초29

프로세스 스케줄링(Process Scheduling) 프로세스 스케줄링이란? CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리하는 일스케줄링은 처리율과 CPU이용률을 증가시키고 오버헤드/응답시간/반환시간/대기시간을 최소화 시키기 위힌 기법이다.즉, CPU가 쉬지않고 계속 열심히 일할 수 있도록 효율적인 계획을 잡아주는 것이다.스케줄링에서는 장기, 중기, 단기 스케줄링이 있다.어떤 프로세스를 커널에 등록할 것이가를 정하는 장기 스케줄링,어떤 프로세스에게 메모리를 할당할 것인가를 정하는 중기 스케줄링,어떤 프로세스에게 CPU를 할당할 것인가를 정하는 단기 스케줄링이 있다. 결정 시점 CPU 스케줄링의 결정시점은 다음과 같은 프로세스의 상태 변화가 있을 떄이다.- 수행 -> 대기 (비선점, 선점)- 수행 -> 준비 (비선점)- 대기 -> 준비 (비선점.. 2017. 6. 5.
문맥교환(Context Switching) 문맥교환(Context Switching)이란? 인터럽트가 발생되었을 때 실행중이던 프로세스가 작업을 멈추었다가 다시 실행될 때 이전 작업을 다시 수행하기 위해 이전 작업 내용과 프로세스의 정보들을 PCB에 저장해 놓는다고 포스팅했었다.이 때 PCB에 프로세스의 정보를 저장하는 것을 문맥을 저장한다고 말한다. 또한 프로세스가 다시 실행되기 전에 저장해 놓았던 정보들을 다시 프로세스에 적재시키는 것을 문맥을 재적재한다고 말한다. 실행되는 순서는 아래 그림과 같다. 인터럽트 핸들러에 의해서 인터럽트 처리 루틴이 시작된다. 인터럽트가 발생하였을때 인터럽트가 처리되는데 인터럽트 처리과정 중 문맥 교환(Context Switching)이 일어난다. 문맥교환이 일어나는 동안 프로세스 상태전이도를 보면 일반적으로(자.. 2017. 6. 2.
인터럽트(Interrupt) 인터럽트(Interrupt)란? 프로세스가 실행중이다가 예기치 못한 상황이 발생되어 실행중이던 프로세스를 더 이상 실행하기 힘들거나 먼저 처리해야할 급한 일이 생긴 경우 이를 인터럽트가 발생했다고 한다. 인터럽트가 발생하면 실행중이던 프로세스가 CPU의 사용을 멈추고 인터럽트 처리가 된 후에 다시 CPU를 점유하게 된다. 다음 그림은 그 과정을 나타낸 것이다. 인터럽트 처리 루틴 - 인터럽트 발생 시점부터 인터럽트 처리가 종료되는 시점까지를 말한다.인터럽트 서비스 루틴 - 인터럽트 처리를 시작하는 시점부터 인터럽트 처리가 종료되는 시점까지를 말한다. 2017. 6. 2.
프로세스 상태 전이도 ( Process State Diagram ) 프로세스 상태 전이도 ( Process State Diagram ) 프로세스(Process)란? 보조 기억장치에 있던 프로그램이 주기억장치에 적재되어 실행중일때 이를 프로세스라고 한다. 쉽게 말해서 실행중인 프로그램을 프로세스라고 한다. 일반적으로 CPU를 뜻하는 하드웨어적 의미인 프로세서(Processor)와 헷갈리지 말자. 다음 그림은 프로세스의 상태와 상태 전이를 나타낸 것이다. 사실 프로세스의 상태라고 말은 하지만 엄밀하게 말한다면 스레드(Thread)의 상태라고 보는 것이 더 정확하다. 따라서 한 프로세스에서 두 개 이상의 스레드가 작업중이라면 한 프로세스에서 한 번에 두 가지 이상의 상태가 나타날 수 있다. 1. Create - 프로세스가 생성되는 단계2. Ready - 프.. 2017. 6. 2.
PCB ( Process Control Block ) PCB란? Process control Block의 약어로 우리말로는 프로세스 제어 블록이라고 한다.프로세스가 생성이 되면 PCB라는 자료구조가 커널영역에 함께 생기며 프로세스의 생명유지에 필요한 모든 정보들을 가지고 있다. 프로세스가 Running 상태였다가 timeout 또는 우선순위가 밀려서 내려왔다가 다시 Running 상태가 되었을 때 이전에 하던 작업이 어디서 중지가 되었는지 알 수 있는 방법이 없다. 따라서 PCB라는 자료구조를 만들어서 프로세스에 대한 정보를 저장해둔다.인터럽트가 발생되었을 때에 역시 PCB에 문맥을 저장해놓고 문맥교환 이후 재적재 된다. 2017. 6. 2.