마지막 Posting이다. 지금까지 운영체제에 대해 내 나름대로 이해한 내용을 적어보았는데, Windows
, MacOS
, Linux
를 만든 사람은 정말 신이 아닐까 싶다. 아직도 이해안 된 부분도 존재하고 더 깊게 들어가지 않은 부분도 존재하기 때문에 배워야할 내용이 산더미 인 것 같다. 그럼에도 글로 정리하면서 운영체제를 다루고 이해했다는 점에서 뿌듯함을 느낀다.
: Serial port 같이 I/O device의 관문을 의미한다.
I/O port의 경우 4개의 register가 존재한다.
- Status register
: Device의 상태를 나타내며 host가 읽을 수 있는 bit들을 갖고 있다. (Busy bit, error bit)- Control register
: 명령을 시작하거나 device의 mode를 변경하기 위해 host가 작성할 수 있다.- Data-in register
: Input을 넣기 위해 host가 읽을 수 있는 register- Data-out register
: Output을 보내기 위해 host가 쓸 수 있는 register
: I/O device를 제어하는 자체 CPU
: OS가 status register를 읽으면서 명령의 수신 여부를 주기적으로 확인하는 과정을 의미한다.
Polling을 하는 동안은 다른 process에게 CPU를 양도하지 않고 하드웨어 장치가 동작을 완료할 떄까지 계속 while loop를 돌면서 하드웨어의 상태를 체크하기 때문에 busy waiting
문제가 발생한다. 또한 하드웨어의 속도는 매우 느리기 때문에 CPU를 양도하지 않고 하드웨어의 상태를 확인하는 과정은 CPU 자원을 낭비하기 때문에 Interrupt가 더 효율적인 방법이 될 수도 있다.
CPU 하드웨어는 interrupt-request line이라는 wire를 갖고 있다. 이는 fetch
-execute
-interrupt-request line check
의 과정으로 진행되는데 만약 interrupt signal을 받게 된다면 CPU가 상태를 저장한 뒤 interrupt handler rountine으로 jump를 해서 interrupt를 처리한다.
include disk drives
read
, write
, seek
같은 명령어를 사용한다.include keyboard, mouse, serial ports
get
, put
같은 명령어를 사용한다.: Hard disk에 명령을 내리는 순서 결정
Buffer
: 두 data processing 주체 사이에서 data를 transfer 하는 과정에서 중간 단계로 임시 저장하는 device
- "The version of the data written to disk is guaranteed to be the version of at the time of the application system call, independet of any subsequent changes in the application's buffer"
: Data의 복제본을 갖고 있는 속도가 빠른 memory 영역
: Printer 같이 device 자체가 매우 느린 경우 device에 보내는 output data를 임시로 저장한다.
Printer ... serve only one request at a time
read failure
, device unavailable
, transient write failure
같은 문제들을 복구한다.Open file table
, network connection
, character device state
같은 상태 정보를 갖고 있다.
---------------------------------------끝----------------------------------------