ݺߣ

ݺߣShare a Scribd company logo
운영 체제 SIG
   로세스
로세스 개념

• 로세스
 • 로세스란 수행중인 프로그램을 말함.
 • 프로그램 카운터의 값과 처리기의 레지스터의 활동.


• 메모리 상의 로세스
 • 스택 : 함수의 매개 변수 복귀 주소, 지역 변수 저장.
 • 데이터 섹션 : 전역 변수 저장.
 • 힙 : 실행 중에 동적으로 할당되는 메모리.
로세스 개념

• 로세스 상태
 •   생성 (New) : 로세스가 생성 중이다.
 •   실행 (Running) : 명령어들이 실행 중이다.
 •   대기 (Waiting) : 로세스가 대기 중이다
 •   준비 완료 (Ready) : 로세스가 처리기에 할당되기를 기다린다.
 •   종료 (Terminated) : 로세스의 실행이 종료되었다.
로세스 개념

• 로세스 제어 블록 (PCB)
 • 로세스 상태 :
    New, Ready, Running, Waiting, Terminated
 • 프로그램 카운터 :
 • CPU 레지스터들 :
     Accumulator,
     Index,
     Stack,
     General purpose
      Condition code
로세스 개념

• 로세스 제어 블록
 • CPU 스케줄링 정보 :
    로세스 우선 순위, 스케줄 큐에 대한 포인터
    다른 스케줄 매개 변수들을 포함.
 • 메모리 관리 정보 :
    베이스 레지스터, 한계 레지스터의 값,
    페이지 테이블, 세그먼트 테이블 정보
 • 회계 정보 :
   CPU가 사용된 양, 시간, 계정 번호,
   로세스 번호.
 • 입/출력 상태 정보 :
   로세스에 할당된 입/출력 장치,
   열린 파일 리스트
로세스 스케줄링

• 스케줄링
 • 각 로세스에 주어진 우선 순위에 따라 어떤 순번으로 어떤 로세스를 얼마만큼
   작동시킬 것인가를 OS에서 제어하는 방법.


• 스케줄링 큐
 • Job queue : 시스템 안의 모든 로세스로 구성됨.
 • Ready queue : 주 메모리에 할당된 로세스들이 실행을 대기 함.
 • Device queue : 입출력 장치를 대기하는 로세스
로세스 스케줄링

• 스케줄링 큐
 • 로세스가 입/출력 요청을 하여 입/출력 큐에 넣어짐.
 • 로세스가 새로운 서브로세스를 생성하고 그 로세스의 종료를 기다림.
 • 로세스가 인터럽트의 결과에 의해 강제로 CPU로부터 제거되고, 준비 완료 큐에
   다시 놓임
로세스 스케줄링

• 스케줄러
 • 장기 스케줄러
    로세스들을 선택하여 실행하기 위해 메모리로 적재하는 기능.

 • 장기 스케줄러 특징
   실행 빈도 수가 적다.
   로세스를 생성하는 간격은 수 분이 될 수 있음.
   다중 프로그래밍의 정도를 제어한다.

 • 단기 스케줄러
   실행 준비가 완료되어 있는 로세스들 중에서 선택하여 하나를 CPU에 할당.

 • 단기 스케줄러 특징
   실행간격이 짧다.
로세스 스케줄링

• 중기 스케줄러
 • UNIX와 Microsoft Windows 시분할 시스템들은 장기 스케줄러가 없다.
 • 몇몇의 메모리에서 로세스를 중단하여 다중프로그래밍의 정도를 완화함.
로세스 스케줄링

• 문맥 교환
 • CPU를 다른 로세스로 교환하기 위해서 이전의 로세스의 상태를 보관하고 새
   로운 로세스 실행한다.


• 문맥 교환 과정
 • 커널 : 과거 프로세서의 문맥을 PCB에 저장
 • 수행이 스케줄된 새로운 로세스의 저장된 문맥을 복구한다.


• 문맥 교환 특징
 • 문맥 교환 시간은 순수한 오버헤드
 • 속도 결정 요소 : 메모리 속도, 레지스터의 수, 특수 명령어
 • 하드웨어 지원에 따라 시간이 크게 좌우된다.
로세스에 대한 연산

• 로세스
 • 대부분 시스템 내의 로세스들은 병행 수행될 수 있다.
 • 반드시 동적으로 생성되고 제거 되어야 한다.


• 로세스 생성
 • 부모 클래스
 • 자식 클래스



 ◈ pid : 로세스 식별자
로세스에 대한 연산

• 로세스 생성
 • 부모가 계속해서 자식과 병렬로 실행된다.
 • 부모가 모든 자식 또는 일부 자식이 끝날 때까지 기다린다.


• 로세스 생성 (주소 공간 측면)
 • 자식 로세스는 부모 로세스의 복사본이다.
   (자식 로세스는 부모와 똑같은 프로그램과 자료를 가진다)
 • 자식 로세스가 자신에게 적재될 새로운 프로그램을 갖고 있다.
