티스토리 뷰

SoftWare/OS

OS - 3. Process(2)

White Whale 2016. 4. 10. 13:09
728x90

1. 프로세스 생성

• 프로세스는 새로운 프로세스를 생성할 수 있다. 생성한 프로세스를 부모프로세스 생성당한 프로세스를 자식 프로세스라하며 프로세스들은 트리를 만들어 연결된다.
• 운영체제는 프로세스를 pid에 의해 구분한다. pid 0에는 sched 프로세스가 있고 이 프로세스는 init, pageout, fsflush와 같은 프로세스들을 생성한다.
• 프로세스가 서브프로세스를 생성할 때 서브프로세스는 운영체제로부터 직접 자원을 얻거나, 혹은 부모프로세스 자원의 부분 집합을 사용한다.
• 부모 프로세스는 자원을 분할하여 자식들에게 나누어 주거나, 여러 자식들과 일부 자원을 공유할 수도 있다.
• 부모 프로세스와 자식 프로세스는 병렬로 실행될 수 있으며 부모는 자식이 죽을 때까지 기다린다.
• 자식 프로세스는 부모 프로세스의 복사본 일 수도 있고 독립적으로 새로운 프로그램을 가지고 있을 수도 있다.

 

2. 프로세스 생성과정

a. OS 커널에 PCB를 생성
b. 메모리 공간 할당
c. 이진 파일 적재
d. 프로그램 실행

fork()함수를 보면 fork() 호출 후 자식 프로세스는 exec()를 호출한다. exec()호출은 이진 파일을 메모리로 적재하고 적재된 프로그램을 실행한다.

 

3. 프로세스 종료

• 프로세스가 마지막 문장의 실행을 끝내고, exit 시스템 호출을 사용하여 운영체제에게 자신의 제거를 요청하면 종료된다.
• 종료시 프로세스의 모든 자원이 운영체제로 반납된다.
• 부모는 자식이 할당한 자원을 초가하거나 아무런 작업이 없으면 자식 프로세스를 죽일 수 있다.
• 부모가 죽었는데 자식이 살아있으면 운영체제가 해당 자식 프로세스들 모두를 죽인다. 이를 연속적 종료라고 부른다.

 

4. 프로세스 통신

• 프로세스가 시스템에서 실행 중인 다른 프로세스들에게 영향을 주거나 받지 않는다면 독립적인 프로세스이다. 반대는 상호 협력 프로세스이다.
• 프로세스가 통신을 하는 이유에는 정보공유, 계산 가속화, 모듈성, 편의성이다.
• 메시지 전달 모델은 충돌을 회피할 필요가 없기 때문에 적은 양의 데이터를 교환하는데 유용하다.
• 공유 메모리 모델은 속도가 빠르다.

 

5. 공유 메모리 시스템

• 공유메모리 영역은 공유 메모리 세그먼트를 생성하는 프로세스의 주소 공간에 위치한다.
• 통신하고자 하는 프로세스들은 세그먼트를 자신의 주소 공간에 추가해야한다.
• 무한 버퍼 : 제약이 없이 생상과 소비가 가능
• 유한 버퍼 : 비어져 있으면 소비가 불가하고 반대로 가득 차 있으면 생산이 불가능
• 공유 메모리가 읽기 전용이 아니라면 동기화를 해야함

 

6. 메시지 전달 시스템

• 버스와 네트워크로 다른 프로세스간 통신
• Naming -
직접 통신 : 통신시 송신자와 수신자가 명확이 정의되어 있어 두개의 프로세스간 통신만 할 수 있다.
• Naming - 간접 통신 : 메일박스라는 중간 개체를 만들어 메일박스끼리 통신을 한다. 프로세스들은 메일박스를 가질 수 있으며 여러 프로세스가 하나의 메일박스를 공유할 수 있다.
• 동기화 - 봉쇄형 송신 : 송신 후 수신자가 수신 받을 때 까지 대기
• 동기화 - 비 봉쇄형 송신 : 보내고 다음 함수 수행
• 동기화 - 봉쇄형 수신 : 메세지 올때까지 대기
• 동기화 - 비 봉쇄형 송신 : 다른 일 하다가 메시지 오면 수신
• 버퍼링 : 통신하는 프로세스들에 의해 교환되는 메시지는 임시 큐에 들어갈 수 있음
버퍼링 - 무용량 : 대기 공간이 0이라 송신자는 수신자가 메시지를 수신할 때까지 기다려야 한다. 

• 버퍼링 - 유한 용량 : 대기 공간이 가득 차기 전까지는 NonBlocking모드로 송신하다가 큐가 가득 차면 Bloking 모드로 변경해 수신을 기다린다.
버퍼링 - 무한 용량 : 상대가 수신을 하지 않아도 막 보낼 수 있다.

 

7. Socket

• Socket : 소켓은 네트워크로 연결되어 있는 프로세스간의 통신 기술이다. IP주소로 해당 디비이스를 찾고 port로 하여 해당 프로세스를 찾는다. 바이트 스트림을 전달하는 Low-Level 통신이다.

 

8. RPC

Remote Procedure Call의 약자로 원격 프로시저 호출은 별도의 원격제어를 위한 코딩없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스간 통신 기술이다.
RPC 시스템은 클라이언트 쪽에 스텁(stub)을 제공하여 통신을 하는데 필요한 정보를 숨겨 준다.
원격 프로시저마다 다른 스텁이 존재하고 클라이언트가 원격 프로시저를 호출하면 RPC가 원격프로시저에 맞는 스텁을 호출하고 필요한 매개변수를 건네준다.
 스텁은 프로시저에게 갈 매개변수를 네트워크로 전송하기위해 적절한 형태로 재구성하는데 이를 marshall이라고 한다.
통신하는 장비간 데이터 표현 방식이 다를 경우를 대비해 RCP는 중립적인 데이터 표현 방식을 제공하는데 그중하나가 XDR이다.

9. Pipes

파이프는 FIFO 버퍼를 가지고 있다.
보통의 파이프는 한방향 통신으로 하나의 프로세스는 생상자, 하나의 프로세스는 소비자가 된다.
지명 파이프는 양방향 통신이 가능하다.
보통의 파이프는 오직 프로세스들이 서로 통신하는 동안에만 존재 하지만 지명 파이프는 파일 시스템의 보통 파일처럼 존재한다.


'SoftWare > OS' 카테고리의 다른 글

OS - 5. CPU Scheduling (1)  (0) 2016.04.23
OS - 4. Thread  (0) 2016.04.10
OS - 3. Process(1)  (0) 2016.04.08
OS - 2. Operating System Structures(2)  (0) 2016.04.03
OS - 2. Operating System Structures(1)  (0) 2016.03.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함