TIL 12월 13일 2023년

ORCASUIT·2023년 12월 16일

날짜 : 2023-12-13 22:17

주제 :


개요

process_exec(void f_name)

운영체제 커널 수준에서 새로운 프로세스를 실행하는 함수

이 함수는 사용자 모드 프로그램을 실행하기 위해 아래의 과정을 담당

  1. 커널 스택을 설정
  2. 이진 파일을 로드
  3. 커널에서 사용자 모드로 전환

이 함수가 커맨드라인 인자를 받아 스택에 쌓는 과정을 설명


먼저 f_name으로 받아온 커맨드라인 인자를 별도의 메모리(페이지) 에 안전하게 저장


저장된 커맨드 라인의 인자를 공백을 기준으로 나눠 리스트에 저장

예를들어
/bin/ls -l foo bar 라는 커맨드 라인을 받았다면

이러한 형태로 스택에 쌓기 위해

함수 시그니쳐

  1. 인자를 역순으로 스택에 푸시
  2. 워드 정렬을 위한 패딩 추가 (속도 최적화를 위한)
  3. NULL 포인터 센티넬 추가 (인자의 끝을 나타내는)
  4. 각 인자의 첫 주소를 스택에 푸시
  5. 페이크 리턴 주소 푸시

출처(참고문헌)

연결문서

0개의 댓글