본문 바로가기

개발/Linux

프로세스와 신호 - 프로세스 구조 / 테이블

반응형

프로세스 구조


ps -ef 

 -e : 모든 프로세스

 -f : 프로세스 들의 완전한 정보 

UID : 실행한 사용자 

PID(Process Identifier) : 프로세스 식별자, 2~32768 까지 순차적으로 부여됨. 최대 값을 넘기면 2부터 다시 시작 / 1은 init프로세스에 쓰인다. 

tty : 프로세스가 어느 터미널에서 실행 되었는지

time : 프로세스가 소비한 CPU 시간

CMD : 프로세스를 시작하는데 쓰인 명령줄 


- 프로세스는 프로그램코드를 담고 있는 메모리 영역에 자료를 기록하지 못하고, 코드들은 읽기 전용모드로 메모리에 적재된다. 수정은 할 수 없으나 여러 프로세스에 의해 공유가 될 수 가 있다. 이러한 점 덕분에 여러 사용자가 같은 프로그램을 실행 할 수 있다.

- 시스템 라이브러리도 같은 경우. 여러 프로그램이 printf를 호출 할 수 있는 것처럼. windows에서 동적 연결 라이브러리(DLL)이 쓰이는 방식과 비슷하다.

- 라이브러리의 공유는 디스크 상의 실행 파일의 크기를 줄이는데 도움이 된다.  

- 프로세스가 함수의 지역 변수들과 함수 호출 및 반환의 제어에 쓰이는 정보를 관리하는데 사용하는 스택 공간 역시 각 프로세스마다 독립적이다. 또한 프로세스는 자신만의 환경 공간을 가진다. 프로그램은 자신만의 프로그램 커운터를 가지고 그 프로그램 카운터는 프로세스가 실행되고 있는 실행 스레드 안에서의 현재 실행 위치를 가리킨다. 하나의 프로세스는 여러개의 실행 스레드들을 가질 수 있다. 


프로세스 테이블

- 현재 적재된 모든 프로세스의 정보를 담은 자료구조이다. 

- 운영체제는 PID를 이용하여 프로세스를 관리하는데 PID는 프로세스 테이블에 대한 색인으로 쓰인다. 

- 이 테이블의 크기는 한계가 존재하며, 시스템이 동시에 돌릴 수 있는 프로세스의 개수에도 한계가 주어진다. 

- 최근에는 이 상한이 휠씬 커져, 메모리가 허용하는 한에서는 한계가 없다. 



반응형