CS / / 2024. 10. 7. 15:05

Linux Kernel & Process Management

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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유