시스템콜
프로세스가 커널에 처리를 요청하는 방법. 프로세스 생성 또는 하드웨어 조작처럼 커널의 도움이 필요할 때 사용
터미널에 top 명령어를 통해 CPU 사용 모드를 알아볼 수 있다.
사용자 모드 5.34%, 커널 모드 11.52%, Idle 모드(아무 일도 하지 않고 휴식) 83.12%
프로세스 생성
리눅스에서는 fork() 또는 execve() 함수를 사용해서 프로세스를 생성.
1. fork()
이 함수를 호출하면 해당 프로세스의 복사본을 만들고 양쪽 모두 fork() 함수에서 복귀한다.
원본 프로세스는 부모, 생성된 프로세스는 자식이 된다.
fork() 함수에서 복귀할 때 부모 프로세스는 자식 프로세스의 PID를 반환하고 자식프로세스는 0을 반환하게 된다.
2. execve()
현재 프로세스를 새롭게 치환하는 형태로 사용.
현재 프로세스의 메모리를 새로운 프로세스 데이터로 덮어쓰고 프로세스를 새로운 프로세스의 최초 실행 명령부터 실행하기 시작.
세션과 프로젝트그룹
단말 에뮬레이터 또는 ssh 등을 사용해서 시스템에 로그인했을 때의 로그인 세션에 대응하는 개념.
모든 세션에는 해당 세션을 제어하는 단말이 존재함. 세션에는 ID가 할당됨.
프로세스 그룹은 여러 프로세스를 하나로 묶어서 한번에 관리함. 세션 내부에 여러 개의 프로세스 그룹이 존재.
데몬
상주하는 프로세스.
특징 1. 단말의 입출력이 필요없어서 단말이 할당되지 않음
특징 2. 로그인 세션을 종료해도 영향이 없도록 독자적인 세션을 가짐
특징 3. 데몬을 생성한 프로세스가 데몬 종료 여부를 신경 쓸 필요 없이 init가 부모가 됨.
댓글