linux/unix programming 프로세스 관리 명령어 문양세 강원대학교 it 대학...
DESCRIPTION
Linux/UNIX Programming 프로세스 관리 명령어 문양세 강원대학교 IT 대학 컴퓨터과학전공. 프로세스란 ?. 프로세스 관리 명령어. 실행중인 프로그램으로서 자신의 작업을 처리하기 위하여 CPU 자원 , 메모리 , 파일 , 입출력 장치와 같은 자원들을 필요로 하는 실행 코드 능동적인 개체 현재 실행 중이거나 곧 실행이 가능한 PCB(process control block) 를 가진 프로그램 - PowerPoint PPT PresentationTRANSCRIPT
Linux/UNIX Programming
프로세스 관리 명령어
문양세강원대학교 IT 대학 컴퓨터과학전공
Linux/UNIX Program-mingby Yang-Sae Moon
Page 2
프로세스란 ?
실행중인 프로그램으로서 자신의 작업을 처리하기 위하여 CPU 자원 ,
메모리 , 파일 , 입출력 장치와 같은 자원들을 필요로 하는 실행 코드 능동적인 개체
현재 실행 중이거나 곧 실행이 가능한 PCB(process control block) 를 가진 프로그램
컴퓨터 시스템에 있어서 프로세스는 작업의 단위이며 컴퓨터의 모든 작업은 프로세스들의 집합체로 구성
보다 쉽게 이해하는 방법 : 프로그램이 실행되면 프로세스임
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 3
프로세스의 상태
수행 (running)
명령어들이 실행되고 있는 상태 ( 프로세스가 중앙처리장치를 차지하고 있는 상태 )
대기 (waiting)
프로세스가 어떤 사건 ( 입출력 종료와 같은 ) 이 일어나기를 기다리는 상태
준비 (ready)
프로세스가 CPU 에게 할당 (CPU 를 점유할 수 있게 ) 되기를 기다리는 상태
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 4
프로세스 생성 (Process Cre-ation)
프로세스는 실행 도중에 , 프로세스 생성 시스템 호출 (fork()) 을 통하여
여러 개의 새로운 프로세스들을 생성 (Shell 이 생성하는 것도
마찬가지임 )
생성하는 프로세스를 부모 프로세스 (parent process) 라 하고 ,
생성된 프로세스는 자식 프로세스 (child process) 라 함
하나의 부모 프로세스는 여러 개의 자식 프로세스를 가질 수 있지만 자식
프로세스는 여러 개의 부모 프로세스를 가질 수 없음
자식 프로세스는 운영체제로부터 직접 자원을 얻거나 부모 프로세스
자원의 일부분을 사용할 수 있음
각 프로세스마다 고유한 정수인 식별자 (PID) 를 가지고 있음
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 5
프로세스 종료 (Process Termina-tion)
프로세스는 ( 프로그램의 ) 마지막 문장의 실행을 끝내고 종료하며 ,
운영 체제에게 프로세스의 삭제를 요청
이 시점에서 자식 프로세스는 부모 프로세스에게 이를 알림 (signal
사용 )
부모 프로세스는 다음과 같은 이유로 자식들 중 하나의 실행을 종료시킬
수 있음
• 자식이 할당된 자원을 초과하여 사용할 때
• 자식에게 할당된 일이 더 이상 필요 없을 때
혹은 사용자가 자신의 프로세스를 강제로 종료시킬 수 있음 (kill 명령
어 )
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 6
Foreground vs. Background (1/5)
UNIX 시스템은 한번에 여러 작업을 동시에 할 수 있는 다중작업 (Multi-
tasking) 시스템
사용자가 한 명령어를 실행시키고 그 명령의 실행이 종료되어 결과가
출력될 때까지 다른 명령어를 실행하지 않고 기다리는 경우를 fore-
ground 로 수행한다고 함
우리가 지금까지 공부한 대부분의 명령어가 foreground 로 실행됨
반대로 사용자가 하나의 명령어를 실행시킨 후에 그 실행이 끝날 때까지
기다리지 않고 , 다른 명령어를 실행시켜 결과적으로 시스템 내에
복수개의 작업이 동시에 실행되도록 하는 경우를 background 로
수행한다고 함
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 7
Foreground vs. Background (2/5)
Background 에서 실행하는 것은 시간이 오래 걸리는 긴 작업일 때 유용
사용자가 명령어를 background 로 실행시키면 , 그 명령의 종료와
관계없이 즉시 프롬프트가 나타나서 다음의 명령어를 실행할 수 가 있음
Background 로 지정하고 싶은 명령어 끝에 “ &” 를 붙여서 해당
명령어를 background 로 실행시킬 수 가 있음
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 8
Foreground vs. Background (3/5)
Background 명령 수행의 예 1: 초기부터 Background 로 수행
프로세스 관리 명령어
문자 & 가 의미하는 것은 “이 작업을 background 에서 실행해라”라는 의미이며 , 그
다음 라인은 백그라운드 프로세스의 관리를 편하게 하기 위한 정보로서 [1] 은 Shell
상의 작업제어를 위한 작업 번호 , 25940 은 프로세스 ID 를 나타냄
Linux/UNIX Program-mingby Yang-Sae Moon
Page 9
Foreground vs. Background (4/5)
Background 명령 수행의 예 2: 수행 중에 Background 로 전환
(control-Z(^Z) 및 bg 명령어를 사용하여 background 로 전환 )
프로세스 관리 명령어
Foreground 로 진행 중인 프로세스를 background 로 전환할 경우 ctrl-Z(suspend:프로세스 중지 ) 키를 눌러서 suspend signal 을 발생시켜 작업을 중지시킨 후 , bg 명령어를 입력하면 그 작업이 background 에서 실행됨
Linux/UNIX Program-mingby Yang-Sae Moon
Page 10
Foreground vs. Background (5/5)
Background 및 Foreground 모드 변환의 예
프로세스 관리 명령어
수행 중인 작업을 foreground 로 전환하려면 fg 명령어를 이용하며 , background 에 여러 개의 작업이 실행되고 있다면 jobs 명령어로 그 목록을 확인할 수 있고 , 작업 번호를 이용하여 특정 프로세스를 foreground 로 변환할 수 있음
Linux/UNIX Program-mingby Yang-Sae Moon
Page 11
ps 명령어 (1/4)
ps 명령어는 현재 존재하는 프로세스들이 실행 상태를 요약한 보고서를
출력해 줌
옵션이 주어지지 않으면 프로세스 식별번호 , 명령어가 시작된 터미널 ,
프로세스에 사용된 CPU 시간 , 그리고 명령어 그 자체를 나열
Default 로 ps 는 사용자가 자신의 프로세스들만 출력 , 그러나 많은
경우 현재 시스템에서 실행되고 있는 모든 프로세스들에 대하여 다양한
정보를 포함하는 상태정보를 출력
$ ps [-options]
Note: Option 은 BSD UNIX 와 시스템 V 의 경우 서로 다를 수가
있으므로 , 자세한 사용법은 매뉴얼 (man) 을 사용하여 확인할 것
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 12
ps 명령어 (2/4)
ps 명령어의 주요 option
• BSD 계열인 경우 ( 일반적으로 , ps, ps –a, ps –aux 를 이용 )
- a: 모든 사용자의 프로세스를 출력
- u: 프로세스에 대한 좀 더 자세한 정보를 출력
- x: 더 이상 제어 터미널을 갖지 않은 프로세스들도 함께 출력
• System V 계열인 경우 ( 일반적으로 , ps, ps –ef 를 이용 )
- e: 현재 시스템 내에 실행 중인 모든 사용자 프로세스 정보를 출력
- f: 프로세스에 대한 좀 더 자세한 정보를 출력
프로세스 관리 명령어
ps 명령어의 option 과 출력 결과 내용은 BSD UNIX 와 System V UNIX 가 서로
상이하므로 , 이에 대한 자세한 사용법과 출력 결과의 해석에 대해서는 manual($man
ps) 을 사용하여 확인한 후 익히기 바람
Linux/UNIX Program-mingby Yang-Sae Moon
Page 13
ps 명령어 (3/4)
System V 계열인 경우
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 14
ps 명령어 (3/4)
System V 계열인 경우
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 15
ps 명령어 (3/4)
System V 계열인 경우
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 16
ps 명령어 (4/4)
BSD 계열인 경우
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 17
ps 명령어 (4/4)
BSD 계열인 경우
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 18
ps 명령어 (4/4)
BSD 계열인 경우
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 19
ps 명령어 (4/4)
BSD 계열인 경우
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 20
kill 명령어 (1/2)
kill 명령은 현재 (background 로 ) 수행중인 프로세스를 강제로
종료시킴( 보다 정확하게는 수행중인 프로세스에 특정 signal 을 전달하는 기능을 수행
함 )
$ kill [-signal] PID
여기에서 PID 는 프로세스 식별번호이고 , signal 은 프로세스에게
전달할 signal 을 나타냄
Default signal 은 15 번인 SIGTERM(terminate) 으로 , 이 signal 은
프로세스에게 수행을 중지하라는 메시지를 전달함
가끔씩 kill 명령어를 사용한 후에도 그 프로세스가 아직 존재하는
경우가 있는데 , 이 경우에는 kill 명령어를 – 9 옵션으로 실행하여
SIGKILL 을 전달하여 강제 종료시킴
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 21
kill 명령어 (2/2)프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 22
kill 명령어 (2/2)프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 23
sleep 명령어 (1/2)
sleep 명령어는 말 그대로 지정된 시간만큼 실행을 중지함
(shell 이 대기 상태로 기다림 )
$ sleep seconds
sleep 은 여러 명령어를 batch 로 수행할 경우 , 사용자의 의도에 의해
시간적인 gap 을 두기 위하여 유용하게 사용됨
프로세스 관리 명령어
Linux/UNIX Program-mingby Yang-Sae Moon
Page 24
sleep 명령어 (2/2)프로세스 관리 명령어