Process
: is an instance of a running program.
(Not the same as "program" or "processor")
여러 process들이 매우 빠르게 switching되어 수행되어지기 때문에 마치 혼자 CPU를 쓰고 있는 것처럼 보여짐
process가 switching되어 바뀔 때마다 process의 내용을 disk같은 곳에 저장하고,
새로운 process의 내용을 읽어온다.
이것을 해주는 것이 virtual memory system이라고 한다.
context switching
ps
: 현재 실행중인 process 출력
ps -elf
: 현재 실행중인 모든 process 출력
init process의 PID는 항상 1
proc
: kernel data interface를 위한 가상의 file system
2994/ -> bash process directory
Process Table
:
kernel은 어떤 프로세스가 현재 시스템에서 수행되고 있는지에 대한 정보가 필요. 그 정보를 갖고 있는 곳.
Each entry contains the following information about each process :
UNIX가 처음에 부팅될 때, 생기는 프로세스는 딱 하나이다. —> init process (PID = 1)
UNIX에서 프로세스를 만들 수 있는 유일한 방법은 기존의 프로세스를 복제하는 것.
따라서 init process(parent process)를 복제해서 다른 process(child process, PPID = 1)를 생성.
따라서 init process는 모든 process들의 조상 process가 된다
fork()
라는 system call에 의해 process가 복제된다.
parent process와 child process는 PID, PPID를 제외하고 모든 것이 똑같다.
(code, data, stack이 모두 똑같음)
우리는 fork()
를 통해서 똑같은 process를 생성했는데,
우리가 원하는 것은 만들어진 process가 어떠한 program을 수행하기 원한다.
그래서 fork()로 생성된 child process의 code를
우리가 원하는 code로 바꿔주는 system call이
exec()
계열의 system call들이다.
shell process가 실행중이므로 terminal의 console 입력부분에 커서가 깜빡깜빡..
실행파일의 이름을 입력하면, shell process는 자기 자신을 fork()한다.
fork()
하여 만들어진 child process의 code 부분에
exec()
system call을 사용하여
우리가 지정한 program의 code로 재할당.
shell process는 wait()
system call을 통해
우리가 생성한 child process가 끝나기를 기다린다.
child process가 종료되면,
shell process가 wait하고 있다가
깨어나서 종료된 process에 대해서 뒷처리를 해주고,
그 다음 명령어를 입력할 수 있도록 shell prompt창에 다시 깜빡깜빡...
getpid
: Get a process's IDgetppid
: Get a parent process's IDfork
: Duplicate a processexec
: Replaces the code, data, and stack of a processexit
: Terminate a processwait
: Waits for a child processexecve(2)
: system callOrphan process
라고 한다.Zombie process
라고 한다.parent process가 먼저 종료됨을 알 수 있다.
== child process가 끝나기를 기다리지 않음
➡️ wait()로 해결
child process가 먼저 끝남.
parent process가 child process의 상태가 바뀌기를(끝나기를) 기다림
parent process는 child process의 status return 0을 받음.
<defunct>
: child process가 zombie process가 된 것을 알 수 있다.race condition
:fflush
: