Keep going
컴퓨터 시스템의 구성 본문
컴퓨터 시스템의 구성
- 하나 이상의 CPU + 구성요소 + 공통 버스를 통해 연결된 여러 장치 컨트롤러로 구성.
- 장치 컨트롤러는 일부 로컬 버퍼 저장소와 특수 목적 레지스터 집합을 유지 관리
- 장치 컨트롤러마다 장치 드라이버 존재
- 장치 드라이버는 장치 컨트롤러의 작동을 잘 알고 있고 나머지 운영체제에 장치에 대한 일관된 인터페이스 제공
- CPU와 장치 컨트롤러는 병렬로 실행, 메모리 사이클을 놓고 경쟁. (메모리 컨트롤러 메모리에 대한 액세스 동기화)
1. 인터럽트
- 입출력 작업을 시작하기 위해 장치 드라이버는 장치 컨트롤러의 적절한 레지스터에 값을 적재
- 장치 컨트롤러는 이러한 레지스터의 내용을 검사하여 수행할 작업을 결정
- 컨트롤러는 장치에서 로컬 버퍼로 데이터 전송 시작
- 데이터 전송 완료되면 장치 컨트롤러는 장치 드라이버에게 작업이 완료되었음 알림
- 컨트롤러는 장치 드라이버에게 작업이 완료했다는 사실을 인터럽트를 통해 이루어진다.
인터럽트 발생했을 때 CPU의 처리 과정
- 인터럽트 서비스 루틴 : 인터럽트가 발생하면 인터럽트를 처리하기 위한 소프트웨어 (키보드, 마우스, 모니터 등)
- 메인 메모리에 서비스 루틴의 주소들을 저장해 놓은 벡터가 있다. (인터럽트 벡터)
- 인터럽트 걸렸을 때 먼저 CPU는 어떤 장치가 인터럽트 걸었는가를 알아내야 하고, 그 장치에 따라 적절한 인터럽트 서비스 루틴으로 점프해서 처리하고 난 후 , 그 전에 하던일을 계속해서 한다. (실행 하던 프로그램 상태 따로 저장)
- 인터럽트 2가지 방식
- 장치가 인터럽트 발생 : 장치가 자기 일을 다 했을때 버스라인을 통해 CPU에게 인터럽트 알려주는 방식
- 실행되던 프로그램이 인터럽트 발생 (Soft ware interrupt) : 프로그램 실행하던 도중 운영체제 서비스가 필요할 때 인터럽트 발생(trap, 예외 발생할때도)
- 운영체제는 가만히 있다가 인터럽트 발생하면 인터럽트 서비스하는 intrerrupt driven 형태로 실행된다.
인터럽트 핸들링
- 운영체제가 인터럽트가 발생했을 때 어떤 장치가 인터럽트를 발생 시켰는지를 알아야지만 적절한 서비스 루틴으로 점프 할 수 있다.
- 어떤 장치가 인터럽트 발생했는지 알 수 있는 2가지 방식
- polling : 일반적으로 인터럽트 발생하면 cpu가 제어권을 받아서 모든 장치의 상태를 검사해서 인터럽트를 건 장치를 알아내는 방식 (설문조사 방식)
- vectored interrupt system : 인터럽트를 건 장치가 다른 라인을 통해서 자기 장치 번호를 cpu에게 알려주는 방식
인터럽트 타임라인
- cpu는 보통 사용자 프로그램을 실행하고 있다. 사용자 프로그램이 I/O가 필요하다고 하면 I/O 장치에게 요청을 한다.
- I/O 장치는 처음에 놀고 있다가 CPU의 요청을 받아서 I/O를 시작한다. 시작한다는 것은 장치로부터 버퍼로 I/O를 시작하는 것이다.
- 그 동안 CPU는 지금까지 실행되던 프로그램은 I/O가 끝나야지만 다시 실행할 수 있기 때문에 프로그램을 중지하고 다른 프로그램을 실행할 것이다.
- I/O가 끝나면 인터럽트 발생시키면 CPU는 현재 하던 작업을 중단하고 왜 인터럽트 걸렸는지 확인한 다음에 거기에 대한 인터럽트 서비스 루틴을 실행하게 된다.
- I/O 시작 후 I/O 완료 시에만 컨트롤이 사용자 프로그램으로 돌아가는 방법
- WAIT 명령, CPU를 기다리게 하는 방법
- 아무일도 안하는 루프를 만들어서 I/O가 끝날 때까지 기다리는 방식
- 위 두 방식은 I/O 장치가 느리기 때문에 CPU가 기다려야 되는 시간이 너무 길다. 별로 사용 X
- I/O 시작 후 I/O 완료를 기다리지 않고 컨트롤이 사용자 프로그램으로 돌아가는 방법
- CPU는 다른 사용자 프로그램을 실행하다가 I/O가 끝나면 인터럽트 처리 후 기다리고 있던 프로그램 실행한다
- 노는 시간이 줄어들어 시스템 효율이 올라간다
- SYSTEM CALL : 사용자가 직접 I/O를 하는게 아니라 운영체제에게 I/O를 요청을 하는 방법
- DEVICE -STATUS TABLE : 운영체제는 모든 장치에 대해서 장치의 상태를 가진 테이블을 유지 관리하고 감시해야 한다.
2. 저장장치
컴퓨터 저장장치 기본 단위 : bit
8bit = 1byte
cpu가 한번 연산할 수 있는 바이트 수 : word
64 bit 기계라면 cpu가 64 비트 짜리 2개의 정수를 더하거나 빼거나 할 수 있는 것이다.
- 주 기억 장치 (1차 저장 장치)
- cpu 가 바로 접근할 수 있는 유일한 장치
- Random access 메모리라고도 불린다. 메모리 위치에 관계없이 접근하는 시간이 똑같이 걸린다. (RAM)
- 전원이 꺼지면 데이터 날라간다 (휘발성)
- 2차 저장 장치 (ex 하드디스크)
- 전원이 꺼져도 데이터 남아있다. (비휘발성 메모리)
- 메인 메모리 보다 많은 양의 데이터를 저장할 수 있다.
- 원판에 자기적 장치가 들어가 있어서 자료를 추적할 수 있다. (track)
- 기계적인 장치이기 때문에 전자적인 장치보다 속도가 느리다.
- ssd
- 하드 디스크 개선하기 위해 flash 메모리 이용
- 하드 디스크보다 속도 더 빠르다. (전자 장치)
- 위쪽으로 올라갈 수록 속도 빨라짐, 비용 비싸짐
- 아래로 내려 갈 수록 용량 커짐
- 메인 메모리까지 휘발성
- cahcing : 일반적으로 cpu가 처리를 할 때 비휘발성 메모리 → 메인 메모리 → 캐시 → 레지스터로 올라와야만 데이터가 cpu에서 처리된다.
- 느린 장치에 있는 데이타가 빠른 장치로 올라오는 것
- 같은 데이터가 여러군데 있으면 일관성을 어떻게 유지하는지가 문제
- 처리된 cpu는 레지스터 내용을 다시 캐시에 저장하거나 메인 메모리에 저장한다. 필요하면 하드디스크에도..!
- DMA : 직접 메모리 접근
- 디스크는 모니터 장치는 속도가 아주 빠르다. 디스크가 버퍼가 있어서 디스크로부터 한바이트를 읽어서 인터럽트 걸고 다음 바이트 읽고 인터럽트 계속해서 걸면 인터럽트가 너무 자주 발생해서 cpu가 작업을 너무 자주 중지해야 한다.
- cpu가 인터럽트 처리하느라 걸리는 시간이 너무 많이 들기 때문에 성능이 떨어진다.
- 빠른 장치 경우에는 매번 I/O가 끝날때마다 인터럽트를 거는 것이 아니라 CPU가 이 장치에서 X BYTE를 읽어서 메모리 주소 Y에 갖다 놓고 한번 만 보고하라고 시키면 I/O 장치가 1바이트를 읽어서 메모리에 갖다 놓고 다음 바이트를 읽어서 갖다 놓다가 X바이트를 다 전송했을때만 인터럽트를 건다.
- I/O 장치가 바로 메모리를 접근하게 된다.
- CPU도 메모리를 사용하려고 하고 DMA 장치도 메모리를 사용하려고 하면 두개가 경쟁을 하게 되고 하나만 사용해야 하니까 CPU에게 우선권을 준다.
- CPU가 메모리 사용하지 않을 때만 디스크가 메모리를 접근할 수 있게 한다.
- A von Neumann architecture : 처리기가 있고 실행될 명령과 데이타가 저장장치에 같이 들어 있어서 처리기가 명령어 하나를 갖고 와서 처리하고 그다음 명령어를 가져와서 처리하는 방식
컴퓨터가 처리기를 여러개 가질 경우
- Multiprocessor system : cpu가 여러개인 시스템
- parallel systems, tightly-coupled systems라고도 불림
- 사용하는 이유
- 단위 시간당 처리량을 늘리기 위해
- 동시 실행의 효과를 얻기 위해서 컴퓨터 여러개 사는 것보다 다중 처리기 컴퓨터 사는게 값이 쌈
- 처리기가 10개 있으면 한개 고장나더라도 전체적으로 중지 x, 성능이 약간 떨어짐
- 두가지 형태
- Asymmetric Multiprocessing : Master, Slave 프로세스가 있음 (비대칭적)
- Symmetric Multiprocessing : 모든 처리기들이 동등한 권한 가짐
- multicore
- 처리기가 각각 다른 칩으로 구성된게 아니라 처리기를 여러개를 모아 하나의 칩으로 만드는 것
- 하나의 칩안에 처리기 한개를 core라고 부른다.
- 다른 칩으로 구현된 cpu들간에 자료를 전송하는 것이 한 칩안에 들어가 있는 cpu들 간 자료를 교환하는 것보다 느리다.
- 전력도 적게 쓰는 장점이 있다.
- Clustered System
- 독자적인 컴퓨터 여러대가 네트워크를 연결해서 하나의 시스템으로 구성되는 것
- 가용성이 뛰어나다.
- 종류
- 대칭형 : clustered 에 참여하는 모든 시스템이 같은 역할, 시스템이 다른 시스템의 상태를 주시하다가 다른 시스템이 실패하면 대신 가져와서 대신 실행
- 비대칭형 : 다른 쉬고 있는 컴퓨터가 있어서 다른 컴퓨터가 제대로 동작하는가만 살핀다. 다른 시스템이 실패하면 작업을 가져와서 대신 실행 (아주 큰 작업할 때, 빅데이터)
- storage area network : storage 공유할 수 있는 시스템
Comments