프로세스는 프로그램이 cpu의 자원을 할당받아 실행된 형태를 프로세스라고 한다.
그러면 부모, 자식 프로세스란 무엇일까?
우리가 프로그래밍시에 muiltiprocess.py 라는 파이썬 파일에서 멀티 프로세싱을 하게 되면
muiltiprocess.py 의 프로세스는 1000번이라고 하자. 그러면 자식 프로세스는 1001번,1002번이 될 것이다.
이러한 번호를 pid라 하며, 프로세스의 식별자를 의미한다.
멀티 프로세스를 사용하는 이유는 예를들어
카카오톡이 실행된다고 하자.
그러면 카톡 안에 있는 채팅 프로그램과 금융 프로그램, 파일 관리 등 여러가지 프로세스가 뜨게된다.
그러면 카카오톡 메인 프로그램이 부모 프로세스가 되고, 채팅, 금융 등의 프로세스가 자식 프로세스가 된다.
프로세스간 메모리 구조는 개별적으로 생성되고 공유하지 않는데, 프로세스간 통신을 하려면 IPC를 사용한다.
프로세스 안에는 쓰레드라는 작업의 단위가 생성이 되고, 쓰레드 간에는 힙, 코드, 데이터 영역을 공유하며 스택이라는 개별 메모리 영역이 생긴다.
하드웨어와 소프트웨어의 실행은 위 사진과 같다.
우리가 사용하는 CPU는 코어와 쓰레드를 보고 좋은 CPU라고 한다.
코어와 스레드가 많을 수록 수용할 수 있는 작업이 많아지므로 당연한 결과이다.
우리가 리눅스에서 ps -ef 를 사용했을 경우 나오는 속성들의 의미이다.
UID | 프로세스 실행 유저 |
PID | 프로세스의 아이디 |
PPID | 프로세스의 부모 PID |
C | CPU 사용량 |
STIME | 프로세스 시작 시간 |
TTY | 프로세스를 제어하는 수단 콘솔접속시 "tty숫자" 행태로 표시되며, 원격이나 에뮬레이터 접속시 "pts/숫자" 형태로 표시 |
TIME | 프로세스에 사용된 CPU 시간 |
CMD | 프로세스 실행 명령어 |
1번 프로세스 기준으로 자식 프로세스가 생성된 것을 볼 수 있다.
부모 프로세스로부터 자식 프로세스가 생성될 때 2가지가 존재한다.
l 자식 프로세스는부모 프로세스의 복사본이다. (자식 프로세스는 부모와 똑 같은 프로그램과자료를 가진다.)
l 자식 프로세스가자신에게 적재될 새로운 프로그램을 갖고 있다.
프로세스가 종료되는 경우는
1. 자식이 자신에게 할당된 자웡늘 초과하여 사용될 때,
2. 자식에게 할당한 테스크가 더 이상 필요가 없을 때,
3. 부모가 종료하는데 운영체제는 부모가 종료한 후 자식이 수행되는 것을 허용하지 않을 때.
'운영체제' 카테고리의 다른 글
리눅스 운영체제 커널 파해치기 (1) (1) | 2022.12.25 |
---|---|
스레드/프로세스 차이 (0) | 2022.11.22 |
캐시 종류 (0) | 2022.10.19 |
스토리지 (0) | 2022.10.18 |
리눅스/파일 디스크립터 (0) | 2022.10.14 |