리눅스데브코스 [6주차 - 5]<프로세스 관련 시스템 콜>

심우열·2023년 5월 16일
0

1. 프로세스

1. 프로세스의 개념

  • 실행중인 프로그램을 프로세스라고 함
  • 하나의 프로그램으로 여러 프로세스를 생성 가능

2. 프로세스의 기능

  • 격리
  • 다중처리
  • 공유

3. 프로세스 ID

  • PID 는 getpid() 시스템 콜을 통해 확인

4. 스택과 스택 프레임

  • 스택에는 다음과 같은 정보가 담겨 있음
    -> 함수 인자와 지역 변수
    -> 호출 연결 정보

5. 환경변수

  • 유닉스 전통적인 key/value

환경변수 관련한 시스템콜

  • 환경변수 출력하기 : printenv
  • 환경변수 설정하기 : setenv
  • 환경변수 읽기 : getenv
  • 주로 부팅 시 설정 값을 활용하기 위해 사용

2. 프로세스 관련 시스템 콜

  • fork() : 프로세스 생성
  • exit() : 프로세스 종료
  • wait() : 자식 프로세스 대기
    -> 자식프로세스가 끝나야 자식프로세스의 자원을 초기화 가능하기 때문
  • execve() : 프로그램 실행(실행파일 메모리 로드)

1 . fork와 파일 디스크립터

  • fork() 시, 자식프로세스의 파일 디스크립터는 부모의 파일 디스크립터와 같은 매모리를 가리킴
  • 데이터에 대한 변경이 일어날때 아래와 같이 새로운 메모리를 쓰고 그 위치를 가리키게 됨

copy on write

  • 이러한 방식이 fork() 속도를 높이는데 활용

8. wait()

  • 자식프로세스의 종료를 기다림
  • waitpid()를 통해 특정 프로세스의 종료를 기다릴 수 도 있음

9. execve()

  • fork() 와 쌍이 되는 프로그램 실행을 위한 시스템 콜
  • fork() 하지 않고 execve()만 호출되면 이전의 프로세스가 종료되고 execve()로 인한 새로운 프로세스만 실행됨
profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글