프로세스 호출
fork() vs exec()
시스템 호출 함수
새로운 프로세스를 생성시 사용한다.
참고로 fork, exec 는 함수이므로 명령어 뒤에 () 붙여야 함
fork()
- 기존 프로세스를 복사해 새로운 프로세스 생성
- 프로세스를 새로 만드니까 메모리가 새로 할당됨
- 새로운 프로세스는 기존 프로세스와 코드가 동일함
exec()
- 호출하는 프로세스가 새로운 프로세스로 변경됨
- 새로 만들지 않고 변경하니까 메모리 할당은 필요없음
- 대신 메모리에 새로운 코드가 덮어쓰기 된다
Daemon
- 리눅스 부팅시 자동으로 실행되는 background 프로세스
- 메모리에 상주하면서 요청을 받으면 즉시 실행된다
- 메모리에 상주한다? -> 주기적이고 지속적인 프로세스를 처리하기 위함
- 사용자들은 이 프로세스를 볼 수 없다
데몬을 실행하는 방법 3가지
standalone daemon
- 항상 메모리에 상주하는 단독 실행 방식
- 메모리 점유율이 크다
- 작업 효율성이 좋다
- 실행 스크립트 위치: /etc/inetd.d/
- 종류: http, mysql, sendmail, nameserver
inetd daemon(=super daemon)
- 다른 데몬들의 상위에 존재하는 standalone daemon
- 다른 서비스들을 제어, 관리하는 역할
- 리눅스 커널 2.4부터 xinetd(=extended inetd)가 inetd 역할을 수행함(보안상 이슈 때문)
inetd type daemon
- idetd 데몬이 활성화 되어야 가동되는 데몬
- 독립적이지 않고 종속적이다
- inetd 서비스가 종료되면 함께 종료됨
- 요청시에만 메모리에 올라가게 된다
- 요청이 많지 않은 프로세스 전용
- 실행 스크립트 위치: /etc/xinetd.d/
- 종류: telnet, pop3, finger
Signal
시그널은 프로세스에 이벤트 발생을 전달해주는 소프트웨어 인터럽트이다.
시그널 동작 종류
번호 | signal | 조건 | 동작 |
1 | SIGHUP | 터미널과 연결 끊어짐 | 종료 후 재시작 |
2 | SIGINT | ctrl + c | 종료 |
3 | SIGQUIT | ctrl + / | 코어덤프 |
9 | SIGKILL | 프로세스 강제 종료 | 종료 |
15 | SIGTERM | kill 명령어 호출 | 종료 |
18 | SIGCONT | 프로세스 재시작 | 무시 |
19 | SIGSTOP | SIGCONT 시그널 호출시까지 | 종료 |
20 | SIGTSTP | ctrl + z | 프로세스 대기 |
'컴퓨터 기본 > Linux' 카테고리의 다른 글
[Linux] 주변장치(printer, sound card, scanner) 연결 (0) | 2022.09.01 |
---|---|
[Linux] 파일 아카이브(archive), 파일 압축하고 해제하기 (0) | 2022.09.01 |
[Linux] 프로세스 유틸리티 명령어 (0) | 2022.08.30 |
[Linux] 셸(shell) 종류, 환경설정, history 명령 (0) | 2022.08.27 |
리눅스 linux 명령어 (0) | 2021.12.22 |