12
1 컴퓨터 컴퓨터 특강 특강 (UNIX System Programming) (UNIX System Programming) 프로세스 프로세스 관리 관리 명령어 명령어 2006 2006봄학기 봄학기 문양세 문양세 강원대학교 강원대학교 컴퓨터과학과 컴퓨터과학과 Page 2 UNIX System Programming by Yang-Sae Moon 프로세스란 프로세스란? 실행중인 프로그램으로서 자신의 작업을 처리하기 위하여 CPU 자원, 모리, 파일, 입출력 장치와 같은 자원들을 필요로 하는 실행 코드 능동 적인 개체 현재 실행 중이거나 곧 실행이 가능한 PCB(process control block)를 가진 프로그램 컴퓨터 시스템에 있어서 프로세스는 작업의 단위이며 컴퓨터의 모든 작 업은 프로세스들의 집합체로 구성 보다 쉽게 이해하는 방법: 프로그램이 실행되면 프로세스임 프로세스 관리 명령어

컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

1

컴퓨터컴퓨터 특강특강 (UNIX System Programming)(UNIX System Programming)

프로세스프로세스 관리관리 명령어명령어

20062006년년 봄학기봄학기

문양세문양세

강원대학교강원대학교 컴퓨터과학과컴퓨터과학과

Page 2UNIX System Programmingby Yang-Sae Moon

프로세스란프로세스란??

실행중인 프로그램으로서 자신의 작업을 처리하기 위하여 CPU 자원, 메모리, 파일, 입출력 장치와 같은 자원들을 필요로 하는 실행 코드 능동

적인 개체

현재 실행 중이거나 곧 실행이 가능한 PCB(process control block)를 가진

프로그램

컴퓨터 시스템에 있어서 프로세스는 작업의 단위이며 컴퓨터의 모든 작

업은 프로세스들의 집합체로 구성

보다 쉽게 이해하는 방법: 프로그램이 실행되면 프로세스임

프로세스 관리 명령어

Page 2: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

2

Page 3UNIX System Programmingby Yang-Sae Moon

프로세스의프로세스의 상태상태

수행(running)

명령어들이 실행되고 있는 상태 (프로세스가 중앙처리장치를 차지하고

있는 상태)

대기(waiting)

프로세스가 어떤 사건(입출력 종료와 같은)이 일어나기를 기다리는 상태

준비(ready)

프로세스가 CPU 에게 할당(CPU를 점유할 수 있게)되기를 기다리는 상태

프로세스 관리 명령어

Page 4UNIX System Programmingby Yang-Sae Moon

프로세스프로세스 생성생성 (Process Creation)(Process Creation)

프로세스는 실행 도중에, 프로세스 생성 시스템 호출(fork())을 통하여 여

러 개의 새로운 프로세스들을 생성 (Shell이 생성하는 것도 마찬가지임)

생성하는 프로세스를 부모 프로세스(parent process)라고 하고 , 생성된

프로세스는 자식 프로세스(child process)라고 함

하나의 부모 프로세스는 여러 개의 자식 프로세스를 가질 수 있지만 자식

프로세스는 여러 개의 부모 프로세스를 가질 수 없음

자식 프로세스는 운영체제로부터 직접 자원을 얻거나 부모 프로세스 자

원의 일부분을 사용할 수 있음

각 프로세스마다 고유한 정수인 식별자(PID)를 가지고 있음

프로세스 관리 명령어

Page 3: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

3

Page 5UNIX System Programmingby Yang-Sae Moon

프로세스프로세스 종료종료 (Process Termination)(Process Termination)

프로세스는 (프로그램의) 마지막 문장의 실행을 끝내고 종료하며, 운영

체제에게 프로세스의 삭제를 요청

이 시점에서 자식 프로세스는 부모 프로세스에게 이를 알림 (signal 사용)

부모 프로세스는 다음과 같은 이유로 자식들 중 하나의 실행을 종료시킬

수 있음

• 자식이 할당된 자원을 초과하여 사용할 때

• 자식에게 할당된 일이 더 이상 필요 없을 때

혹은 사용자가 자신의 프로세스를 강제로 종료시킬 수 있음 (kill 명령어)

프로세스 관리 명령어

Page 6UNIX System Programmingby Yang-Sae Moon

Foreground vs. Background (1/5)Foreground vs. Background (1/5)

