-
멀티프로그래밍
- 한 프로그램이 CPU를 독점하지 않고 IO를 하는 시점에 다른 프로그램이 CPU를 사용할 수 있다
- Throughput : 단위 시간 동안 더 많은 프로그램의 작업을 수행한다. 생산성 향상
- Utilitzation : CPU의 이용률이 증가한다
- Degree of multiprogramming : 동시에 수행하는 프로그램 수 가 증가한다
프로세스
- 실행 중인 프로그램, 메로리에 로드된 상태를 명심
- text : 프로그램의 코드
- stack : 메서드의 변수 저장
- data : 전역 변수 영역
- heap : 동적 할당 영역
프로세스 상태
- new
- ready
- running
- waiting
- terminated
PCB(Process Control Block)
- 운영체제가 프로세스를 관리하기 위해 만든 자료구조(구조체)
- 보통 이중연결리스트로 구성함
프로세스의 컨텍스트 스위칭 과정 - P1에서 인터럽트 발생 후 CPU제어가 운영체제로 넘어감
- 운영체제는 P1의 모든 상태 정보를 PCB1에 저장 후 P2를 실행
- 운영체제는 PCB2에서 P2의 상태값을 하드웨어로 옮김
이 과정을 프로세스의 컨텍스트 스위치라고 하고 멀티프로그래밍 체제에서 불가피한 오버헤드이다.
프로세스 스케줄러
- short term scheduler(CPU scheduler)
: ready queue에 있는 프로세스 중 실행할 프로세스를 선택하는 작업
- long term scheduler
: new상태인 프로세스 중 ready 상태로 전환할 프로세스를 선택하는 작업
멀티프로그래밍 시스템에서 degree of multiprogramming을 조절하는 역할
- medium term scheduler
: degree of multiprogramming이 높은 경우 프로세스를 디스크로 내쫓는 swapping 작업을 수행한다
IPC(Interprocess Communication)
- 각 프로세스는 기본적으로 독립적이지만 필요에 따라 통신할 수 있으며 운영체제가 그 기능을 제공
Shared Memory 기법
- 특별한 API없이 공유메모리를 사용하는 측면에서 편할 수 있다.
- 동시성 이슈를 프로세스레벨에서 신경써야하며 이는 굉장히 어려운 일이다.
Message Passing
- 커널이 제공하는 공유 메모리를 사용한다.
- 커널의 기능이기 때문에 시스템콜을 이용해야 한다.
- 동시성 이슈는 커널이 관리하기 때문자 사용자 레벨에서는 신경쓰지 않아도 된다.
- non-blocking send : 비동기적인 메세지 전송, 리시버가 받든 안 받든 신경쓰지 않고 메세지 전송
- non-bounded send : 버퍼가 꽉찰 걸 고려하지 않고 그냥 버퍼에 메세지를 전송