Structure of computer
컴퓨터의 연산
현대의 컴퓨터
- 공유메모리에 접근을 제공하는 공통 버스에 의해 연결된 여러개의 장치들과 하나 이상의 CPU의 집합
- 장치 제어기는 특정 장치를 관리 함
- CPU와 장치 제어기가 메모리 사이클을 얻기위해 병렬 수행되며 제어 및 동기화를 위해 메모리 제어기가 제공됨
컴퓨터의 구동
- 구동을 위한 초기 프로그램(bootstrap program)을 가지고 있음
- 보통 펌웨어, 바이오스라고 칭함
- EEPROM에 저장됨
- CPU레지스터로부터 장치 제어기, 메모리 내용등 모든 것을 초기화
- 운영체제의 적재 및 수행 방법을 알고 있음
- 커널이 적재되고 실행되면 사용자에게 서비스를 제공할 수 있음
- 일부 서비스는 시스템 프로그램으로 커널이 수행되는 동안 계속 수행되는 시스템 프로세스, 시스템 디먼이 됨
- 완전히 적재되면 사용자로부터 event를 기다림
- event가 발생하면 하드웨어 또는 소프트웨어로부터 발생한 인터럽트에 의해 신호가 보내짐
- 하드웨어는 언제든 시스템버스를 통해 cpu에신호를 보내 인터럽트 발생 가능
- 소프트웨어는 시스템 호출을 통해 가능
- CPU가 인터럽트 되면, 하던일을 중단하고, 고정된 위치로 실행을 옮김
- 고정된 위치는 보통 서비스 루틴이 위치한 시작 주소를 가지고 있음
- 인터럽트 서비스 루틴이 실행
- 인터럽트가 완료되면 기존 연산을 재개한다.
- 인터럽트는 방해라고 할 수 있고 다른 프로세스로부터의 요청이라고 보면 될 듯
- 최근의 구조는 시스템 스택에 복귀주소를 저장하여 pop하여 바로 원래 연산을 실행한다.
저장장치 구조
- 명령을 가져올 땐 대부분 주 저장장치에서 가져온다.
- 메모리는 load, store 명령을 통해 이루어진다.
- cpu register에서 명령을 꺼내 store하고
- ram에서 저장한 register 명령을 다시 load하여 연산한다.
- 폰 노이만 구조 시스템의 실행되는 명령-실행 사이클
- 메모리로 부터 명령을 인출해 instruction register에 저장
- instruction register의 명령을 해독
- 피연산자에 대해 명령을 실행한 후 결과를 메모리에 저장
입출력 구조
- 장치 제어기에는 여러개의 장치들이 부착될 수 있다. SCSI 제어기는 7개 이상의 장치를 붙힐 수 있다.
- 디바이스 드라이버 : 운영체제가 장치 제어기의 동작을 이해하고 일관된 인터페이스를 제공한다.
- 입출력 연산
- 디바이스 드라이버는 장치 제어기의 적절한 레지스터에 필요한 값을 저장
- 취할 동작을 결정하기 위해 이들 레지스터의 내용을 조사
- 제어기는 장치로부터 자신의 로컬 버퍼로 데이터 전송을 시작
- 장치 제어기는 연산이 완료됬음을 인터럽트를 이용하여 디바이스 드라이버에게 통보
- 디바이스 드라이버는 제어를 운영체제에 반환하고 입력된 데이터가 있는 경우 포인터를 같이 반환
- DMA : 입출력 카운트를 세팅한 후 CPU 개입없이 메모리부터 자신의 버퍼장치로 또는 버퍼에서 메모리로 데이터 블록을 전송한다.
- 인터럽트는 블록 전송이 완료될 때 발생함
- 장치 제어기가 전송 작업을 수행하고 있는 동안 CPU는 다른 작업을 수행할 수 있음
'운영체제' 카테고리의 다른 글
[OS:Concepts] 운영체제가 할 일 (0) | 2017.01.17 |
---|---|
[Linux/ShellScript] 커맨드 모음 (0) | 2016.08.08 |
[리눅스 서버] 디렉토리 개념과 파티션 (0) | 2014.09.29 |