컴퓨터 공학

운영체제 3장

혼새미로 2015. 11. 26. 04:00
반응형
  • 3. 프로세스
  • 3.1 프로세스의 개념
  • 3.1.1 프로세스
  • 프로세스는 실행중인 프로그램이다.
  • - 프로그램 카운터 값과 처리기 레지스터의 내용으로 대표되는 핸져활동을 포함한다.
  • - 일반적으로 함수의 매개변수, 복귀주소와 로컬변수와 같은 임시적인 자료를 가지는 프로세스 스택과 전역변수들을 수록하는 데이터섹션을 포함한다
  • - 프로세스 실행중에 동적으로 할당되는 메모리인 힙을 포함한다.
  • 프로그램 : 명령어 리스트를 내용으로 가진 디스크에 저장된 파일과 같은 수동적인 존재(passive entity)
  • 프로세스 : 다음에 실행할 명령어를 지정하는 프로그램 카운터 및 관련된 자원의 집합을 가진 능동적인 존재(active entity)
  • 프로세스를 생성하는 과정에서 많은 프로세서들을 생성하는 것이 보통이다
  • 3.1.2 프로세스 상태(process state)
  • 프로세스의 상태(process state)
  • -new : 프로세서가 생성중이다.
  • -running : 명령어들이 실행중이다
  • -waiting : 프로세스가 어떤 사건이 일어나기를 기다린다.
  • -ready : 프로세스가 할당되기를 기다린다.
  • -terminated : 프로세스가 실행을 종료한다.
  • 3.1.3 프로세스 제어블록(process control block)
  • PCB는 특정 프로세서와 연관된 여러 정보를 수록하며, 다음과 같은 것들이 포함된다.
  • - 프로세서 상태: 상태는 new, ready, running, waiting, halted 등이 있다.
  • - 프로그램카운터 : 프로그램 카운터는 이 프로세스가 다음에 실행할 명령어의 주소를 가리킨다.
  • - cpu레지스터 : 컴퓨터의 구조에 따라 다양한 개수와 타입을 가진다. 레지스터에는 누산기(accumulator), 인덱스 레지스터, 스택 레지스터, 범용 레지스터들과 상태코드정보가 포함된다. 이 상태 정보는 인터럽트 발생시 프로그램 카운터와 함께 저장되어야 한다. 인터럽트 처리후 프로세스가 중단 지점으로부터 올바르게 실행할 수 있게 한다.
  • - cpu-스케줄링 정보: 이 정보는 프로세스 우선순위, 스케줄 큐에 대한 포인터와 다른 스케줄 매개변수들을 포함한다.
  • - 메모리 관리 정보: 이 정보는 운영체제가 지원하는 메모리 시스템에 따라 기준(base) 레지스터와 한계(limit) 레지스터의 값, 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함한다.
  • - 회계(accounting) 정보 : 이 정보는 cpu가 사용된 양과 사용된 실제시간, 시간제한, 계정 번호, 잡 또는 프로세스 번호등을 포함한다.
  • - 입출력 상태 정보 : 이 정보는 이 프로세스에 할당된 이 프로세스에 할당된 입출력 장치들과 열린파일의 목록등을 포함한다.
  • 3.1.4 스레드
  • 하나의 제어쓰레드는 프로세서로 하여금 한번에 단지 한가지일만 실행할 수 있게 한다.
  • 3.2 프로세스 스케줄링
  • 3.2.1 스케줄링 큐
  • 프로세스가 시스템에 들어오면 이들은 잡큐에 놓여진다.
  • 준비완료 상태에서 실행을 대기하는 프로세스들은 준비완료 큐(ready queue)라 불리는 리스트 상에 유지된다.
  • 장치큐(device queue) : 특정 입출력 장치를 대기하는 프로세스들의 리스트
  • 큐잉도표(queueing diagram)
  • 프로세스에 cpu가 할당되어 실행되면 다음 여러가지 사건들 중 하나가 발생할 수 있다
  • -프로세스가 입출력을 요청하여 입출력 큐에 넣어질 수 있다
  • -프로세스가 인터럽트의 결과에 따라 강제로 cpu로부터 제거되어 준비완료 큐에 다시 놓일 수 있다.
  • 3.2.2 스케줄러
  • 프로세스는 일생동안 다양한 스케줄링 큐들 사이를 이주한다.
  • 장기스케줄러는(잡스케줄러) 풀에서 프로세스들을 선택하여 실행하기 위해 메모리로 적재한다.
  • 단기스케줄러(cpu스케줄러)는 실행 준비가 완료되어있는 프로세스들 중에서 선택하며 이들중 하나에게 cpu를 할당한다.
  • 실행간격이 짧기때문에 단기스케줄러는 반드시 매우 빨라야 한다.
  • 장기스케줄러는 다중프로그램의 정도를 제어한다.
  • 입출력 중심프로세스는 연산보다 입출력실행에 더 많은 시간을 소요하는 프로세스이다.
  • cpu중심 프로세스는 입출력 중심프로세스보다 연산시간을 더 소요하여 입출력 요청을 드물게 발생시키는 프로세스이다.
  • 장기스케줄러는 입출력중심과 cpu중심 프로세스들이 적절히 혼합되도록 선택해야 한다.
  • 중기스케줄러(medium-term scheduler)의 핵심 아이디어는 메모리에서 프로세스를 제어하여 다중프로그래밍 정도를 완하하는것이다.
  • 스와핑 : 차후에 다시 프로세스를 메모리로 불러와서 중단되었던 지점에서부터 실행을 재개하는 기법
  • 3.2.3 문맥교환(context switch)
  • cpu를 다른 프로세스로 교환하려면 현재 프로세스의 상태를 저장하고 다른 프로세스의 저장된 상태를 복구하는 작업
  • 문맥교환이 일어나면 커널은 과거 프로세스의 문맥을 PCB에 저장하고, 스케줄된 새로운 프로세스의 저장된 문맥을 복구한다.
  • 문맥교환이 진행될 동안 시스템이 아무런 유용한 일을 못하기 때문에 문맥교환시간은 순수한 오버헤드이다.
  • 3.3 프로세스에 대한 연산
  • 3.3.1 프로세스 생성
  • 프로세스는 실행도중에 프로세스 생성 시스템호출을 통해 여러개의 새로운 프로세스를 생성할 수 있다.
  • 생성하는 프로세스를 부모프로세스라하고 새로운 프로세스는 자식프로세스라 한다.->트리형성
  • 유일한 프로세스 식별자(pid)에 의해 프로세스를 구분하는데 이 식별자는 통상 정수값이다.
  • 프로세스는 운영체제로부터 직접자원을 얻거나 혹은 부모 프로세스 자원의 부분 집합을 사용하도록 강요받을 수 있다.
  • 프로세스가 새로운 프로세를 생성할때 실행과 관련하여 두가지 가능성이 있다
  • -부모가 계속해서 자식과 병렬로 실행된다.
  • -부모가 모든 자식 또는 일부자식이 끝날때까지 기다린다.
  • 새로운 프로세스들의 주소 공간측면에서 볼때 다음과 같은 두가지 가능성이 있다.
  • - 자식 프로세스는 부모 프로세스의 복사본이다.
  • - 자식 프로세스가 자신에게 적재될 새로운 프로그램을 갖고있다.
  • 3.3.2 프로세스 종료
  • 프로세스가 마지막 문장의 실행을 끝내고 exit 시스템 호출을 사용하여 운영체제에게 자신의 제거를 요청하면 종료한다.
  • - 프로세스 모든 자원이 운영체제로 반납된다.
  • - 오직 종료될 프로세스의 부모만 호출할 수 있다.
  • 부모는 다음과 같은 여러가지 이유로 인하여 자식들 중 하나의 실행을 종료할 수있다.
  • -자식이 자신에게 할당된 자원을 초과하여 사용할 때, 이때는 부모가 자식들의 상태를 검사할수 있는 방편이 주어져야 한다.
  • -자식에게 할당된 태스크가 더이상 필요없을때
  • -부모가 exit하는데 운영체제는 부모가 exit한후에 자식이 실행을 허용하지 않는 경우
  • 연속적 종료 : 프로세스가 종료하면 그로부터 비롯된 모든 자식 프로세스들도 종료되어야 한다.
  • 3.4 프로세스간 통신
  • 독립적인 프로세스 : 프로세스가 실행중인 다른 프로세스에게 영향을 주거나 받지않는 프로세스( <=>협력적 프로세스)
  • 프로세스 협력을 제공하는 이유
  • - 정보공유: 여러 사용자가 동일한 정보에 흥미를 가질수 있으므로 그러한 정보를 병행적으로 접근할 수 있는 환경을 제공해야 한다.
  • - 계산 가속화(computation speedup) : 만일 우리가 특정태스크를 빨리 실행하고자 한다. 우리는 그것을 서브태스크로 나누어 이들 각각이 다른 서브태스크들과 병렬로 실행되게 해야한다.
  • -모듈성(modularity) : 시스템 기능을 별도의 프로세스들 또는 스레드들로 나누어 모듈식 형태로 시스템을 구성하기를 원할 수 있다.
  •  편의성(convenience) : 개별사용자들이 동시에 작업할 많은 테스크를 가질수도 있다.
  • 협력적 프로세스는 데이터와 정보를 교환할 수 있는 프로세스간 통신(interprocess communication, IPC) 기법을 필요로 한다.=>공유 메모리, 메시지전달
  • 3.4.1 공유 메모리 시스템
  • 통신하는 프로세스들이 공유메모리 영역을 구축해야한다.
  • 통상 공유 메모리 영역은 공유메모리 세그먼트를 생성하는 프로세스의 주소공간에 위치한다.
  • -무한 버퍼, 유한버퍼
  • 3.4.2 메시지 전달 시스템(message passing system)
  • 통신하는 프로세스들이 네트워크에 의해 연결된 다른 컴퓨터들에 존재할 수 있는 분산환경에서 특히 유용하다.
  • 3.4.2.1 명명(naming)
  • 3.4.2.2 동기화
  • 봉쇄형 송신: 송신프로세스가 메시지가 수신 프로세스 혹은 메일박스에 의해 수실될때까지 기다린다.
  • 비봉쇄형 송신 : 송신프로세스가 메시지를 보내고 작업을 재시작한다.
  • 봉쇄형 송신 : 메시지가 이용가능할때까지 수신프로세스가 봉쇄된다.
  • 비봉쇄형 수신 : 수신하는 프로세스가 유효한 메시지 또는 널을 받는다.
  • 랑데부 : send와 receive가 모두 봉쇄형일때
  • 3.4.2.3 버퍼링
  • 프로세스들에 의해 교환되는 메시지는 임시큐에 들어있다. 이러한 큐를 구현하는 방식은 세가지가 있다.
  • - 무용량(zero capacity) : 큐의 최대길이가 0이다. 즉, 링크는 자체안에 대기하는 메시지들을 가질수없다. 이경우 송신자는 수신자가 메시지를 수신할때까지 기다려야 한다.
  • - 유한 용량(bounded capacity) : 최대 n개의 메시지가 그안에 들어 있을 수 있다.
  • - 무한 용량(unbounded capacity)
  • 3.5 IPC 시스템사례
  • -----
  • 3.6 클라이언트 서버환경에서 통신
  • 3.6.1 소켓(socket)
  • 소켓 : 통신의 극점
  • 소켓은 서버-클라이언트 구조를 사용
  • 서버는 지정된 포트에 클라이언트 요청메시지가 도착하기를 기다리게 된다. 요청이 수신되면 서버는 클라이언트 소켓으로부터의 연결 요청을 수락함으로써 연결이 완성된다.
  • -TCP
  • -UDP
  • 3.6.2 원격 프로시저 호출(remote procedure calls,RPC)
  • 네트워크에 연결되어 있는 두시스템 사이의 통신에 사용하기 위하여 프로시저 호출을 추상화하기 위한 방편으로 설계됨
  • RPC시스템은 클라이언트 쪽에 스텁을 제공하여 통신을 하는데 필요한 자세한 사항들을 숨겨준다
  • 클라이언트가 원격 프로시저를 호출하면 RPC는 그에 대응하는 스텁을 호출하고 원격프로시저가 필요로 하는 매개변수를 건네준다. 그러면 스텁이 원격서버의 포트를 찾고 매개변수를 정돈(marshall)한다.
  • - 매개변수 정돈(parameter marshalling) : 프로시저에게 갈 매개변수를 네트워크로 전송하기 위해 적절한형태로 제구성하는 작업
  • XDR(external data representation) : 클라이언트 측에서는 서버에게 데이터를 보내기전 매개변수 정돈 작업의 일환으로 전송할 데이터를 기종 중립적인 XDR형태로 바꿔보낸다.
  • 3.6.3 파이프
  • 파이프 : 두 프로세스가 통신할 수 있게하는 전달자로서 동작한다.
  • 파이프를 구현하기위해 고려해야할 4가지
  • - 파이프가 단방향 또는 양방향 통신을 허용하는가?
  • - 양방향 통신이 허용된다면 반이중 방식인가, 전이중(full duplex)방식인가?
  • - 통신하는 프로세스간에 보모-자식과 같은 특정관계가 존재해야만 하는가?
  • - 파이프는 네트워크를 통하여 통신 가능한가 아니면 동일한 기계안에 존재하는 두 프로세스끼리만 통신할 수 있는가
  • 3.6.3.1 보통의 파이프
  • 보통의 파이프는 생산자-소비자 형태로 두 프로세스간의 통신을 허용한다
  • - 생산자는 한 종단에 쓰고 소비자는 다른 종단에서 읽는다.
  • 파이프를 생성한 프로세스 이외에는 접근할 수 없다. 따라서 통상 부모프로세스와 자식 프로세스와 통신하기위해 사용한다.
  • 3.6.3.2 지명 파이프(named pipe)
  • 통신이 양방향으로 가능하며 부모-자식관계도 필요하지 않음
  • 여러 프로세스들이 통신할 수 있다.


반응형

'컴퓨터 공학' 카테고리의 다른 글

자막 만드는 방법(과거자료)  (0) 2015.11.26
컴퓨터 구조 4장  (0) 2015.11.26
운영체제 2장  (0) 2015.11.26
운영체제 1장  (0) 2015.11.26
컴퓨터 구조 2-2  (0) 2015.11.26