Batch system(단일사용자)-jobs, Time-shared systems-user programs or tasks
Current activity including program counter,processor registers
Stack 일시적 데이터, Data section, Heap
PCB 프로세스들의 정보
프로세스의 상태
Program counter
cpu register
scheduling memory
메모리 관리 정보
회계 정보
입출력 상태 정보
Process scheduling
Medium-term scheduler
-
Remove process from memory, stor on dis,bring back in from disk to continue excution swapping
Context Switch
- CPU switches to another process,the system must save the state of the old process and the saved state for the new process via a context switch
대부분의 시스템내의 프로세스들은 병행 실행될 수 있으며 반드시 동적으로 생성,제거될 수 있다.
- Parent and children share all resources
- Children share subset of parent`s resources
- Parent and child share no reusources
- Parent and children execute concurrently
- Parent waits until children terminate
시스템 내에 프로세스들은 병행 실행될 수 있으며 반드시 동적생성,제거 될수 있음
병행 프로세스들은 독립적이거나 또는 협력적 프로세스 일수 있다
Cooperating process can affect or be affected by other processes
협력하는 이유
- information sharing
- computation speedup
- modularity(모듈성-바꾸고자할때 그부분만 바꿀수 있음)
- convenience
Shared memory : 충돌 안일어남, 적은데이터 교환, 구현하기 쉬움
Message passing
- 최대 속도와 편이 제공
- 구출할 때 시스템 호출이 필요접근은 일상적 메모리 접근으로 처리 커널의 도움 필요 없음
- 접근은 일상적 메모리 접근으로 처리
- 커널의 도움 필요 없음
독립 프로세스는 다른 프로세스에 영향을 안끼침
unbounded-buffer(무한버퍼) bounded-buffer(유한버퍼);
interprocess Comunication-Message passing
- 메시지 전달 방식은 동일한 주소 공간을 공유하지 않고도 프로세스들이통신하고 그들의 동작을 동기화할 수 있도록 허용하는 기법
- 프로세스 사이에 communication link를 설정
- 메시지 보내고 받음.
직접통신
- 모든 프로세스 쌍 사이에 연결이 자동 구축
- 서로 상대방 신원 알아야함.
- 연결은 두개 이상의 프로세스들과 연관
- 통신하는 프로세스들의 각 쌍 사이에는 정확히 하나의 연결이 존재
간접통신
- 한 쌍의 프로세스 사이의 연결은 프로세스들이 공유 메일박스를 가질때만 구축
- 연결은 두개 이상의 프로세스와 연관
- 다수의 서로 다른 연결이 존재
- 각 연결마다 하나의 메일박스가 할당.
Synchronizaation
- Blocking send 송신자는 메시지를 받을때까지 막는다
- Blocking receive 메시지가 이용 가능할 때까지 수신 프로세스를 막음
- Non-blocking send 송신 프로셋스가 메시지 보내가 작읍을 재시작
- Non-blocking receive 수신하는 프로세스가 유효한 메시지또는 널을 받음
버퍼링
- 메시지들은 큐에 저장됨
- 무용량 - 큐길이 0 대기 메시지 없고 송신자는 수신자가 수신할때까지 기다림
- 유한용량 - 큐가 다 찾을경우 기다려야함
- 무한 용량
RPC
- Remote procedure call
- 프로세스와 네트워크 시스템 사이의 추상 절차
- Stubs 클라이언트쪽에 통신에 필요한 자세한 사항을 숨겨둠
- 서버는 stub를 통해 메시지를 받고 배개변수를 풀고 받음
Pipes
- 파이프는 두 프로세스가 통신할 수 있게 하는 전달자로 동작
- 파이프는 생산자와 소비자 형태로 두 프로세스 간의 통신을 허용
- 생산자는 파이프 한 종단 쓰기종단에 쓰고 소비자는 읽기종단에서 읽는다
- 결국 단방향 통신 기능. 양방향 하고싶으면 2개의 파이프 필요
- f[0] 읽기 종단 f[1] 쓰기종단으로 표현