저자 : 창병모

펴낸 곳: (주)생능출판사

초판 : 2014. 7. 7 

1판 5쇄 : 2019. 8. 30 

 

Chapter 02. 리눅스 사용

2.5 후면 처리 및 프로세스 

- 후면 처리 : 명령어를 후면에서 처리하여 전면에서는 다른 작업을 할 수 있음

- 시간이 오래 걸리는 작업이나 동시에 여러 작업을 수행하고 할 때 이용

$ 명령어 &

 

- 후면 실행 중인 작업 리스트 확인 : jobs

$ jobs

 

- 후면 실행 중인 작업 선택하여 전면 실행

$ fg %작업번호

 

- 후면 프로세스의 출력이 전면 프로세스와의 충돌을 방지하기 위해 출력 재지정이나 파이프 이용

 

- 후면 프로세스가 입력 받기 위해서는 입력 재지정 이용

 

- [표 2.6] 프로세스 관련 명령어

명령어 의미
명령어 & 후면에서 명령어 실행
^C (ctrl + c) 전면 작업 죽이기
^Z (ctrl + z) 전면 작업 중지
bg 중지된 작업 후면 실행
jobs 현재 작업 리스트
fg %1 1번 작업을 전면 실행
kill %1 1번 작업 종료
ps 현재 프로세스 리스트
kill 8328 8328번 프로세스 종료

 

 

Chapter 08. 프로세스

8.5 프로세스 이미지

- 프로세스 이미지 : 프로그램을 실행하기 위해서는 텍스트(코드), 데이터, 힙, 스택 등의 영역(segment)들을 위한 메모리를 할당해야 한다. 이러한 메모리 배치를 프로세스 이미지라고 한다. 

 

[그림 8.8] 프로세스 이미지

- 텍스트(text) : 프로세스가 실행하는 실행코드를 저장하는 영역

 

- 데이터(data) : 전역 변수(global variable) 및 정적 변수(static variable)를 위한 메모리 영역

 1) 프로그램에서 초기화된 데이터를 저장하는 영역

 2) 초기화 되지 않는 데이터를 저장하는 영역(보통 bss 영역이라고 함)

 

- 힙(heap) : 동적 메모리 할당을 위한 영역

 

 

 

 

- 스택(stack area) : 함수 호출을 구현하기 위한 실행시간 스택(runtime stack)을 위한 영역

  : 함수가 호출될 때마다 해당 함수의 지역 변수, 매개변수, 반환주소, 반환값 등을 포함하는 활성 레코드(activation record)가 저장

 

- U-영역(user-area) : 열린 파일 디스크립터, 현재 작업 디렉터리 등과 같은 프로세스의 정보를 저장하는 영역

 

 

 

Chapter 09. 프로세스 제어

9.4 프로세스 그룹

- 프로세스 그룹 : 여러 프로세스들의 집합을 의미

- 리눅스 시스템 내에서 각 프로세스는 하나의 프로세스 그룹에 속한다.

- 각 프로세스는 자신의 프로세스 ID와 자신이 속한 프로세스 그룹 ID를 갖는다.

- 보통 부모가 생성하는 자식 프로세스는 부모와 하나의 프로세스 그룹을 형성

- 프로세스 그룹 리더 : 그룹마다 하나씩 있으며 리더는 PID와 GID가 같다.

#include <unistd.h>
pid_t getprgp(void); //호출한 프로세스의 프로세스 그룹 ID 반환

 

- 사용처 : 그룹 내의 모든 프로세스들을 대상으로 액션을 취할 수 있다.

 1) 시그널(signal) 전송

$ kill -9 pid      // 해당 pid에 시그널을 보내 종료
$ kill -9 0        // 현재 속한 프로세스 그룹 내의 모든 프로세스들에 시그널을 보내 종료
$ kill -9 -pid    // pid음수표시는 프로세스 그룹을 의미, 그룹 내 모든 프로세스들에 시그널을 보내 종료

 

 

+ Recent posts