3 분 소요



프로세스의 개념

  • 프로그램(program) : 어떤 작업을 위해 실행 할 수 있는 파일

  • 프로세스(process) : 컴퓨터에서 연속적으로 실행되고 있는 프로그램

  • 메모리에서 실행되고 있는 프로그램의 인스턴스(독립적인 개체)로 운영체제로부터 시스템 자원을 할당 받는 작업의 단위 즉, 동적인 개념으로 실행돠고 있는 프로그램을 의미

  • 할당 받은 자원은 CPU 시간, 운영에 필요한 주소공간, Code, Data, Stack, Heap 구조의 독립된 메모리 영역

  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스간의 통신(IPC:inter-process communication)을 사용해야 한다.(예: 파이프, 파일, 소켓 등을 이용한 통신 방법 이용)


스레드 (thread)

  • 프로세스 내에서 실행되는 여러 흐름의 단위
  • 프로세스의 특정한 수행 경로
  • 프로세스가 할당 받은 자원을 이용하는 실행의 단위

  • 스레드는 프로세스 내에서 동작되는 여러 실행의 흐름으로 프로세스 내의 주소공간이나 자원들(heap 공간 등)을 같은 프로세스 내에 스레드들간에 공유하면서 실행된다.

  • 같은 프로세스 내에 여러 스레드들은 같은 heap 공간을 공유하나 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.


부모-자식관계

  • 프로세스는 부모-자식 관계를 가지고 있음
  • 필요에 따라 부모 프로세스(parent process)는 자식 프로세스(child process)를 생성하고, 자식 프로세스는 또 다른 자식 프로세스 생성 가능
  • 부팅할 때 스케줄러가 실행한 프로세스인 systemd(PID=1)와 kthreadd(PID=2) 프로세스를 제외하면 모든 프로세스는 부모 프로세스를 가지고 있음



프로세스의 종류

데몬 프로세스

  • 특정 서비스를 제공하기 위해 존재하며 리눅스 커널에 의해 실행


고아 프로세스

  • 자식 프로세스가 아직 실행 중인데 부모 프로세스가 먼저 종료된 자식 프로세스는 고아 프로세스
  • 1번 프로세스(systemd)가 고아 프로세스의 새로운 부모 프로세스가 되어 고아 프로세스의 작업 종료 지원


좀비 프로세스

  • 자식 프로세스가 실행을 종료했는데 프로세스 테이블 목록에 남아 있는경우
  • defunct 프로세스라고 한다.
  • 좀비 프로세스가 증가하면 프로세스 테이블의 용량이 부족해서 일반 프로세스가 실행되지 않을 수도 있음



프로세스 명령어

ps : 프로세스 목록 보기

현재 실행 중인 프로세스의 목록을 보는 명령: ps

  • 유닉스(SVR4) 옵션 : 묶어서 사용할 수 있고, 붙임표로 시작한다(예 : -ef).
  • BSD 옵션 : 묶어서 사용할 수 있고, 붙임표로 시작하지 않는다(예 : aux).
  • GNU 옵션 : 붙임표 두 개로 시작한다(예 : - -pid).


실습_1


실습_2


실습_3


실습_4


실습_5


실습_6


실습_7



pgrep : 특정 프로세스 정보 검색


실습_1



kill : 프로세스 종료


프로세스 강제로 종료하기

  • 단순히 kill 명령으로는 종료되지 않는 경우 강제 종료 시그널인 9번을 보낸다.
  • 강제종료 예: kill 명령으로 종료되지 않음
  • 강제 종료 시그널인 9번을 보내 강제로 종료


kill 예: man을 실행시킨 프로세스를 찾아서 종료시키기 -실습

  1. 한 화면에 $ man ps 명령 실행 후
  2. 다른 터미널을 하나 더 열어 $ ps –ef grep man 하여 PID 확인한다.
  3. 두 번째 터미널에서 $ kill -9 PID 하면
  4. $ man ps 프로세스가 죽었음으로 나타내고 프로세스가 종료된다.


실습(PID)


실습(CMD)



프로세스 관리도구

top 명령

  • 현재 실행 중인 프로세스에 대한 정보를 주기적으로 출력
  • 서버 관리자가 가장 많이 사용하는 명령


top 명령 실행 화면


top 내부 명령어


x윈도용 시스템 정보

  • System Profiler and Benchmark 실행하여 시스템 정보를 확인.



포그라운드와 백그라운드 프로세스 작업 제어



포그라운드 프로세스

  • 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 방식으로 처리되는 프로세스


백그라운드 프로세스

  • 명령을 실행하면 명령의 처리가 끝나는 것과 관계없이 곧 바로 프롬프트가 출력되어 사용자가 다른 작업을 계속할 수 있음


백그라운드 작원과 출력 방향 전환하기

  • 백그라운드로 처리할 때는 주로 출력과 오류 방향 전환을 하여 실행 결과와 오류 메시지를 파일로 저장( pw.dat에 결과와 오류 메시지를 파일로 저장)



작업제어

작업 제어는 작업 전환과 작업 일시 중지, 작업 종료를 의미

  • 작업 전환: 포그라운드 작업->백그라운드 작업, 백그라운드 작업->포그라운드 작업으로 전환

  • 작업 일시 중지: 작업을 잠시 중단

  • 작업 종료: 프로세스를 종료하는 것처럼 작업을 종료


작업 목록 보기 : jobs(백그라운드 작업 보기)

  • 작업순서


jobs 명령의 출력항목

~ 33

작업예약

~43p 까지 늦음

43p 시험에 나옴

at 명령 사용 제한하기

/etc/at.allow 파일이 있으면 이 파일에 있는 사용자만 at 명령을 사용할 수 있다.

  • 이 경우에 /etc/at.deny 파일은 무시된다. (at.allow 파일 우선 적용)


/etc/at.allow 파일이 없으면 /etc/at.deny 파일에 지정된 사용자를 제외한 모든 사용자가 at 명령을 사용 가능.

  • 만약 두 파일이 모두 없다면 root만 at 명령을 사용할 수 있다.
  • 일반적으로 /etc/allow 파일 없음


한 사용자가 두 파일 모두에 속해 있다면 그 사용자는 at 명령을 사용할 수 있다.

  • /etc/at.allow 파일이 우선 적용되기 때문이다.

댓글남기기