[운영체제] 컴퓨터의 작동 과정
[운영체제] 컴퓨터의 작동 과정
일반적인 컴퓨터 시스템에서 CPU와 각 장치들은 서로 연결되어 메모리를 공유합니다.
각각의장치마다 장치 제어기(Controller)가 작업을 도와주며 모든 기계들은 동기화되어 적절히 작동합니다.
메모리를 각각의 장치가 공유하는 그림 |
컴퓨터의 부팅 과정
- 전원이 켜질 때 ROM에 저장된 초기 프로그램을 실행합니다.
- ROM에 저장되어 있기 때문에 변경이 불가능하고, 항상 똑같은 방식으로 실행
- 초기 프로그램은 메모리, CPU 레지스터 등을 초기화시킵니다.
- 이후에 운영체제를 찾아서 메모리에 적재합니다.
- 운영체제는 첫 번째 프로세스를 즉시 실행합니다.
- 인터럽트가 발생하면 CPU가 각종 작업을 처리합니다.
- 인터럽트 : CPU가 다음에 처리할 작업들을 알려주는 것들
인터럽트
- 하드웨어와 소프트웨어는 모두 CPU에 인터럽트를 발생시킬 수 있습니다.
- 일반적으로 인터럽트는 입출력 연산이 종료되었을 때, 예외가 발생했을 때, 운영체제의 다양한 서비스를 요구할 때 등 다양한 이유로 발생할 수 있습니다.
- ex) 한글 파일에서 드래그하는 동작, 입력하는 같은것들도 모두 인터럽트
- 인터럽트가 발생했을 때 CPU는 현재 하던 일을 중단하고, 그 인터럽트에 대한 처리를 먼저 하게 됩니다.
그러한 처리를 '서비스 루틴'이라고 하며 일반적으로 OS가 이를 처리합니다.
서비스 루틴이 종료가 되면 다시 CPU는 인터럽트 되었던 그 연산을 재개합니다.
입출력 연산이 종료되었을 때 인터럽트가 발생하는 모습 |
인터럽트가 요청되었을 때 처리하는 방법
방법 1
- 운영체제가 어떠한 종류의 인터럽트인지 확인합니다.
- 인터럽트 핸들러(Handler)를 호출해서 인터럽트를 처리합니다.
- (이러한 방법은 인터럽트의 모든 처리 방식을 가지고 있어야 하므로 메모리에 제약이 있음)
방법 2
- 방법 1 처럼 모든 서비스 루틴을 가지고 있는것이 아님
- 서비스 루틴은 HDD, SSD와 같은 곳에 넣어 둠
- 인터럽트가 요청이 되면 인터럽트 서비스 루틴의 주소를 가리키는 포인터들로 구성된 인터럽트 벡터 테이블을 참조합니다.
- 인터럽트 벡터 테이블 : 인터럽트의 종류에 따라서 어느 루틴에 가서 인터럽트를 실행하게 되는지를 적어놓은 것
- 참조된 포인터가 가리키는 인터럽트 처리 루틴을 호출해서 인터럽트를 처리합니다.
최근에는 방법 2를 채택한 운영체제가 많습니다.
- 인터럽트가 발생하면, OS는 하던 일에 대한 정보를 저장하고 중단합니다.
- 시스템 스텍에 하던 일에 대한 정보를 저장함
- 인터럽트 벡터로 제어를 옮겨 요청한 이터럽트 처리 루틴의 주소를 가리키는 포인터를 참조합니다.
- 포인터를 따라 이동하여 인터럽트 처리 루틴을 완료한 뒤에 다시 하던 일로 돌아갑니다.
- 시스템 스텍에 저장되어 있던 일로 돌아감
참고..
인터럽트가 실행이 되고 있을 때 다른 인터럽트가 또 발생하는 경우에는 다른 인터럽트들을 대기시킵니다. 대기를 시키는 이유는 데이터 소실을 막기 위함입니다. 또한 인터럽트 사이에는 우선순위가 있어서 우선순위에 따라서 인터럽트 처리 순서를 조절합니다.
[운영체제] 입출력 시스템
출처
댓글
댓글 쓰기