[시스템프로그래밍] 6주차 프로세스 관리 (고급)

행복한 콩🌳·2022년 5월 15일
0

시스템 프로그래밍

목록 보기
10/17

1차시 프로세스 실행

fork() 함수

  • 새로운 프로세스를 생성 : 자식 프로세스
  • fork 함수를 호출한 프로세스 : 부모 프로세스
  • 자식 프로세스는 부모 프로세스의 메모리를 복사
    exec 함수군
  • 인자로 받은 다른 프로그램을 자신을 호출한 프로세스의 메모리에 덮어씀
  • 프로세스가 수행중이던 기존 프로그램 중지되고 새로 덮어쓴 프로그램 실행
  • fork 함수와 연결해 fork 생성한 자식 프로세스가 새로운 프로그램을 실행하도록 함
  1. 리눅스 프로세스 생성
  • 프로그램 안에서 다른 프로그램을 실행해 새로운 프로세스를 생성하는 것

  • 프로세스 생성 함수
    ① 프로그램 실행
    int system(const char *string);

② 프로세스 생성
pid_t fork(void);
pid_t vfork(void);

  • exec 함수군
    ① 인자로 받은 다른 프로그램을 자신을 호출한 프로세스의 메모리에 덮어씀 ② 프로세스가 수행중이던 기존 프로그램 중지되고 새로 덮어쓴 프로그램 실행
    ③ fork 함수와 연결해 fork 생성한 자식 프로세스가 새로운 프로그램을 실행하도록 함
  1. 리눅스 프로세스 생성 함수
  • 프로그램 실행 : system(3) : 프로그램 안에서 새로운 프로그램 실행

  • fork(2)
    ① 새로운 자식 프로세스 생성
    ② 성공 시 부모는 자식 프로세스의 ID 리턴, 자식 프로세스는 0 리턴, 실패 시 –1 리턴

2차시 프**로세스 종료

**프로세스 종료

  • 사용중인 프로세를 종료을 의미
  • 프로세스가 마지막 명령 실행, 종료하여 운영체제에 프로세스의 삭제 요청
    종료 함수
    exit() 함수 활용
  1. 리눅스 프로세스 종료
  • 프로그램 종료 함수의 일반적 종료 절차
  • 모든 파일 기술자를 닫는다.
  • 부모 프로세스에 종료 상태를 알린다.
  • 자식 프로세스들에 SIGHUP 시그널을 보낸다.
  • 부모 프로세스에 SIGCHLD 시그널을 보낸다.
  • 프로세스간 통신에 사용한 자원을 반납한다.
  1. 리눅스 프로세스 종료 함수
  • 프로세스 종료
    void exit(int status);
    void _exit(int status);

  • 종료 시 수행할 작업 지정
    int atexti(void (*func)(void));

3차시 리눅스 시스템 도구

컴파일(compile)
C나 자바 등의 고급 언어로 쓰인 프로그램을 번역하고, 컴퓨터에서 실행할 수 있는 기계어 프로그램으로 고치는 과정
GCC

  • GNU Compiler Collection
  • GNU(GNU is Not Unix) 프로젝트의 프리웨어(freeware) 컴파일러. 본래 C 언어용 컴파일러로 시작하였으므로 GNU C Compiler의 약자였으나 2.9 버전에 이르러 C뿐만이 아니라 오브젝티브(Objective) C, 파스칼(Pascal), 에이다(Ada)와 같은 언어 및 Linux, Solaris 2, 윈도우 NT 등의 많은 운영체제도 지원하면서 GNU Compiler Collection으로 개명
  1. 컴파일이란 텍스트로 작성한 프로그램을 시스템이 이해할 수 있는 기계어로 변환하는 과정이다.
  2. make는 소스 파일 여러 개를 묶어서 실행파일을 생성하는 도구이다.
  3. 프롬프트란 사용자의 명령 입력을 기다리는 표시를 나타낸다.
  4. 명령어의 구성은 ‘명령어 [옵션][인자1] [인자2] ....’로 되어있다.
profile
매일매일 조금씩 모여 숲이 되자🐣

0개의 댓글