안녕하세요. 처음 포스팅을 하는데 바로 공부로 시작하네요~
조금 딱딱한데 눈에 들어오기 쉽도록 정리하도록 노력해보겠습니다^^
일괄 처리 시스템(Batch programming system) vs. 다중 처리 시스템(Multi programming system)
- 일괄 처리 시스템(Batch processing system)
· 하나의 작업이 CPU를 독점하기 때문에 처리 속도가 빠르다.
· 반환시간이 존재한다.
· CPU와 Channel 간에는 병렬 I/O를 수행하는데, I/O가 동시에 발생해도 문제가 되지 않도록 해주는 것이 "DataBuffer"이다. 즉 I/O device에서 I/O command가 있을 때만, buffer에서 channel을 통해 I/O device로 전송할 수 있다. (buffer가 없다면 메모리에서 직접 이 작업을 수행해야하는데, 메모리는 주소와 함께 데이터를 정적으로 가지고 있는 상태이다. 따라서 반드시 검색을 통해 값을 찾아야 하기 때문에 시간이 너무 오래 걸릴 것이다.)
· 결정적인 단점은 반환 시간이 존재하기 때문에, 대화형 프로그램에는 적절하지 않다는 것!☞ 채널이 뭐죠?
일종의 전자회로상 통로라고 생각할 수 있다.☞ 버퍼의 역할은?
속도 차이를 완충하는 역할 (입출력 대기 시간을 없앰)☞ DMA의 역할은?
Memory cycle 경쟁을 제어하는 역할을 한다. (channel쪽에서 읽거나 쓰는 것을 제어) 따라서 자기 디스크와 memory 사이의 고속 전송이나 대화형 단말기 화면을 다시 그리는 작업에 유용☞ Interrupt란?
User program이 아니라, H/W에 의해서 자동으로 메모리 특정부분에 있는 함수 (ISR)를 호출하는 개념, (IVT가 CPU 내에 있는데, CPU가 interrupt를 받으면 IVT를 보고 Controll을 이동시킨다.)☞ 언제 Interrupt가 발생?
I/O의 완료, 예외 동작(파일의 끝, 패리티 오류 등)☞ trap vs Interrupt?
trap은 프로그램 내에서 발생하는 것이고 inner Interrupt 또는 software Interrupt 라고도 한다. trap은 코드를 한줄 한줄 수행하다가 발생하는 것이기 때문에 동기적, interrupt는 H/W에서 발생시점이 일정하지 않기 때문에 비동기적이다.다중 처리 시스템(Multi processing system)
· User area에 여러 프로그램을 적재, 이후 모두 작업 풀(job pool)에 적재하고 OS의 scheduling에 의하여 CPU를 할당받는다.
· 이로써 대화형 응용프로그램에 적절한 수행능력을 가질 수 있게 되었다.
· CPU를 여러 곳에 지속적으로 할당하여 CPU가 노는 일은 없다.시분할 시스템(Time sharing system)
· Time slice를 만들어 매 Interval의 끝마다 Interrupt를 발생 OS의 scheduling을 받는다.
· User에게 여러 개의 프로그램이 동시에 수행되는 것처럼 느껴지게 만든다. (Context-switching between processes)
· 단점은 OS의 scheduling이 빈번해지면 overhead가 발생할 수 있다는 점이다.
☞ 실시간 시스템(real-time system)이란?
엄격한 시간제한을 필요로하는 경우 사용, Hard, soft real-time이 존재한다.
☞ buffering vs. spooling
buffering - I/O device와 보조 기억장치 사이에서 사용한다. 또한 한 작업의 I/O와 계산을 동시에 수행할 수 있다. spooling - 디스크를 매우 큰 버퍼처럼 사용하는 것으로 한 작업의 I/O와 다른 작업의 계산을 동시에 수행할 수 있다. 즉 병렬성이 더 좋다는 이야기이다.
it's so good
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit