[OS] Chapter.4 프로세스

Computer/OS | 2006/07/06 08:59 | adioshun
Process Concept

- 프로세스란? : 실행되어지고 있는 한 프로그램

- 프로세스가 포함하는것들

  ㅁ 프로그램 코드

   ㅁ 프로그램 카운터

  ㅁ 스텍[임시변수]

  ㅁ 데이터섹션[전역변수] or PCB

- 프로그램 : 수동적인 존재

- 프로세스 : 능동적인 존재


Process State

- 프로세스는 실행되면서 그 상태가 변한다.

  ㅁ new : 프로세스가 처음 만들어질때

  ㅁ running : 명령들이 실행될때

ㅁ waiting : 프로세스가 I/O 또는 signal을 기다릴때

ㅁ ready : 프로세스가 cpu를 쓸수 있기를 기다릴대

  ㅁ terminated : 종류되었을때


Diagram of Process State




Process Control Block (PCB)

- 각 프로세스에 맞게 연관된 정보를 가지고 있음

  ㅁ 프로세스 상태 : 상태!!!

  ㅁ 프로그램 카운터 : 명령어 주소

  ㅁ cpu 레지스터 : 누산기, 인덱스레지스터, 스텍레지스터, 범용레지스터, 상태코드 정보가 포함

  ㅁ cpu 스케쥴링 정보 : 스케쥴 정보

  ㅁ 메모리 관리 정보 : 기준, 한계 메모리 정보

  ㅁ 회계 정보 : 사용된 시간, 시간제한, 계정 번호, 프로세스 번호등

  ㅁ 입/출력 상태정보 : 허용된 I/O장치 , 열린 파일목록


Process Scheduling

- 스케쥴링 큐

  ㅁ 잡큐 : 시스템 내의 모든 프로세스들이 들어감

   ㅁ 준비안료 큐 : 메인메모리에 존재하며 ready또는 waiting상태에서 실행을 기다리는 프로세스들이 들어감

   ㅁ 장치 큐 : I/O device를 기다리는 프로세스들이 들어감

- 프로세스들은 이 다양한 큐들을 이동해 다닌다.


Schedulers

- 장기 스케쥴러(또는 잡 스케줄러)

ㅁ 어떤 프로세스가 ready queue에 들어갈지 고른다.

  ㅁ 자주 들락 날락 하기 때문에 빨라야 한다.

- 단기 스케줄러(또는 CPU 스케줄러)

ㅁ 어떤 프로세스가 다음에 실행될지 와 CPU에 배정될지 고른다.

  ㅁ 그다지 자주 들락 날락 안하기 때문에 좀 느려도 된다.

  ㅁ 메모리에 있는 프로세스들의 수를 제어한다.(다중 프로그램의 정도)(degree of multiproramming)

- 2가지 프로세스로의 구분

  ㅁ I/O 기반의 프로세스 : IO를 더많이하고 CPU별루 차지 않함

  ㅁ CPU 기반의 프로세스 : 위에꺼하고 반대!


Context Switch

- CPU를 다른 프로세스로 교환하려면 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 보관된 상태를 적재하는 작업

- Context Switch시간은 순수한 overhead이다. : 그동안 시스템이 아무런 유용한 일을 못하기에

- 하드웨어 지원에 따라 Context Switch 시간이 다르다.


Process Creation

- 프로세스는 프로세스를 낳을수 있고 그 프로세스는 다시 프로세스를 낳을수 있다~그래서 TREE를 형성한다~

- 자원공유

  1. 부모와 자식은 모든 자원을 공유한다.

  2. 자식은 부모의 자원중 일부분을 공유한다.

  3. 부모와 자식은 자원을 전혀 공유하지 않는다.

- 실행

  1. 부모가 계속해서 자식과 병렬로 실해된다.

  2. 부모가 모든 자식 또는 일부 자식이 끝날 때까지 기다린다.

