book.naver.com/bookdb/book_detail.nhn?bid=16317946
*해당 글은 학습을 목적으로 위의 도서 내용 중 일부 내용만을 요약하여 작성한 포스팅입니다.
상세한 내용 및 전체 내용 확인을 원하신다면 도서 구매를 추천드립니다.
프로세스
- 디스크의 프로그램을 메모리에 적재하고 실행한 상태
- 하나의 프로그램은 여러 개의 프로세스로 중복 생성될 수 있다.
- 이러한 특성상 프로세스는 프로그램의 인스턴스로 정의할 수 있다.
- 프로세스는 생성, 실행, 대기, 중지, 좀비, 종료 라이프 사이클을 갖는다.
- 프로세스는 고유의 아이디(PID)를 갖고, 부모 프로세스와 자식 프로세스의 관계를 맺으며 실행 우선순위와 상태를 갖는다.
- 프로세스는 시간 정보와 이벤트 발생을 위한 타이머를 가질 수 있다.
- 프로세스는 리소스 정보를 갖는다.
프로세스의 유형
1) Init 프로세스
- 시스템상 모든 프로세스의 부모 프로세스
- 부트 로더에 의해 가장 먼저 실행하는 프로세스이며, 커널이 직접 시작해 리눅스를 초기화한다.
- 부모 프로세스가 없으며 PID는 항상 1이다.
2) 부모, 자식 프로세스
- A가 특정 파일을 실행하여 프로세스 B가 생성되면, A가 부모, B가 자식 프로세스
- 자식 프로세스의 프로세스 ID를 PID라하고, 부모 프로세스의 PID를 PPID라 한다.
3) 고아 프로세스, 좀비 프로세스
- 고아 프로세스 : 부모 프로세스가 강제 종료되어 없어짐.
- 고아 프로세스의 부모 프로세스는 Init 프로세스로 변경된다.
- 좀비 프로세스 : 자식 프로세스가 종료될 때 부모 프로세스의 시스템 콜로 종료 코드를 회수하지 못한 상태
- 프로세스가 사용하던 모든 리소스는 반환했지만 프로세스 테이블 상에서 지워지지 않았다.
- 부모 프로세스가 wait() 시스템 콜을 통해 자식 프로세스의 종료 코드를 회수하면 프로세스 테이블에서도 PID가 사라진다.
*터미널에서 zombies.sh 실행 후 ps 명령어로 확인시 좀비 프로세스 확인 가능
*부모 프로세스에게 SIGCONT 시그널 전송시 좀비 프로세스가 사라짐을 확인 가능.
4) 데몬 프로세스
- 시스템 부팅 시 대부분 자동으로 시작되며 백그라운드로 실행
- 사용자가 직접 제어하지 않고 특정 이벤트나 상태같이 주기적이고 지속적인 서비스의 요청을 처리하기 위해 실행하는 방식
- 작업 예약(cron), 파일 전송(ftpd), 프린터(lpd), 원격 접속(rlogind), 텔넷(telnet) 등
*프로세스가 실행되는 메모리 공간에 따라 사용자 메모리에서 실행되는 사용자 프로세스 커널 메모리에서 실행되는 커널 프로세스로 나뉠 수 있다.
*프로세스의 성격에 따라 사용자와 직접 반응하면 대화형 프로세스, 미리 정해진 작업을 실행하면 배치 또는 자동 프로세스로 나뉠 수 있다.
프로세스의 식별자
- PID : 고유의 아이디
- PPID : 부모 프로세스의 아이디
- UID : 생성된 프로세스가 속한 사용자 아이디
- GID : 생성된 프로세스가 속한 그룹 아이디
*UID와 GID는 보통 부모 프로세스에게 상속 받는다.
프로세스의 동작 방식
1) exec 방식
- 원래의 프로세스를 새로운 프로세스로 대체
- fork로 생성된 자식 프로세스가 자신만의 메모리 형성
- 실제로 자식 프로세스가 실행되기 시작함.
2) fork 방식
- 새로운 프로세스를 위한 메모리 할당
- 부모가 자신을 복제하여 자식 생성
3) fork와 exec의 혼합
- fork로 부모가 자식을 만들고
- exec으로 자식 프로세스를 실행시킨다.
*exit 자식 프로세스의 종료
*wait 부모 프로세스가 자식 프로세스가 종료해서 종료 코드를 전송하기를 기다리는 상태
*자식 프로세스가 exit 되었으나 종료 코드를 전송하지 못했으면 좀비 상태
*pstree 명령어를 통해 부모자식 관계 (프로세스 구조)를 트리 형태로 확인할 수 있다.
프로세스 제어
1) 포어그라운드 프로세스 (Foreground process)
- 사용자의 입력을 받을 수 있고, 실행 결과를 CLI나 GUI를 통해 확인할 수 있다.
2) 백그라운드 프로세스 (Background process)
- 시스템의 뒤편에서 실행되며, 실행 결과를 사용자가 확인하기 어렵다.
- 명령어의 수행 결과를 받을 때까지 오랜 시간이 걸릴 경우 백그라운드에서 실행할 수 있다.
- 백그라운드에서 프로세스를 실행하려면 명령어 뒤에 &를 붙이면 된다.
- ex) ls ch*.ppt &
단축키 | 명령어 | |
포어그라운드 => 백그라운드 | Ctrl + Z | bg %작업번호 |
백그라운드 => 포어그라운드 | fg %작업번호 |
*현재 실행중인 작업의 정보를 보기 위해서는 jobs 명령어 사용
우선순위 설정
- 프로세스는 커널에 의해 PR을 통해 우선순위가 관리된다.
- 사용자가 NI(Nice)를 통해 우선순위를 조절할 수 있다.
- NI는 nice 명령어로 프로세스 시작 시 설정할 수 있다.
- renice 명령어로 프로세스 실행 중 조절할 수도 있다.
- PR은 0~139의 값을 가지며, 0~99는 실시간 태스크이고 100~139는 사용자용
- NI는 -20~19를 할당할 수 있지만 음수 값은 root 사용자만 설정이 가능하다.
프로세스 중지
- Ctrl + C
- kill [시그널] PID
*시그널 (signal)
- 프로세스가 다른 프로세스에게 신호를 주기 위한 방식
- kill -l 명령어를 통해 확인할 수 있다.
- 키보드 입력을 통한 시그널 전달도 가능하다.
SIGHUP (1) | 터미널의 접속 연결 해제 | SIGKILL (9) | 프로세스 강제 종료 시 |
SIGINT (2) | Ctrl+C 인터럽트 발생 | SIGTERM (15) | 프로세스 정상 종료 시 |
SIGQUIT (3) | Ctrl+\ 입력 시 | SIGCONT (18) | 정지된 프로세스 재개 |
SIGTOP (19) | 프로세스 중지시 | SIGTSTP (20) | Ctrl + Z 입력 시 |
프로세스의 상태
- (R) : 프로세스가 현재 실행 중
- (D) : 인터럽트 할 수 없는 슬립 상태
- (S) : 특정 이벤트가 시그널될 때까지 기다리기 위한 슬립 상태
- (Z) : 좀비 프로세스
- (T) : 중지 상태
프로세스의 구조
1) Process Control Block (PCB)
- 프로세스를 실행하고 스케줄링하고 상태가 변경될 때마다 그 정보를 저장하기 위해 커널에서 관리하는 자료구조
- 프로세스에 대한 정보를 관리한다.
Pointer : 프로세스의 스택 포인터
Process State : 프로세스의 상태
Process Number : 프로세스의 PID
Process Counter : 프로세스가 실행할 다음 명령어의 주소
Register : CPU 레지스터
Memory Limits : 메모리 관리에 대한 정보
Open File Lists : 프로세스가 열고 있는 파일 목록
2) 프로세스 테이블
- 시스템이 실행중인 프로세스를 관리하기 위한 테이블
- 현재 실행중인 프로세스의 PID와 PCB를 담고 있다.
- 프로세스가 종료되면 프로세스 테이블에서도 삭제된다.
데몬의 실행 방식
1) standalone
- 시스템 시작 시 /etc/init.d에 의해 실행되는 데몬
- 항상 실행되고 있기 때문에 서비스 요청에 즉각 대응이 가능하지만 메모리를 점유하고 있다.
- /etc/rc.d/init.d 디렉터리에 위치
- 서비스 요청이 많은 프로세스들이 standalone 방식으로 작동한다.
2) xinetd 방식 (eXtended InterNET)
- 사용자의 서비스 요청이 있을 때만 관련 데몬을 시작하여 서비스를 제공하고, 사용자의 접속이 종료되면 데몬도 자동으로 종료된다.
- 데몬이 필요할 때만 로드되어 자원 효율이 좋으나 사용자의 서비스 요청에 대한 응답이 느리다.
- /etc/xinetd.d 디렉터리에 위치
*커널 2.2 버전까지는 INETD 데몬이 서비스를 관리했으나, 2.4 버전부터는 xinetd 데몬이 역할을 수행
1. 데몬은 주기적이고 지속적인 서비스 요청을 처리하기 위해 계속 실행되는 서버 프로그램으로, (가) 프로세스에 해당한다. 특히 부팅 시에 실행되는 빈번한 요청을 위한 서비스는 대부분 (나) 방식으로 동작한다.
(가) 백그라운드 (나) standalone
2. init -(가)-> init -(나)-> getty -> login -> bash
(가) fork (나) exec
3. 다음 중 프로세스에 대한 설명으로 틀린 것은?
1) 실행중인 프로그램이다.
2) PCB를 지닌 프로그램이다.
3) 사용자가 실행한 프로세스는 중간에 중지가 불가능하다.
4) 백그라운드 프로세스와 포어그라운드 프로세스로 나눌 수 있다.
3
4. 다음 중 SIGKILL 시그널 번호로 알맞은 것은?
1) 1
2) 5
3) 9
4) 15
3
5. 다음 설명에 해당하는 시그널은?
로그아웃과 같이 터미널에서 접속이 끊겼을 때 보내지는 시그널로, 데몬 관련 환경 설정 파일을 변경시키고 변화한 내용을 적용하기 위해 사용한다.
1) SIGHUP
2) SIGINT
3) SIGSTOP
4) SIGQUIT
1
6. 다음 중 abc 유저가 cron 작업을 등록했을 때 생성되는 파일은?
1) /etc/cron/abc
2) /etc/cron.d/abc
3) /var/cron.d/abc
4) /var/spool/cron/abc
4
'자격증 > 리눅스 마스터 1급' 카테고리의 다른 글
리눅스마스터_1급_1과목_네트워크 설정 (0) | 2021.02.08 |
---|---|
리눅스마스터_1급_1과목_네트워크의 기초 (0) | 2021.02.08 |
리눅스마스터_1급_1과목_Shell (0) | 2021.02.07 |
리눅스마스터_1급_1과목_X 윈도우 (0) | 2021.02.07 |
리눅스마스터_1급_1과목_리눅스의 구조 (0) | 2021.02.07 |