-
Notifications
You must be signed in to change notification settings - Fork 0
TCP IP Chapter10
John edited this page Jan 18, 2018
·
3 revisions
- 실행중인 프로그램입니다.
- 실행중인 프로그램에 관련된 메모리, 리소스 등을 총칭하는 의미이다.
- 멀티프로세스 운영체제는 둘 이상의 프로세스를 동시에 생성 가능하다.
운영체제는 생성되는 모든 프로세스에 ID를 할당한다.
프로세스를 통체로 복사하여 똑같은 하나의 별개의 프로세스를 만들어 실행한다.
부모프로세스 fork 함수를 호출한 프로세스는 부모 프로세스 -> fork 함수의 반환 값은 자식 프로세스의 ID
자식프로세스 fork 함수의 호출을 통해서 생성된 프로세스는 자식 프로세스 -> fork 함수의 반환값은 0
OS 관점 코드 메모리 [ 스택 / 힙 / 데이터 영역]
CPU 관점 연산장치 레지스터 = OS와 CPU의 중간 매게체 역할
프로세스를 두개이상 만들 수 있다.
하나의 CPU는 번갈아[스위칭] 가면서 두개의 프로세스를 운영을 하고 그 순서는 OS영역에서 관리는 합니다.
번갈아 쓰는 파일
- 계층적 구조(실행 시키는 프로세스(부모 탐색기/커맨드 및 탐색기)) / 실행되는 프로세스(자식/프로그램)
- 부모프로세스는 자식프로스세를 확인 후 종료시킨다.
- 부모프로세스가 자식프로세스의 반환값을 가져가지 않은 프로세스
- 실행이 완료되었음에 불구하고 소멸되지 않은 프로세스
- 프로세스도 main 함수가 반환되면 소멸되어야한다.
- 소멸되지 않았다는 것은 프로세스가 사용한 리소스가 메모리 공간에 여전히 존재한다는 의미이다.
- 자식 프로세스가 종료 되면서 반환하는 상태 값이 부모 프로세스에게 전달죄 않으면 해당 프로세스는 소멸되지 않고 좀비가 된다.
- 인자를 전달하면서 exit를 호출하는 경우
- main 함수에서 return 문을 실행하면서 값을 반환하는 경우
- 자식 프로세스의 종료 상태 값이 운영체제에 전달되는 경우
- wait함수의 경우 자식 프로세스가 종료되지 않는 상황에서는 반환되지 않고 블로킹 상상태에 놓인다는 특징이 있다.
- 자식식프로세스가 정상 종료한 경우 참(true)을 반환한다.
자식프로세스의 전달 값을 반환한다.
- 성공시 종료된 자식 프로세스의 id를 통하여 상태값을 확인
- wait 함수는 블로킹 상태에 빠질 수 이있는 반면 waitpid 함수는 블로킹 상태에 놓이지 않게끔 할 수 있다.
- 실패시 -1 을 반환한다.
- 자식 프로세스의 종료시점을 알수 있다.
- OS가 자식프로세의 종료를 부모 프로세스에 알려준다.
-
약속된 상황이라고 보며 OS와 프로세스의 약속
-
특정 상황이 되었을때 운영체제가 프로스에게 해당 상황이 발생했 음을 알는 일종의 시지를 가리켜 시그널이라고 한다.
- SIGALRM alarm 함수 호출을 통해서 등록된 시간이 된 상황
- SIGINT CTRL + C가 입력된 상황
- SIGCHLD 자식 프로세스가 종료된 상황
- 특정 상황에서 운영체제로 부터 프로세스가 시그널을 받기 위해서 해당
상황에 대해서 등록의 과정을 거쳐야한다.
시그널이 등록되면 함께 등록되 함수의 호출을 통해서 운영체제는 시그널의 발생을 알린다.
시그널 함수와 다르게 표준함수이다.
- 처리
프로세스 기반 다중 접속 서버 모델
- 에코 서버(부모 프로세스)는 accept 함수 호출을 통해서 연결 요청을 수락한다.
- 이때 얻게 되는 소켓의 파일 디스크립터를 자식 프로세스를 생성해서 넘겨준다(복사한다).
- 자식 프로세스는 전달 받은 파일 디스크립터를 바탕으로 서비스를 제공한다.