책/운영체제

운영체제 3. 프로세스 API

에린_1 2024. 2. 29. 00:43
728x90

3. 프로세스 API

3.1 fork() 시스템콜

  • 프로세스 생성에 fork() 시스템 콜이 사용된다.
  • 자식 프로세스는 부모 프로세스와 완전히 동일하지는 않다. 자식 프로세스는 자신의 주소공간, 레지스터, PC값을 갖는다 매우 중요한 차이점이 있다. fork() t시스템콜의 반환값이 서로 다르다. fork()로 부터 부모 프로세스는 생성된 자식 프로세스의 PID를 반환 받고, 자식 프로세스는 0을 반환 받는다.
  • CPU 스케줄러는 실행할 프로세스를 선택한다.

3.2 wait() 시스템콜

  • wait() 시스템콜은 자식 프로세스 종료 시점까지 자신의 실행을 잠시 중지 시킨다.

3.3 exec() 시스템콜

  • 자기 자신이 아닌 다른 프로그램을 실행해야 할 때 사용한다.
  • 실행파일의 이름과 약간의 인자가 주어지면 해당 실행 파일의 코드와 정적데이터를 읽어들여 현재 실행중인 프로세스의 코드 세그멘트와 정적 데이터 부분을 덮어쓴다. 힙과 스택 및 프로그램이 다른 주소공간 새로운 프로그램의 실행을 위해 다시 초기화 된다. 그런 다음 운영체제는 프로세스의 argv와 같은 인자를 전달하여 프로그램을 실행시킨다.
  • 자식 프로세스가 부모와의 연관성을 완전히 끊어서 새로운 프로그램을 실행할 수 있도록 한다.

3.4 프로세스 제어와 사용자

  • kill() 시스템콜은 프로세스에게 멈추거나 끝내기와 같이 시그널을 보내는데 사용된다.
  • 시그널이라는 운영체제의 메커니즘은 외부 사건을 프로세스에게 전달하는 토대이다. 개별적인 프로세스 단위 또는 프로세스 그룹 단위로 시그널을 받거나 처리할 수 있다.
  • 일반적으로, 우리가 사용하는 시스템은 동시에 여러 사용자가 접속할 수 있다. 사용자는 자기 프로세스들에 한해서 제어권을 가지고 있다. 운영체제는 CPU, 메모리와 디스크 같은 자원을 각 사용자와 프로세스들에 할당하여 전체적인 시스템의 목적에 도달하도록 만드는 역할을 한다.
728x90