2. 로세스 개념
• 로세스
• 로세스란 수행중인 프로그램을 말함.
• 프로그램 카운터의 값과 처리기의 레지스터의 활동.
• 메모리 상의 로세스
• 스택 : 함수의 매개 변수 복귀 주소, 지역 변수 저장.
• 데이터 섹션 : 전역 변수 저장.
• 힙 : 실행 중에 동적으로 할당되는 메모리.
3. 로세스 개념
• 로세스 상태
• 생성 (New) : 로세스가 생성 중이다.
• 실행 (Running) : 명령어들이 실행 중이다.
• 대기 (Waiting) : 로세스가 대기 중이다
• 준비 완료 (Ready) : 로세스가 처리기에 할당되기를 기다린다.
• 종료 (Terminated) : 로세스의 실행이 종료되었다.
4. 로세스 개념
• 로세스 제어 블록 (PCB)
• 로세스 상태 :
New, Ready, Running, Waiting, Terminated
• 프로그램 카운터 :
• CPU 레지스터들 :
Accumulator,
Index,
Stack,
General purpose
Condition code
5. 로세스 개념
• 로세스 제어 블록
• CPU 스케줄링 정보 :
로세스 우선 순위, 스케줄 큐에 대한 포인터
다른 스케줄 매개 변수들을 포함.
• 메모리 관리 정보 :
베이스 레지스터, 한계 레지스터의 값,
페이지 테이블, 세그먼트 테이블 정보
• 회계 정보 :
CPU가 사용된 양, 시간, 계정 번호,
로세스 번호.
• 입/출력 상태 정보 :
로세스에 할당된 입/출력 장치,
열린 파일 리스트
6. 로세스 스케줄링
• 스케줄링
• 각 로세스에 주어진 우선 순위에 따라 어떤 순번으로 어떤 로세스를 얼마만큼
작동시킬 것인가를 OS에서 제어하는 방법.
• 스케줄링 큐
• Job queue : 시스템 안의 모든 로세스로 구성됨.
• Ready queue : 주 메모리에 할당된 로세스들이 실행을 대기 함.
• Device queue : 입출력 장치를 대기하는 로세스
7. 로세스 스케줄링
• 스케줄링 큐
• 로세스가 입/출력 요청을 하여 입/출력 큐에 넣어짐.
• 로세스가 새로운 서브로세스를 생성하고 그 로세스의 종료를 기다림.
• 로세스가 인터럽트의 결과에 의해 강제로 CPU로부터 제거되고, 준비 완료 큐에
다시 놓임
8. 로세스 스케줄링
• 스케줄러
• 장기 스케줄러
로세스들을 선택하여 실행하기 위해 메모리로 적재하는 기능.
• 장기 스케줄러 특징
실행 빈도 수가 적다.
로세스를 생성하는 간격은 수 분이 될 수 있음.
다중 프로그래밍의 정도를 제어한다.
• 단기 스케줄러
실행 준비가 완료되어 있는 로세스들 중에서 선택하여 하나를 CPU에 할당.
• 단기 스케줄러 특징
실행간격이 짧다.
9. 로세스 스케줄링
• 중기 스케줄러
• UNIX와 Microsoft Windows 시분할 시스템들은 장기 스케줄러가 없다.
• 몇몇의 메모리에서 로세스를 중단하여 다중프로그래밍의 정도를 완화함.
10. 로세스 스케줄링
• 문맥 교환
• CPU를 다른 로세스로 교환하기 위해서 이전의 로세스의 상태를 보관하고 새
로운 로세스 실행한다.
• 문맥 교환 과정
• 커널 : 과거 프로세서의 문맥을 PCB에 저장
• 수행이 스케줄된 새로운 로세스의 저장된 문맥을 복구한다.
• 문맥 교환 특징
• 문맥 교환 시간은 순수한 오버헤드
• 속도 결정 요소 : 메모리 속도, 레지스터의 수, 특수 명령어
• 하드웨어 지원에 따라 시간이 크게 좌우된다.
11. 로세스에 대한 연산
• 로세스
• 대부분 시스템 내의 로세스들은 병행 수행될 수 있다.
• 반드시 동적으로 생성되고 제거 되어야 한다.
• 로세스 생성
• 부모 클래스
• 자식 클래스
◈ pid : 로세스 식별자
12. 로세스에 대한 연산
• 로세스 생성
• 부모가 계속해서 자식과 병렬로 실행된다.
• 부모가 모든 자식 또는 일부 자식이 끝날 때까지 기다린다.
• 로세스 생성 (주소 공간 측면)
• 자식 로세스는 부모 로세스의 복사본이다.
(자식 로세스는 부모와 똑같은 프로그램과 자료를 가진다)
• 자식 로세스가 자신에게 적재될 새로운 프로그램을 갖고 있다.
14. 로세스에 대한 연산
• 로세스 종료
• exit() 시스템 호출
• 로세스 종료
• 자식 로세스가 자신에게 할당된 자원을 초과하여 사용할 때
• 자식 로세스에게 할당된 태스크가 더 이상 필요 없을 때
• 부모가 종료하는데 운영체제는 부모가 종료한 후에 자식이 수행을 계속하는 것을
허용하지 않는 경우
15. 로세스간 통신
• 독립적인 로세스
• 실행중인 다른 로세스들에게 영향을 주거나 받지 않는다.
• 협력적인 로세스
• Information sharing
여러 사용자가 동일한 정보를 병행적으로 접근할 수 있는 환경을 제공해야 함.
• Computation speedup
특정 태스크를 빨리 실행하기 위해 그것을 서브 태스크로 나누어 병렬로 실행 함.
• Modularity
시스템 기능을 별도의 로세스들 또는 쓰레드들로 나누어 시스템을 구성 함.
• Convenience
개별 사용자들이 한 순간에 작업할 많은 태스크를 가짐.
16. 로세스간 통신
• 로세스 통신
• 공유 메모리 (shared memory)
• 메시지 전달 (message passing)
17. 로세스간 통신
• 메시지 전달 시스템
• 동일한 주소 공간을 공유하지 않음.
• 분산환경에서 특히 유용함.
• 직접 통신 (대칭)
• send (P, message) – 로세스 P에게 메시지를 전송한다.
• Receive(Q, message) – 로세스 Q로부터 메시지를 수신한다.
• 로세스들 사이에 연결이 자동적 구축.
• 연결은 두 로세스들 사이에만 연관됨.
• 통신하는 로세스들의 각 쌍 사이에는 정확하게 하나의 연결이 존재해야 함.
• 직접 통신 (비대칭)
• send (P, message) – 로세스 P에게 메시지를 전송한다.
• Receive(Q, message) – 임의의 로세스로부터 메시지를 수신한다.
18. 로세스간 통신
• 메시지 전달 시스템 단점
• 로세스 정의 즉 이름에 제한됨.
• 간접 통신
• 메시지들을 메일박스 또는 포트로 송신 또는 수신된다.
• send (A, message) – 메시지를 메일박스로 송신한다.
• receive(A, message) – 메시지를 메일 박스 A로부터 수신한다.
• 연결은 이들 로세스가 공유 메일 박스를 가질 때만 구축된다.
• 연결은 두 개 이상의 로세스들과 연관될 수 있다.
• 다수의 로세스가 서로 연결될 수 있다.
19. 로세스간 통신
• 동기화
• 봉쇄형 보내기
• 비봉쇄형 보내기
• 봉쇄형 받기
• 비봉쇄형 받기
• 버퍼링
• 무 용량
• 유한 용량
• 무한 용량
20. 클라이언트 서버 환경에서 통신
• 소켓
• IP 주소와 포트 번호 두 가지를 접합해서 구별함.
• 클라이언트 – 서버 구조
• 요청이 수신되면 서버는 클라이언트 소켓으로부터 연결 요청을 수락함으로써
연결이 완성됨.
21. 클라이언트 서버 환경에서 통신
• 원격 프로시저 호출
• 컴퓨터 프로그램이 다른 주소 공간에서 원격 제어를 위한 프로그래머의 세세한
코딩 없이 함수나 프로시저의 실행을 허용하는 기술이다.
• 문제점
• 클라이언트와 서버의 자료 표현 방식이 다른 경우 -> XDR 형태로 통일
• RPC 경우는 네트워크 오류 때문에 실패할 수 있고 메시지가 중복되어 호출이 여러
번 수행될 수도 있다.
• 클라이언트와 서버간의 통신 문제.
22. 클라이언트 서버 환경에서 통신
• 원격 메소드 호출
• Java가 제공하는 RPC 기능.
• 차이점
• RPC는 절차적 프로그래밍.
• RMI는 객체 기반 프로그래밍