본문 바로가기

개발/Linux

프로세스와 신호 - 프로세스 일정 관리

반응형

프로세스 일정 관리

- ps 출력화면 에서 ps 명령 자체에 대한 줄 확인

프로세스 3577 이 실행상태 (R) 이며 ps ax 라는 명령어로 실행되었음을 알 수 있다. 

R은 실행 가능한 상태이며 반드시 실행 되고 있는 상태는 아니다.  

-> http://bipim.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8B%A0%ED%98%B8-%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%93%A4 

위에 참고 


- 프로세스들은 시간 조각이 차례로 부여디며 각 프로세스는 자신에 주어진 시간 조각 동안만 실제로 실행된다. 이 시간 조각이 짧아 여러 프로세스들이 동시에 실행되는 것처럼 느낀다. 

- 리눅스 커널은 프로세스 스케줄러를 이용해서 다음번에 시간 조각을 부여할 프로세스를 결정한다. 프로세스 우선순위를 이용해서 일정을 결정하게 된다. 

- 우선순위가 높은 프로세스는 자주 실행되는 반면, 우선순위가 낮은 배경 태스크들은 덜 자주 실행된다. 프로세스들은 자신에게 부여된 시간 조각을 넘어서서 실행될 수 없다. 

- 리눅스는 선점형 다중 태스킹 운영체제 인데, 선점형이라는 것은 운영체제가 프로세스들의 협조에 기대지 않고 프로세스들의 실행을 강제로 중지, 재개 한다는 뜻이다. windows 3.x 와 같은 구형 운영체제 들은 각 프로세스 자신이 명시적으로 실행을 양보해야 다른 프로세스들이 실행을 재개할 수 있다. 

- 리눅스와 같은 다중 태스킹 시스템들은 여러 프로그램들이 같은 자원을 두고 다툴 수 있다. 그렇기 때문에 짧은 시간동안 작업을 몰아서 수행한후 입력을 기다리는 방식의 프로그램들이 빈번하게 수행하는 것보다 좋은것으로 간주한다. 전자의 프로그램을 바로 예의바른(nice)프로그램이라한다. -> 사람과 다르게 몰아서 하는것 그러니까 사람으로 치면 벼락치기 하는 것을 더 좋게 생각하나보다 ㅋㅋㅋ 사람과 다르네 

- 운영 체제는 "예의바름"값(기본 0)과 프로그램의 행동에 기초해서 프로세스의 우선순위를 가진다.

- 오랜 시간동안 중단 없이 실행되는 프로그램은 낮은 우선순위, 잠깐만 실행된 후 입력을 기다리는 프로그램은 높은 우선순위를 가지게 된다. 

- 프로그램의 예의바름 값은  nice 명령으로 설정 할 수 있고, renice를 이용해서 재조정할 수 있다. nice 명령은 프로세스의 예의바름 값을 10 증가해서 우선순위를 낮춘다. ps -l 이나 -f 옵션으로 예의 바름 값을 확인 할 수 있다. 

위에 캡쳐 화면에서 NI 열의 값이 예의바름값이다. 

PPID는 부모 프로세스를 알려준다. 

- 리눅스 스케줄러는 우선순위에 기초하여 다음 실행될 프로세스를 결정한다. 고순위 프로세스들이 모두 실행가능한 상태인 경우에는 저순위 프로세스들이 실행되지 않을 수도 있다. 

반응형