- 주소공간

  1. 자식은 부모의 복사본이다.

  2. 자식은 그것에게 적제될 프로그램을 가진다.

- UNIX 예제

  1. fork()로 자식을 생성(똑같으 생긴것을 다른 주소공간에 복사해버림)

  2. execl()로 자식의 프로그램(부모)를 없에고 다른 프로그램을 탑제


Process Termination

- 프로세스가 마지막 문장을 실행하고 OS에게 exit()문의 실행을 결정하기를 요청한다.

  ㅁ 부모에서 자식으로 wait시스템을 통해 데이터를 출력한다.

  ㅁ 프로세스의 자원들은 OS에 의해 반환된다.

- 부모는 abort()를 통해 자식의 실행을 중지 시킬수있다.

  ㅁ 자식이 배정된 자원을 초과할때

  ㅁ 자식에게 배정된 일이 더이상 필요없을때

  ㅁ 부모가 끝날때

     ㅇ OS가 부모가 끝났을때 더이상 자식들의 실행을 허용하지 않을때(cascade termination)


Cooperating Processes

- 독립적인 프로세스 : 다른 프로세스에 영향을 주지도 받지도 않는 프로세스

- 협력적인 프로세스 : 다른 프로세스에 영향을 주고 받는 프로세스

- 프로세스 협력의 이익

  ㅁ 정보 공유 : 여러사용자가 같은 자료를 원할수 있기에 좋아~

  ㅁ 계산 가속화 : 병렬로 실행 하게 되면 빨라 단!(cpu또는 I/O채널들이 복수일때 가능)

  ㅁ 모듈성 : 모듈형 시스템을 구성하기를 원할때가 있으므로

  ㅁ 편의성 : 사용자가 많은 테스크를 가질때


Producer-Comsumer Problem

- 버퍼가 무한하면 생산자는 생산하고 싶을 때 소비자는 소비 하고 싶을때 하면 됨

- 버퍼가 유한하면 생산자는 버퍼가 가득차면 생산중지, 소비자는 버퍼가 텅텅비면 반드시 소비중지

((in % BUFFER) == out) : 꽉참

(in == out) : 텅텅빔


Interprocess Communication(IPC)

- 프로세스들이 BUFFER없이 통신과 그들의 동작을 동기화 할수 있도록 하는 기법

- Message-passing System : 프로세스들이 shared memory없이 통신한다.

- IPC는 2가지 편리한 조작을 제공한다.

  ㅁ send(message)

  ㅁ receive(message)

- P와 Q가 통시하기 원하면 그들은

  ㅁ 통신 연결(communication link)가 설정되야 하고

  ㅁ 메시지 교환이 send/receive를 통해 이루어 진다.

      - 이것들의 논리적인 구현에는 다양한 방법이 있다.

          ㅇ 직접 또는 간접 통신(Direct, Indirect communication)

          ㅇ 대칭 또는 비대칭 통신

          ㅇ 자동 또는 명시적 버퍼링

          ㅇ 복사에 의한 전송 또는 참조에 의한 전송

          ㅇ 고정 길이 또는 가변 길이 메시지


통신을 원하는 프로세스들은 서로를 가리킬 수 있는 방법이 있어야 하는데 이들은 가접, 직접 통신을 사용할 수 있다.


Direct Communication(직접 통신)

- 프로세스는 반드시 각각의 이름을 명백히 해야한다.

  ㅁ send(P, message) - P에게 메시지를 보냄

  ㅁ receive(Q, message) - Q로 부터온 메시지를 받음

- 직접통신의 연결 특성

  ㅁ 연결은 정확히 2프로세스 사이에서만 연관된다.

   ㅁ 두 프로세스 사이에는 반드시 하나의 연결이 존제한다.

   ㅁ 보통 양방향 통신이다.

- 대칭, 비대칭통신은 받을때 프로세스 이름이 필요없으나 프로세스 이름이 바뀌면 "구리다"


Indirect Communication(간접통신)

