달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2010. 7. 22. 12:19

Operating system concepts - 입출력 시스템 OS이야기2010. 7. 22. 12:19

디스크와 같은 많은 자료를 입/출력하는 장치를 위해 비싼 범용 처리기가 매번 바이트 전송을 제어하게 하는 것은낭비.
CPU가 상태 비트를 반복적으로 검사 하면서 1 바이트씩 옮기는 작업을 PIO(Programmed IO)라고 부른다.

보호 모드에서 수행되는 커널에서는 운영체제는 일반 프로세스들이 입추력 명령을 직접 내리는 것을 금지한다. 읷은 접근 제어를 하기 위해서 뿐만 아니라, 시스템 고장을 일으킬 수 있는 사고로부터 시스템을 보호하기 위해서이다. 메모리 보호 장치가 없는 커널에서는 일반 프로세스들이 직접장치 제어기를 접근할 수 있다. 이 방식은 커널 통신, 문맥 교환, 커널 소프트웨어의 여러 계층 등을 안 거쳐도 되므로 높은 성능을 발휘할 수 있다. 그러나 이 방식은 보안과 안정성에 큰 문제를 야기 시킨다. 

응용 입출력 인터페이스
공통적인 입출력 장치들은 그것을 한 곳에 묶고, 그 장치들을 접근하기 위해 필요한 수준 함수들을.. 예를 들면, read(), write() 등을 정의한다. 이러한 표준 함수들의 집합을 "인터페이스"라고 부른다.

블록 장치와 문자 장치
운영체제나 데이터베이스는 블록 장치를 마치 선형 배열이라고 이해하고 사용하기를 원할 것이다. 이러한 접근모드를 비가공 입출력이라 불린다. 만약 App이 파일의 블록이나 일부에 대한 자체 잠금 기능을 제공한다면 운영체제의 잠금 기능은 최소한 중복된 기능이고 최악의 경우에는 모순이 발생할 수도 있다. 이러한 충돌을 피하기 위해 비가공 장치의 접근 장치의 제어권을 직접 App에게 일임하고 운영체제는 한발 물러나야 한다. 운영체제가 버퍼링ㅇ과 잠금을 하지 않는 모드로 파일에 대한 입출력 작업을 하는 것이다. UNIX시스템에서는 이런 방식을 직접 입출력(direct I/O)라고 부른다.

Clock and Timer
-현재 시간을 제공
-경과된 시간을 제공
- T시각이 되면 X오퍼레이션을 실행

버퍼링
버퍼는 입출력 장치와 응용 프로그램 사이에 자료가 전송되는 동안 그 자료를 임시로 저장하는 메모리 영역을 말한다. 버퍼링은 다음 세가지 이유 때문에 필요하다. 첫번째 이유는 자료의 생산자와 소비자 사이에 속도가 다른 것에 대처하기 위함이다. 

모뎀-->버퍼[1000]->디스크
      --->버퍼2[1000]--> 

모뎀은 버퍼1에 자료를 다 채우면 디스크에서 이를 쓰기 시작한다. 모뎀은 버퍼2에 자료를 채우기 시작하고, 버퍼2가 거의 다 채워졌을 때에는 , 디스크는 버퍼1의 자료를 다 썼을것이며, 두 버퍼의 용도가 바뀌게 될 것이다. 이를 double buffering 이라고 한다.
2번째 이유는, 서로 다른 장치들 사이에 사요되는 자료 전송 크기가 다른 것을 극복하기 위한 것이다. 그런 차이는 특히 컴퓨터 네트뤄킹에서 많이 발생한다. 송신측의 큰 메세지는 보다 작은 네트워크 패킷으로 나뉜다. 그 패킷은 네트워크를 통해 전송되고 수신측에서 원래의 자료를 복원하기 위해 그 패킷들을 버퍼에서 결합한ㄷ다.

'OS이야기' 카테고리의 다른 글

커널 시작 과정  (0) 2011.09.22
실시간 CPU 스케줄링 - Proportional Share 스케줄링  (0) 2010.07.30
OS이야기 - 분산 조정  (1) 2010.07.27
OS이야기 - 분산 조정  (0) 2010.07.26
어버이날 OS 이야기  (0) 2010.05.08
:
Posted by НooпeУ


Code Start Code End