Process Creation
- 부모 프로세스(parent process)가 자식 프로세스(children process) 생성
- 부모의 context를 그대로 복사함(context: 관련된 모든 동적, 정적 정보)
- PID만 다름
- 자식은 복사된 address space에 새로운 프로그램을 올림(load)
- 프로세스의 생성은 다음 두 시스템 콜로 나누어 실행
- fork() 시스템 콜이 부모를 복사하여 자식 프로세스를 생성
- exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림
- fork()는 parent가 그대로 있는데, exec()는 child process를 만든 후 parent process가 없어짐
System Calls for Process
- fork(): create a child(copy)
- exec(): overlay new image
- wait(): sleep until child is done
- exit(): frees all resources, notify parent
Library vs. System call
- Library
- 누군가가 이미 작성한 함수로 내 프로그램에서 호출해서 사용 가능(사용자 프로세스 주소 공간 내의 함수 호출)
- 수학함수: sin(), cos()
- 입출력 함수: printf(), scanf(), fopen(), fclose()
- 프로세스 관련: execlp()
- System call
- 커널 내부에 정의된 함수로 사용자 프로그램이 호출해서 사용 가능
- 사용자 프로세스 주소공간에서 커널 주소공간으로 주소 공간을 가로지르는 함수 호출
- 입출력 관련: read(), write(), open(), close()
- 프로세스 관련: fork(), exec(), wait(), exit()
Booting the Kernel
- Booting
- CPU는 디스크에서 bootstrap loader의 위치를 찾아 메모리에 올림
- Loader는 파일 시스템에서 kernel의 위치를 찾아 메모리에 올리고 실행시킴
- kernel은 process 0을 수작업으로 만듦
- process 0 (root process)
- process image가 없는 특별한 프로세스
- process 0은 fork()/exec() process 1 (/etc/init)
- process 1 (init process)
- fork() / exec() shell for operator console
Daemon Process
- Daemon process(=server)
- 형식: 사용자 프로세스임
- 역할: 커널을 돕는 시스템 프로세스
- 특징
- 부팅 시에 시작되어 시스템 종료시까지 커널과 운명을 같이 함
- 특정 터미널 혹은 shell과 연계되지 않음
- 동작 알고리즘
- 요청이 없을 때는 항상 blocked 상태 유지
- 요청이 들어오면 깨어나서 요청 처리
- 요청의 처리가 끝나면 다시 blocked
'CS' 카테고리의 다른 글
프로세스 & 스레드 (0) | 2024.10.24 |
---|---|
엔디안이란? (빅엔디안 / 리틀엔디안) (0) | 2024.10.24 |
[c언어] TCP/IP Socket 통신 흐름 (0) | 2024.10.07 |
Transport Layer - TCP (0) | 2024.10.07 |
Linux Kernel & Program Execution (0) | 2024.10.07 |