프로세스란! CPU와 메모리를 할당 받아 실행되고 있는 프로그램이다.
프로세스들에게는 고유의 ID를 할당받는데, 이를 PID.
PID가 1인 프로세스는 init, init에 의해 다른 모든 프로세스들이 시작됨.
프로세스 유형
# 프로세스 실행 형태
◦포그라운드 프로세스: 사용자와 상호작용하면서 화면에 실행되는 것이 보이는 프로세스. 그래서 명령 입력 후 수행이 종료될 때까지 기다려야함. ex)응용프로그램, 명령어 등
◦백그라운드 프로세스 : 사용자와 직접적인 대화를 하지않고, 뒤에서 화면에 나타나지않고 실해오디는 프로세스. 사용자의 입력에 관계없이 실행됨. ex)시스템 프로그램, 데몬 등
(1)데몬(Daemon)
-리눅스 시스템 부팅 시 자동으로 실행되는 background process.
-메모리에 상주하면서 사용자의 특정 요청이 오면 즉시 실행되는 대기중인 서버 프로세스 ( 특정 서비스 실행을 위해 백그라운드 상태에서 동작하는 서버 프로세스)
-사용자들은 이 process를 볼 수 있는 권한x.
-리눅스에서 데몬을 실행하는 방법 세 가지.
[클라이언트] ------------ [서버]
Telnet클라이언트-------- inetd -------Telnet 서버 ------- 로그인
FTP 클라이언트 --------- inetd -------- FTP 서버 --------- 로그인
**보통 빈번히 사용하는 데몬을 standalone 방식으로,자주 사용되지 않는 데몬을 super daemon 방식(inetd)으로 실행됨.
문제) 하루에 발생하는 서비스별 요청이 많은 httpd의 경우, 데몬 실행을 어떤 방식으로 변경해야 효율적일까?
답) 단독 실행(standalone) : 자주 실행되는 서비스를 클라이언트 요청이 들어오기전에 메모리에 상주시켜 작업 효율성을 높이는 방법.
문제) 서비스 데몬을 구성하는 방법으로 틀린 것은?
1 service crond restart
2 /etc/init.d/httpd start
3 /etc/rc.d/nfs start
4 /etc/rc.d/init.d/httpd start
답) 3번./ nfc 구동 방법은 /etc/rc.d/init.d/nfs start
# 새 프로세스를 생성하기 위해 사용되는 시스템 호출 함수
(하나의 프로세스가 다른 프로세스를 실행하기 위해 fork와 exec 사용.)
◦fork() 함수 (복사 붙이기)
-기존 process를 복제하여 새 process를 형성.
-새 process를 위한 메모리 할당.
-새 process는 원래의 process와 같은 코드.
-원본 process: 부모 process, 복제된 process: 자식 process
◦exec() 함수 (덮어 씌우기)
-호출한 process가 새 process로 변경되는 방식.
-새 process를 위한 메모리 할당x.
-호출한 process의 메모리에 새 process의 코드를 덮어씌움.
결국, exec()을 호출한 process는 사라지고 exec()에 의해 호출된 새 process만 메모리에 남게됨.
문제) 필요한 서비스이나 자주 사용하지 않는 서비스들을 관리할 때 유용한 방법으로 특히 메모리 관리에 효율적인 것은?
답) inetd
# 시그널(Signal)
- 운영체제가 프로세스에게 이벤트 발생(인터럽트, 타이머 종료)을 전달해주는 소프트웨어 인터럽트 (즉, 프로세스끼리 서로 통신할 때 사용.)
- 여러 종류가 있고 각각 고유 번호가 붙어있음. (명령어 'kill -l' 로 확인 가능)
- 프로세스가 시그널을 받았을 때 처리 방법은 4가지.
1.SIG_IGN(SIG_PF)1 : 운영체제에 의해 시그널이 무시됨.
2.SIG_ERR(SIG_PF)-1 : 운영체제가 프로그램을 강제 종료.
3.SIG_DFL(SIG_PF)0 : 지정한 시그널 처리 루틴 실행.
4.SIG_HOLD(SIG_PF)2 : 시그널이 블로킹됨.
'유용한 모든 것' 카테고리의 다른 글
jupyter notebook을 html로 전환하기 (2) | 2021.02.17 |
---|---|
리눅스마스터 2급2차 [네트워크] (0) | 2020.08.25 |
리눅스마스터 2급 2차 [셸] (0) | 2020.08.25 |
리눅스마스터 2급 2차 [파일 시스템] (0) | 2020.08.24 |
리눅스마스터 2급 2차 [다시 봐야 할 개념] (0) | 2020.08.24 |