2013년 7월 17일 수요일






프로세스
수행중인 프로그램으로 함수의 매개변수 복귀주소와 지역 변수 등을 가지는 스택과 전역변수를 기록하는 데이터 섹션을 포함하며, 실행중 동적으로 할당되는 힙을 가진다.

프로세스 상태
new , Running, Waiting, Ready, Terminated




프로세스 제어 블록(Process Cotrol Block, PCB)
- 프로세스 상태
- 프로그램 카운터 : 다음 실행할 명령어 주소를 가르킴 
- CPU 레지스터들 : 누산기, 색인 레지스터, 스택레지스터, 범용 레지스터, 상태코드
- CPU 스케줄링 정보 : 프로세스 우선순위, 스케줄 큐, 다른 스케줄을 매개변수 
- 메모리 관리 정보 : 베이스 레지스터와한계 레지스터의 값, 페이지 테이블, 세그먼트 테이블
- 회계정보 : CPU가 사용된 양, 사용 시간, 시간 제한, 계정 번호 등 
- 입/출력 상태 정보 : 입출력 장치들과 열린 파일의 리스트


프로세스 스케줄러(Process Scheduling) 
- CPU에서 수행 가능한 여러 프로세스들 중에서 하나의 프로세스를 선택



스케줄링 큐(Scheduling Queue) 
- 작업 큐 : 프로세스가 시스템에 들어오면 유지 
- 준비 완료 큐 : 실행 대기 중인 프로세스들이 유지
- 장치 큐 : 입/출력 장치들이 대기하는 프로세스 리스트

스케줄러(Scheduler) 
- 장기 스케줄러 : 풀에서 프로세스들을 선택하여 실행하기 위해 메모리로 적재 
- 단기 스케줄러 : 실행 준비 완료 된 프로세스중 하나를 선택하여 CPU에 할당 
- 중기 스케줄러 : 메모리에서 프로세스를 제거한 후 다시 불러와 중단지점부터 재실행



문맥교환(Context Switch) : 인터럽트가 발생하면 문맥(CPU레지스터 값, 프로세스 상태, 메모리 관리 정보)을 저장해 두었다가 인터럽트 수행 후 다시 재개한다. 이처럼 이전 프로세스의 상태를 보관하고 새로운 프로세스의 보관된 상태를 복구하는 작업을 문맥교환이라 한다. 문맥교환은 순수한 오버헤드 시간이다.



프로세스에 대한 연산 


- 프로세스 생성 : 생성하는 프로세스를 부모, 새로운 프로세스를 자식이라 한다. 이들은 각각 새로운 프로세스를 생성하여 프로세스의 트리를 형성한다. 대 부분의 OS는 프로세스 식별자(pid)(정수값)로 식별한다. 프로세스가 테스크를 달성하려면 자원이 필요한데, 서브 프로세스는 운영체제나 부모로부터 자원을 할당받는다.

- 프로세스의 종료 : exit()를 호출하여 OS에 삭제를 요청한다. 부모프로세스가 종료 후 자식프로세스는 연속적으로 종료된다.



프로세스간 통신(Interprocess Communication, IPC) 

- 공유 메모리 : 공유되는 메모리를 구축하여 그 영역에 자료를 읽고 써서 정보를 교환한다. 
- 메시지 전달 : 동일한 주소 공간을 공유하지 않고도 프로세스들이 통신하고 그 동작을 동기화 하는 기법을 제공

ex) Win XP : XP는 두 프로세스간의 연결을 구축 및 유지하기 위해 포트(연결,통신 포트) 객체를 사용한다. 

통신 동작
->클라이언트가 서브시스템의 연결 포트 객체를 위해 핸들을 연다
-> 클라이언트가 연결 요청을 보낸다
-> 서버가 두개의 통신 포트를 생성하고 클라이언트에게 그 중 하나에 대한 핸들을 반환한다.
-> 클라이언트와 서버는 해당 포트 핸들을 사용하여 메시지나 콜백을 보내 답을 듣는다. 



클라이언트 서버 환경에서 통신(Communication in Client-Server Syste) 

- 소켓(Socket) : java는 3종류의 소켓을 제공한다. 연결기반(TCP) 소켓 클래스 사용 / 비연결성(UDP) DatagramSocket 사용 / Multicast DatagramSocket의 서브 클래스 

- 원격프로시저 호출(RPC) : 네트워크에 연결된 두 시스템 사이의 통신을 위해 프로시저 호출을 위해 설계. RPC 통신에서 전달되는 메시지는 구조화되었으며, 함수의 식별자, 매개변수가 담겨있다. 

- 원격 메소드 호출(Remote Method Invocation, RMI) : 스레드로 하여금 원격 객체에 있는 메소드를 호출할 수 있게 해준다.

cf) RMI와 RPC의 차이 
- RPC는 절차적 프로그래밍 방식으로 원격 객체의 메소드 호출을 지원 - RPC의 매개변수는 일반적 자료 구조 이지만 RMI는 매개변수로 객체 자체를 전달해 준다.

0 개의 댓글:

댓글 쓰기