UNIX 시스템은 한번에 여러 작업을 동시에 할 수 있는 다중작업(Multi-

tasking) 시스템

사용자가 한 명령어를 실행시키고 그 명령의 실행이 종료되어 결과가 출

력될 때까지 다른 명령어를 실행하지 않고 기다리는 경우를 foreground

로 수행한다고 함

우리가 지금까지 공부한 대부분의 명령어가 foreground로 실행됨

반대로 사용자가 하나의 명령어를 실행시킨 후에 그 실행이 끝날 때까지

기다리지 않고, 다른 명령어를 실행시켜 결과적으로 시스템 내에 복수개

의 작업이 동시에 실행되도록 하는 경우를 background로 수행한다고 함

프로세스 관리 명령어

Page 4: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

4

Page 7UNIX System Programmingby Yang-Sae Moon

Foreground vs. Background (2/5)Foreground vs. Background (2/5)

Background에서 실행하는 것은 시간이 오래 걸리는 긴 작업일 때 유용

사용자가 명령어를 background로 실행시키면, 그 명령의 종료와 관계없

이 즉시 프롬프트가 나타나서 다음의 명령어를 실행할 수 가 있음

Background로 지정하고 싶은 명령어 끝에 “&”를 붙여서 해당 명령어를

background로 실행시킬 수 가 있음

프로세스 관리 명령어

Page 8UNIX System Programmingby Yang-Sae Moon

Foreground vs. Background (3/5)Foreground vs. Background (3/5)

Background 명령 수행의 예 1: 초기부터 Background로 수행

프로세스 관리 명령어

문자 & 가 의미하는 것은 “이 작업을 background에서 실행해라”라는 의미이며, 그 다음

라인은 백그라운드 프로세스의 관리를 편하게 하기 위한 정보로서 [1]은 Shell상의 작업

제어를 위한 작업 번호, 25940은 프로세스 ID를 나타냄

Page 5: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

5

Page 9UNIX System Programmingby Yang-Sae Moon

Foreground vs. Background (4/5)Foreground vs. Background (4/5)

Background 명령 수행의 예 2: 수행 중에 Background로 전환

(control-Z(^Z) 및 bg 명령어를 사용하여 background로 전환)

프로세스 관리 명령어

Foreground로 진행 중인 프로세스를 background로 전환할 경우 ctrl-Z(suspend:프로세

스 중지) 키를 눌러서 suspend signal을 발생시켜 작업을 중지시킨 후, bg 명령어를 입력

하면 그 작업이 background에서 실행됨

Page 10UNIX System Programmingby Yang-Sae Moon

Foreground vs. Background (5/5)Foreground vs. Background (5/5)

Background 및 Foreground 모드 변환의 예

프로세스 관리 명령어

수행 중인 작업을 foreground로 전환하려면 fg명령어를 이용하며, background에 여러

개의 작업이 실행되고 있다면 jobs명령어로 그 목록을 확인할 수 있고, 작업 번호를 이

용하여 특정 프로세스를 foreground로 변환할 수 있음

Page 6: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

6

Page 11UNIX System Programmingby Yang-Sae Moon

nohupnohup (1/2)(1/2)

모든 프로세스는 logout한 이후에 종료됨(부모 프로세스가 죽기 때문)실제로 프로세스가 모두 종료되지는 않으며, 시스템마다 그 결과가 상이함

그러나, nohup 명령을 사용하여 프로세스를 실행할 경우, 사용자가

logout한 뒤에도 이전에 실행한 명령을 계속 실행함

Logout전에 실행시킨 명령의 결과는 화면(표준 출력)에는 출력되지 않고

시스템 내의 nohup.out 이라는 파일에 기록

nohup 명령은 키에 의해서 인터럽트 될 수 있으므로 반드시 백그라운드

(&)로 실행시켜야 함

$ nohup command [arguments] &

프로세스 관리 명령어

Page 12UNIX System Programmingby Yang-Sae Moon

nohupnohup (2/2)(2/2)프로세스 관리 명령어

Page 7: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

7

Page 13UNIX System Programmingby Yang-Sae Moon

psps 명령어명령어 (1/4)(1/4)

ps 명령어는 현재 존재하는 프로세스들이 실행 상태를 요약한 보고서를

출력해 줌

옵션이 주어지지 않으면 프로세스 식별번호, 명령어가 시작된 터미널, 프

로세스에 사용된 CPU 시간, 그리고 명령어 그 자체를 나열

