1. 리눅스 환경에서의 프로세스
- ps 명령어: 현재 시스템에서 실행 중인 프로세스에 관한 정보를 출력하여 사용자에게 제공
- PID: 프로세스 고유식별자
- PPID: 부모 프로세스의 PID
2. C언어 프로세스 ID 구하기 함수
- getpid(): 실행중인 프로세스 ID를 구함
- getppid(): 부모 프로세스의 ID를 구함
3. 프로세스 생성(Process Creation)
- 부모 프로세스가 연산을 통해 자식 프로세스를 만들어냄
- 생성된 자식 프로세스 또한 새로운 자식 프로세스를 만들 수 있음
- 고유의 PID를 가지게 됨
- fork(): 새로운 프로세스를 생성하는 시스템콜
- exec(): 이진 파일을 메모리에 적재하고 그 프로그램을 실행하는 시스템콜
- wait(): 자식 프로세스가 종료할 때까지 기다리는 시스템콜
- exit(): 운영체제에게 자신의 삭제를 요청하고 종료하는 시스템콜
4. exec 계열 함수
- 현재 실행되고 있는 프로세스를 다른 프로세스로 대신하여 새로운 프로세스를 실행하는 함수
- 현재의 프로세스 이미지를 새로운 프로세스 이미지로 덮어씀
5. Copy On Write(COW)
- 자식 프로세스 생성시 발생하는 메모리 복사 비용을 줄이기 위한 기법
- 작성시 이전의 내용을 Copy한다는 뜻
- 프로세스가 copy on write 메모리 영역에 접근하게 되면 그 영역을 먼저 복사하고 작성하게 됨
6. 좀비 프로세스
- 자식 프로세스가 종료되었지만 부모 프로세스가 자식 프로세스의 종료 상태를 회수하지 않았을 경우에 자식 프로세스를 좀비 프로세스라고 함
7. 프로세스 스케쥴링 관련 함수
- nice(): 우선순위 변경하는 시스템콜
- getpriority(): 어떤 프로세스의 우선순위 값을 가져온다
- setpriority(): 어떤 프로세스의 우선순위 값을 변경한다
8. 프로세스간 커뮤니케이션(IPC, Inter-process Communication)
- Message Queue
- Pipe
- Shared memory
- Signal
- Socket
9. 셸 스크립트(Shell script)
- 셸이나 명령 줄 인터프리터에서 돌아가도록 작성되었거나 한 운영체제를 위해 쓰인 스크립트
10. pthread(POSIX Thread)
- 유닉스 계열 POSIX 시스템에서 병렬적으로 작동하는 소프트웨어를 작성하기 위하여 제공하는 API
- libpthread 라이브러리에 포함되어 있으므로 컴파일 시 명시적으로 -pthread 옵션을 명시해야만 함
11. 메모리 매핑 함수
- mmap 함수를 사용하면 파일을 프로세스의 가상 메모리에 매핑할 수 있음
- 매핑할 메모리의 위치와 크기를 인자로 받음
12. inode
- 파일 시스템에 저장된 모든 파일과 디렉토리에 대한 메타데이터를 저장하는 데이터 구조