로세스에 대한 연산

• UNIX 로세스 생성.
로세스에 대한 연산

• 로세스 종료
 • exit() 시스템 호출


• 로세스 종료
 • 자식 로세스가 자신에게 할당된 자원을 초과하여 사용할 때
 • 자식 로세스에게 할당된 태스크가 더 이상 필요 없을 때
 • 부모가 종료하는데 운영체제는 부모가 종료한 후에 자식이 수행을 계속하는 것을
   허용하지 않는 경우
로세스간 통신

• 독립적인 로세스
 • 실행중인 다른 로세스들에게 영향을 주거나 받지 않는다.


• 협력적인 로세스
 • Information sharing
    여러 사용자가 동일한 정보를 병행적으로 접근할 수 있는 환경을 제공해야 함.
 • Computation speedup
    특정 태스크를 빨리 실행하기 위해 그것을 서브 태스크로 나누어 병렬로 실행 함.
 • Modularity
     시스템 기능을 별도의 로세스들 또는 쓰레드들로 나누어 시스템을 구성 함.
 • Convenience
    개별 사용자들이 한 순간에 작업할 많은 태스크를 가짐.
로세스간 통신

• 로세스 통신
 • 공유 메모리 (shared memory)
 • 메시지 전달 (message passing)
로세스간 통신

• 메시지 전달 시스템
 • 동일한 주소 공간을 공유하지 않음.
 • 분산환경에서 특히 유용함.


• 직접 통신 (대칭)
 •   send (P, message) – 로세스 P에게 메시지를 전송한다.
 •   Receive(Q, message) – 로세스 Q로부터 메시지를 수신한다.
 •   로세스들 사이에 연결이 자동적 구축.
 •   연결은 두 로세스들 사이에만 연관됨.
 •   통신하는 로세스들의 각 쌍 사이에는 정확하게 하나의 연결이 존재해야 함.


• 직접 통신 (비대칭)
 • send (P, message) – 로세스 P에게 메시지를 전송한다.
 • Receive(Q, message) – 임의의 로세스로부터 메시지를 수신한다.
로세스간 통신

• 메시지 전달 시스템 단점
 • 로세스 정의 즉 이름에 제한됨.


• 간접 통신
 •   메시지들을 메일박스 또는 포트로 송신 또는 수신된다.
 •   send (A, message) – 메시지를 메일박스로 송신한다.
 •   receive(A, message) – 메시지를 메일 박스 A로부터 수신한다.
 •   연결은 이들 로세스가 공유 메일 박스를 가질 때만 구축된다.
 •   연결은 두 개 이상의 로세스들과 연관될 수 있다.
 •   다수의 로세스가 서로 연결될 수 있다.
로세스간 통신

• 동기화
 •   봉쇄형 보내기
 •   비봉쇄형 보내기
 •   봉쇄형 받기
 •   비봉쇄형 받기


• 버퍼링
 • 무 용량
 • 유한 용량
 • 무한 용량
클라이언트 서버 환경에서 통신

• 소켓
 • IP 주소와 포트 번호 두 가지를 접합해서 구별함.


• 클라이언트 – 서버 구조
 • 요청이 수신되면 서버는 클라이언트 소켓으로부터 연결 요청을 수락함으로써
   연결이 완성됨.
클라이언트 서버 환경에서 통신

• 원격 프로시저 호출
 • 컴퓨터 프로그램이 다른 주소 공간에서 원격 제어를 위한 프로그래머의 세세한
   코딩 없이 함수나 프로시저의 실행을 허용하는 기술이다.


• 문제점
 • 클라이언트와 서버의 자료 표현 방식이 다른 경우 -> XDR 형태로 통일
 • RPC 경우는 네트워크 오류 때문에 실패할 수 있고 메시지가 중복되어 호출이 여러
   번 수행될 수도 있다.
 • 클라이언트와 서버간의 통신 문제.
클라이언트 서버 환경에서 통신

• 원격 메소드 호출
 • Java가 제공하는 RPC 기능.


• 차이점
 • RPC는 절차적 프로그래밍.
 • RMI는 객체 기반 프로그래밍

More Related Content

운영 체제 Sig

  • 1. 운영 체제 SIG 로세스
  • 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. 로세스에 대한 연산 • 로세스 생성 • 부모가 계속해서 자식과 병렬로 실행된다. • 부모가 모든 자식 또는 일부 자식이 끝날 때까지 기다린다. • 로세스 생성 (주소 공간 측면) • 자식 로세스는 부모 로세스의 복사본이다. (자식 로세스는 부모와 똑같은 프로그램과 자료를 가진다) • 자식 로세스가 자신에게 적재될 새로운 프로그램을 갖고 있다.
  • 13. 로세스에 대한 연산 • UNIX 로세스 생성.
  • 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는 객체 기반 프로그래밍