Computer System Operation ( 컴퓨터 시스템 동작 )
현대의 범용 컴퓨터 시스템은 공유 메모리에 대한 접근을 제공하는 공통버스를 통해 여러 개의 장치제어기와 하나 이상의 CPU로 구성되어 있다.
CPU와 장치제어기는 메모리 사이클을 얻기 위해 경쟁하면서 병행 실행될수 있다.
컴퓨터 구동을 위해서는 초기프로그램이 있어야하는데 바로 부트스트랩이라 한다. 부트스트랩은 보통 펌웨어(ROM)이나 EEPROM에 저장 된다. 부트스트랩 프로그램은 운영체제를 적재하는 방법 및 실행을 시작하는 방법을 알아야하기에 운영체제의 커널의 찾아 메모리에 적재해야한다. 그런다음 운영체제는 “INIT”와 같은 첫번째 프로세스를 실행하고, 어떤 Event가 발생하기를 기다린다.
#인터럽트 // 종류: 예외상황, 하드웨어, 시스템콜
이벤트가 발생하면 해당 위치로부터 발생한 인터럽트에 의해 신호가 보내진다. CPU가 인터럽트 되면, CPU는 하던 일을 중단하고, 일반적으로 인터럽트를 위한 서비스 루틴이 위치한 시작주소를 가지고 있는 고정된 위치로 실행을 옮긴다. 그리고 Interupt Service Routine이 실행된다. ISR이 완료되면, CPU는 인터럽트 되었던 연산을 재개한다.
*Process Core로부터 제어권을 넘겨받은 ISR은 기존 작업 내용을 저장하고 인터럽트를 발생시킨 주변장치가 요구하는 일을 처리한후 다시 기존의 작업내용을 복원하고 인터럽트처리를 종료
인터럽트는 컴퓨터 구조의 중요한 부분이다. 인터럽트는 적절한 서비스 루틴으로 제어를 전달한다. 이러한 전달을 처리하는 간단한 방법은 인터럽트 정보를 조사하는 일반적인 루틴을 호출하는 방법이다. 이 루틴은 이어 인터럽트 고유의 핸들러를 호출한다. 그러나 대신 인터럽트 루틴에 대한 포인터들의 테이블을 이용할수 있다. 이들 위치에는 여러장치에 대한 ISR의 주소가 들어 있다.
인터럽트가 요청되면 인터럽트를 유발한 장치를 위한 인터럽트 서비스 루틴의 주소를 제공하기 위해, 이 주소의 배열, 즉 인터럽트 벡터가 인터럽트 요청과 함께 주어진 고유의 유일한 장치번호로 색인된다.
인터럽트 구조는 인터럽트된 명령의 주소를 반드시 저장해야한다. 최근의 구조들은 시스템 스택에 복귀주소를 저장한다. 인터럽트를 서비스한 후 저장되어있던 복귀 주소를 프로그램 카운터에 적재하고, 인터럽트에 의해 중단되었던 연산이 인터럽트가 발생되지 않았던 것처럼 다시 시작된다.
Storage Structure ( 저장장치 구조 )
CPU는 오직 메모리로부터 명령을 적재할수 있고 실행하고자 하는 프로그램은 모두 메모리에 저장되어야 한다. 대부분의 프로그램은 읽기,쓰기 가능한 주메모리(RAM)에서 실행시키며 ROM에서은 갱신될수 없기에 오직 정적인 프로그램만이 저장된다.
모든형태의 메모리는 워드의 배열을 제공하며, 각 워드는 고유의 주소를 가지고 있다. 상호작용은 특정메모리 주소들에 대한 일련의 적재(load)와 저장(store) 명령을 통하여 이루어진다.
적재명령은 주메모리로부터 CPU 내부의 레지스터로 한 워드를 옮기는 것이다. 반대로 저장명령은 레지스터의 내용을 주메모리로 옮긴다. 이러한 명시적인 명령외에 CPU는 실행을 위해 자동적으로 주메모리로부터 명령을 적재한다.
폰노이만 구조시스템에서 실행되는 명령-실행사이클은 먼저 메모리로부터 명령을 인출해 그 명령을 명령 레지스터에 저장한다. 이어서 명령을 해독하고, 명령은 메모리로부터 피연산자를 인출하여 내부 레지스터에 저장하도록 유발할수 있다. 피연산자에 대하 명령을 실행한 후에 결과가 메모리에 다시 저장될수있다.
메모리 장치는 단지 연속적인 메모리 주소만을 인식한다는 사실에 유의 해야한다. 그리고 우리는 단지 실행중인 프로그램에 의해 생성된 일련의 메모리 주소에만 흥미가 있다.
대부분의 컴퓨터는 주메모리의 확장으로 보조저장장치를 제공한다. 이의 요건은 대량의 데이터를 영구히 보존할수 있어야 한다는 점이다. 가장 일반적인 보조저장장치는 프로그램과 데이터 모두를 저장할수 있는 자기디스크이다. 대부분의 프로그램은 메모리에 적재될떄까지 디스크에 저장된다. 그리고 많은 프로그램들이 처리를 원천과 목적지로 디스크를 사용한다.
I/O Structure ( 입출력 구조 )
위의 저장장치는 컴퓨터 내의 여러 형태의 입출력장치중 하나이다. 시스템의 신뢰성과 성능에 미치는 중요성 그리고 장치들의 다양한 특징 떄문에 운영체제 코드의 많은 부분들이 입출력을 관리하는데 할애된다.
범용 컴퓨터 시스템은 공통버스에 의해 연결된 여러 개의 장치제어기와 CPU들로 구성된다. 각 장치제어기가 특정 타입의 장치를 담당한다. 장치제어기는 자신이 제어하는 주변장치와 자신의 로컬 버퍼 저장장치 사이의 데이터 전송을 담당한다.
통상적으로 운영체제는 각 장치 제어기마다 디바이스 드라이버를 가지는데, 이 디바이스 드라이버는 장치제어기의 동작을 이해하고 운영체제의 다른 부분들에게 장치에 대한 일관된 인터페이스를 제공한다.
입출력 연산을 시작하기 위해, 디바이스 드라이버는 장치 제어기의 적절한 레지스터에 필요한 값을 적재한다. 장치제어기는 이어 취할 동작을 결정하기 위해 이들 레지스터의 내용을 조사하며 제어기는 장치로부터 자신의 로컬 버퍼로 데이터 전송을 시작한다. 데이터의 전송이 완료되면, 장치제어기는 연산완료했음을 인터럽트를 이용하여 디바이스 드라이버에게 통보한다. 그러면 이는 제어를 운영체제에 반환하고 이떄 입력 완료인 경우에는 데이터 또는 데이터에 대한 포인터를 같이 반환할수도 있다. 다른 동작에 대해서는 디바이스 드라이버는 상태정보를 반환한다.
위의 인터럽트 구동방식의 입출력은 대량의 데이터를 전송하는 데에는 높은 오버헤드를 초래한다. 이를 위해 직접 메모리 접근(DMA)장치가 사용되는데 이는 CPU의 개입 없이 메모리로부터 자신의 버퍼장치로 또는 버퍼로부터 메모리로 데이터 블록 전체를 전송한다.
'Study > Book' 카테고리의 다른 글
Viruses Revealed _ David Harley (0) | 2015.03.04 |
---|---|
Operating System Concepts_Chapter.1 (0) | 2015.02.05 |
정보보안개론 0x08 (0) | 2015.01.24 |
정보보안개론 0x07 (0) | 2015.01.23 |
정보보안개론 0x06 (0) | 2015.01.23 |