Default로 ps는 사용자가 자신의 프로세스들만 출력, 그러나 많은 경우

현재 시스템에서 실행되고 있는 모든 프로세스들에 대하여 다양한 정보

를 포함하는 상태정보를 출력

$ ps [-options]

Note: Option은 BSD UNIX와 시스템 V의 경우 서로 다를 수가 있으므로,

자세한 사용법은 매뉴얼(man)을 사용하여 확인할 것

프로세스 관리 명령어

Page 14UNIX System Programmingby Yang-Sae Moon

psps 명령어명령어 (2/4)(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)을 사용하여

확인한 후 익히기 바람

Page 8: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

8

Page 15UNIX System Programmingby Yang-Sae Moon

psps 명령어명령어 (3/4)(3/4)

System V 계열인 경우

프로세스 관리 명령어

Page 16UNIX System Programmingby Yang-Sae Moon

psps 명령어명령어 (4/4)(4/4)

BSD 계열인 경우

프로세스 관리 명령어

Page 9: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

9

Page 17UNIX System Programmingby Yang-Sae Moon

kill kill 명령어명령어 (1/2)(1/2)

kill 명령은 현재 (background로) 수행중인 프로세스를 강제로 종료시킴

(보다 정확하게는 수행중인 프로세스에 특정 signal을 전달하는 기능을 수행함)

$ kill [-signal] PID

여기에서 PID는 프로세스 식별번호이고, signal은 프로세스에게 전달

할 signal을 나타냄

Default signal은 15번인 SIGTERM(terminate)으로, 이 signal은 프로세스

에게 수행을 중지하라는 메시지를 전달함

가끔씩 kill 명령어를 사용한 후에도 그 프로세스가 아직 존재하는 경우가

있는데, 이 경우에는 kill 명령어를 –9 옵션으로 실행하여 SIGKILL을 전달

하여 강제 종료시킴

프로세스 관리 명령어

Page 18UNIX System Programmingby Yang-Sae Moon

kill kill 명령어명령어 (2/2)(2/2)프로세스 관리 명령어

Page 10: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

10

Page 19UNIX System Programmingby Yang-Sae Moon

dudu 명령어명령어 (1/2)(1/2)

du(disk usage)는 디렉토리와 파일에 의해 사용된 점유 메모리 용량을

block수로 출력하는 명령어임 (1 block = 512 bytes)

$ du [-options] [directory_or_file]

지정한 파일 및 디렉토리에 대한 사용량(점유 block 수)를 출력하며, 이를

지정하지 않으면 현재의 작업 디렉토리에 대한 디스크 사용량을 출력

주요 옵션

• -a: 지정된 디렉토리내의 모든 파일과 디렉토리에 의해 사용된 block수를 표시

• -s: 단지 요약만 표시

프로세스 관리 명령어

Page 20UNIX System Programmingby Yang-Sae Moon

dudu 명령어명령어 (2/2)(2/2)프로세스 관리 명령어

Page 11: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

11

Page 21UNIX System Programmingby Yang-Sae Moon

sleep sleep 명령어명령어 (1/2)(1/2)

sleep 명령어는 말 그대로 지정된 시간만큼 실행을 중지함(shell이 대기

상태로 기다림)

$ sleep seconds

sleep은 여러 명령어를 batch로 수행할 경우, 사용자의 의도에 의해 시간

적인 gap을 두기 위하여 유용하게 사용됨

프로세스 관리 명령어

Page 22UNIX System Programmingby Yang-Sae Moon

sleep sleep 명령어명령어 (2/2)(2/2)프로세스 관리 명령어

Page 12: 컴퓨터특강 (UNIX System Programming) 프로세스관리명령어ysmoon/courses/2006_1/us/08.pdf · 2016-06-02 · 1 컴퓨터특강(UNIX System Programming) 프로세스관리명령어

12

Page 23UNIX System Programmingby Yang-Sae Moon

기타기타 프로세스프로세스 관련관련 명령어명령어

nice: 프로세스의 priority를 조정하는 명령어

id: 사용자 자신의 user ID와 group ID를 출력하는 명령어

df: 사용 가능한 디스크 정보(free blocks, free i-nodes)를 출력

at: 사용자가 원하는 특정 시각에 명령어를 수행시키는 기능 수행

batch: 여러 개의 명령어를 순차적으로 수행시키는 명령어

프로세스 관리 명령어