프로세스 총정리

image.png

위와 같은 코드를 작성했다. 가장 먼저 하는일은 해당 코드를 컴파일 하는 행위이다. 컴파일을 하게 되면 실행파일이 생성된다. 실행파일을 실행하려면 일반 사용자는 어떻게 해야 할까? 일반 사용자는 실행프로그램을 사용하기 위해 쉘 인터페이스를 사용하게 된다(마우스,커맨드...등을 이용해서 운영체제에게 파일 실행을 요청한다.)

운영체제에의해서 실행된 파일은 아래와 같은 형태로 구성이 된다.(스택,힙,BSS,데이터영역,TEXT)
image.png

그렇다면, 프로세스는 바로 실행이 될까? 그렇지 않다. 스케줄려에 의해서 ready상태가 되었다가. 스케쥴러 정책에 따라서 running status로 변경되게 된다. 예를 들어 선점형 스케쥴러 방식을 사용한다면, 일정 시간마다 running중인 프로세스를 변경시키게 된다.

image.png

일정 시간이 지난 후, cpu는 인터럽트를 받게 되고. 인터럽트를 처리하기 위해서 사용자 모드를 커널 모드로 변경한다. 그리고 컨텍스트 스위칭을 하면서 계속 프로세스는 변경되게 된다.
image.png

image.png

프로그램 성능 개선

운영체제 관점에서 I/O가 빈번한 작업이 있으면, interrupt가 상당히 많이 발생하기 때문에 프로그램 성능이 저하 된다.따라서 운영체제 관점에서 외부I/O작업을 최소화 시키는 것이 성능 향상의 핵심이다.