프로세스 구조
ps -ef
-e : 모든 프로세스
-f : 프로세스 들의 완전한 정보
UID : 실행한 사용자
PID(Process Identifier) : 프로세스 식별자, 2~32768 까지 순차적으로 부여됨. 최대 값을 넘기면 2부터 다시 시작 / 1은 init프로세스에 쓰인다.
tty : 프로세스가 어느 터미널에서 실행 되었는지
time : 프로세스가 소비한 CPU 시간
CMD : 프로세스를 시작하는데 쓰인 명령줄
- 프로세스는 프로그램코드를 담고 있는 메모리 영역에 자료를 기록하지 못하고, 코드들은 읽기 전용모드로 메모리에 적재된다. 수정은 할 수 없으나 여러 프로세스에 의해 공유가 될 수 가 있다. 이러한 점 덕분에 여러 사용자가 같은 프로그램을 실행 할 수 있다.
- 시스템 라이브러리도 같은 경우. 여러 프로그램이 printf를 호출 할 수 있는 것처럼. windows에서 동적 연결 라이브러리(DLL)이 쓰이는 방식과 비슷하다.
- 라이브러리의 공유는 디스크 상의 실행 파일의 크기를 줄이는데 도움이 된다.
- 프로세스가 함수의 지역 변수들과 함수 호출 및 반환의 제어에 쓰이는 정보를 관리하는데 사용하는 스택 공간 역시 각 프로세스마다 독립적이다. 또한 프로세스는 자신만의 환경 공간을 가진다. 프로그램은 자신만의 프로그램 커운터를 가지고 그 프로그램 카운터는 프로세스가 실행되고 있는 실행 스레드 안에서의 현재 실행 위치를 가리킨다. 하나의 프로세스는 여러개의 실행 스레드들을 가질 수 있다.
프로세스 테이블
- 현재 적재된 모든 프로세스의 정보를 담은 자료구조이다.
- 운영체제는 PID를 이용하여 프로세스를 관리하는데 PID는 프로세스 테이블에 대한 색인으로 쓰인다.
- 이 테이블의 크기는 한계가 존재하며, 시스템이 동시에 돌릴 수 있는 프로세스의 개수에도 한계가 주어진다.
- 최근에는 이 상한이 휠씬 커져, 메모리가 허용하는 한에서는 한계가 없다.
'개발 > Linux' 카테고리의 다른 글
프로세스와 신호 - 프로세스 일정 관리 (0) | 2014.11.06 |
---|---|
프로세스와 신호 - 시스템 프로세스들 (0) | 2014.11.06 |
프로세스와 신호 (0) | 2014.11.06 |
리눅스 환경 - 로그 (0) | 2014.10.16 |
리눅스 환경 - 프로그램 인수 (0) | 2014.10.15 |