- 메세지들은 메일박스에 의해 송수신된다.

  ㅁ 각 메일박스는 유일한 ID를 가진다.

  ㅁ 메일박스를 공유할때 프로세스들은 통신되어진다.

- 간접통신의 연결 특성

  ㅁ 링크 하나는 많은 프로세스와 연관되어진다.

  ㅁ 각 쌍의 프로세스들은 여러 링크를 공유한다.

  ㅁ 링크는 양방향 또는 단방향이다.

- 실행순서

  1. 메일박스 생성

  2. 메일박스를 통해 송,수신

  3. 메일박스 파괴

- 형태

  ㅁ send(A, message) : 메일박스 A로 메시지 전송

  ㅁ receive(A, message) : 메일박스 A로 부터 메시지 송신

- 메일박스 공유

  ㅁ P1,P2,P3가 메일박스를 공유한다.

  ㅁ P1은 send하고 P2,P3는 receive한다.

  ㅁ receive를 누가 할것인가?

       - 하나의 링크가 최대 두개의 프로세스와 연관되도록 한다.

       - receive연산을 한순에 단지 한개의 프로세스만 허용한되

       - 시스템이 receiver를 선택하도록 한다.

          송신자는 수신자를 알수있다.


Synchronization(동기화)

- 메시지 전송은 blocking과 non-blocking이 있다.

- blocking은 동기화가 고려되어진다.

- non-blocking은 비동기화가 고려되어진다.

- send 그리고 receive방식은 blocking, non-blocking 다 된다.


Buffering(버퍼링)

- 메시지는 큐에 첨부되어있다.

  ㅁ 무용량큐 : 큐의 길이가 0, Sender는 Receiver에 의해 꼭 기다려야한다.(랑데뷰)

  ㅁ 유한용량큐 : 큐의 길이가 n, Sender는 큐가 가득차있으면 기다려야한다.

  ㅁ 무한용량큐 : 큐의 길이가 무한데, Sender는 기다리지 않고 계속 보낸다.


Client-Sever Communication

- 소켓

- Remote Procedure Calls(RPC)

- Remote Method Invocation(Java)


소켓

- 소켓은 통신의 endpoint를 뜻한다(전시소켓이 전기의 endpoint인것처럼)

- 소켓ID는 IP 주소와 포트의 연결이다.

- 321.321.321.312:1111 은 321.321.321.312 IP의 포트 1111을 뜻함

- 통신은 한쌍의 소켓으로 생각되어진다.


Remote Procesure Calls(RPC)

- RPC는 네트워크에 연결되어 있는 두 시스템 사이를 procedure call(순차적 부름)로 통신할수 있도록 해준다.

- Stub : 서버에서 클라이언트 측 의 요청을 대리해주는것.

- 클라이언트측 stub는 서버의 위치를 알아내고(port번호) 파마메터를 marshalls 한다.

  ㅁ 파라메터 marshalling이란 procedure에게 갈 파라미터를 네트워크로 전송하기 위해 적절한 형태로 재구성하는 작업

- 서버측 stub는 메시지를 받는다(포장되지 않은 marshalll된 파라메터), 그리고 서버에 있는procedure 를 실행


Remote Method Invocation

- RMI는 자바가 제공하는 RPC 메카니즘이다.

- RMI는 한 머신 위에있는 자바 프로그램을 허용한다. 호출하기 위해 한방법 remote object를

- RMI는 쓰레드(한 머신위에 있는 자바 프로그램)로 하여금 remote object에 있는 메소드를 호출할 수 있게 해준다.

2006/07/06 08:59 2006/07/06 08:59
Trackback address :: http://4ellene.net/tt/trackback/958

Comments List

  1. nude males 2008/05/23 05:25

  2. mass lady nudes 2008/05/23 06:02

  3. black high hill boots 2008/05/23 07:11

  4. teen beding 2008/05/24 00:53

Write a comment.

[로그인][오픈아이디란?]