컴퓨터 시스템 개요
2022. 4. 17. 23:23ㆍ운영체제
728x90
컴퓨터 시스템 개요
기본 구성 요소
컴퓨터는 다음 4가지 기본 구성요소로 이루어진다.
- 처리기(프로세서, processor): 컴퓨의 동작을 제어, 데이터를 처리. 중앙처리장치(CPU)라고 부름.
- 주기억장치(main memory): 데이터와 프로그램을 저장. 휘발성 -> 컴퓨터 종료 시 데이터 상실
- 입출력모듈(I/O module): 외부 환경 간 데이터 이동 담당
외부 환경: 보조 기억 장치, 통신 장비, 단말기 등 - 시스템 버스(System bus): 처리기, 주기억장치, 입출력 모듈 간 통신 제공
CPU 구성
- 프로그램 카운터 (Program Counter): 다음에 실행될 명령어의 주소를 저장, 실행할 기계어 코드의 위치를 지정
- 명령어 레지스터 (Instruction Register): 현재 실행 중인 명령을 기억
- 누산기 (Accumulator, AC): 연산 결과를 임시로 저장
- 메모리 주소 레지스터 (Memory Address Register): 데이터의 주소를 기억
- 메모리 버퍼 레지스터 (Memory Buffer Register): 데이터를 임시로 기억
- 입출력 주소 레지스터 (I/O Address Register): 입출력 모듈과 cpu간 교환되는 데이터 주소를 기억
- 입출력 버퍼 레지스터 (I/O Buffer Register): 입출력 모듈과 cpu간 교환되는 데이터를 기억
명령어 수행
- 프로그램은 cpu에 의해 수행되며 메모리에 저장된 명령어들의 집합으로 구성된다.
- 명령어 처리는 반입, 수행 두 단계로 구성
- cpu가 메모리로부터 한 번에 하나의 명령어를 반입(fetch) 후 명령어 실행(execution)
- 위 과정이 반복됨. 반복되는 처리 과정을 명령어 사이클(instruction cycle)이라고 함.
- 각 명령어 사이클이 시작될 때 CPU는 메로리로부터 명령어롤 반입
- 프로그램 카운터(PC)가 다음에 반입할 명령어의 주소 저장
- CPU는 각 명령어를 반입한 후 PC를 증가시켜 순서대로 다음 명령어 반입
- 반입된 명령어는 명령어 레지스터(IR)로 적재
- 명령어의 비트들은 처리기가 행해야 작업을 명시
- 처리기는 명령어를 해석, 요구된 작업 수행CPU에게 요구된 작업 종류
- CPU - 메모리 : 데이터는 CPU로부터 메모리로, 또는 메모리로 부터 처리기로 전송
- CPU - 입출력 : CPU와 입출력 모듈 간의 데이터 전송
- 데이터 처리 : CPU는 데이터에 대해 산술 또는 논리 연산 수행
- 제어 : 명령어는 수행 순서 변경을 명시 가능. 위 명령을 통해 CPU는 PC수치 변경으로 명령 처리 순서 제어 가능
프로그램 수행 예시
- 1단계(반입): MAR, MBR을 이용하여 메모리의 명령어 주소 및 데이터를 조회.
- PC에 첫 번째 명령어 주소인 300을 저장 - 300번째 메모리에 저장된 명령어를 IR로 적재 - PC값 1 증가
- 2단계(수행): IR에 저장된 명령 수행
- 연산 결과를 AC에 임시 저장
- 3단계(반입): 301번째 메모리에 저장된 명령어를 IR로 적재
- PC값 1 증가
- 4단계(수행): IR에 저장된 명령 수행
- 연산 결과를 이전 내용에 더해지고, 그 결과를 AC에 임시 저장
- 5,6단계 : 위 내용 반복인터럽트
- 인터럽트는 CPU의 처리율을 향상시키기 위해 제공
인터럽트 부류
- 프로그램: 명령어 수행 결과로 발생하는 어떤 조건에 의해 생성 ex) 스택오버플로우, 0으로 나누기, 비허용 메모리 공간 참조 등
- 타이머: 특정 기능을 정규적으로 수행할 수 있도록 허용
- 입출력: 입출력 연산의 정상적인 종료를 알리거나 다양한 에러 조건을 알림
- 하드웨어 실패: 전원 결함 또는 메모리 패리티 에서 같은 결함에 의해 생성
- 인터럽트는 처리기의 정상적인 흐름을 방해 그럼에도 불구하고 인터럽트를 통해 CPU를 더 효울적으로 사용 가능
- 대부분의 I/O 디바이스는 CPU보다 느림.
- CPU는 디바이스가 작업을 완료 할 때까지 기다려야 함.
- 입출력 장치 대기시간을 최소화하기 위하여 인터럽트 제공
- 인터럽트를 이용할 경우, 입출력 연산이 진행되는 동안 CPU는 다른 명령어를 수행 가능
인터럽트와 명령어 사이클
- CPU는 수행 중,후로 인터럽트 발생 여부 검사.
- 만약 인터럽트가 발생하지 않았으면 지금 수행중인 프로그램의 다음 명령어 반입
- 외부 디바이스가 서비스 준비가 되면 CPU에게 인터럽트 요청 신호를 전송
- 인터럽트가 있으면, 현재 프로그램의 실행을 멈추고, 인터럽트 처리 루틴 실행
- 인터럽츠 처리가 완료되면 원래 프로그램의 수행이 재개
인터럽트 처리 과정
- psw: 프로그램 상태 워드 : 현재 수행중인 프로세스의 상태 정보를 저장
- 중첩 인터럽트
- 순차적 인터럽트 처리는 한 인터럽트가 끝난 후에 다른 인터럽트를 처리.
- 하나의 인터럽트가 처리 중에는 다른 인터럽트를 금지시킴.
- 상대적인 우선 순위나 시간 긴급도를 고려하지 않음.
- 중첩 인터럽트는 인터럽트 간 우선 순위를 지정
- 우선순위가 높은 인터럽트가 낮은 우선순위인 인터럽트를 인터럽트할 수 있도록 허용
메모리 계층 구조
- 메모리의 설계 제약점은 크기, 속도(접근 시간), 비용 이 세 가지임.
- 접근 시간이 빠를 수록 비트 당 비용이 높아짐.
- 용량이 커질수록 비트 당 저장 비용이 낮아짐.
- 용량이 커질수록 접근 시간이 길어짐.
- 윗 단계일 수록 접근 시간이 짧고, 저장가능 크기가 작음.
2차 메모리
- 보조 메모리라고도 부름
- 외부 저장 장치
- 비휘발성(non - volatile)
- 프로그램과 데이터 파일을 저장하기 위해 사용
- HDD SSD 등캐싱 (Caching)
- 빠른 저장 장치에 정보를 복사해 놓는 기법.
- 고속의 메모리에 최근에 접근한 데이터를 저장
- 캐시 관리 정책 필요
- 캐싱한 복사된 데이터는 다른 메모리 레벨에 있는 데이터와 일치해야 함캐시 원칙
- 주 메모리의 한 영역에 복사본이 있음
- CPU는 먼저 캐시를 참조
- 캐시에 원하는 데이터가 없으면 메모리 블록에서 데이터를 탐색
- 탐색한 데이터를 캐시로 저장
- 참조 지역성 떄문에 향후 참조될 데이터는 캐시에 존재할 가능성이 높음
캐시 메모리(Cache memory)
- 운영체제에게 보이지 않고 하드웨어적으로 처리
- 메모리 접근 속도를 향상
- 프로세서의 속도는 메모리 속도보다 빠름
- 참조 지역성(locality of reference)의 원리를 이용
디스크 캐시(Disk Cache, Buffer Cache)
- 메인 메모리가 디스크에 저장된 데이터를 가져오기 위해 사용
- 디스크 쓰기는 집중화(클러스터) 되는 경향이 있음
- 데이터 재접근 시 디스크가 아닌 버퍼 캐시에서 데이터를 읽어오므로 접근 속도 향상
참조 지역성(Locality of Reference)
- 프로그램이 실행되는 도중 CPU에 의해서 접근되는 메모리 영역이 집중화(cluster)하는 경향이 있음.
- 장기적으로는 클러스터가 변경될 수 있으나, 짧은 시간 동안에는 메모리 접근이 고정된 수의 클러스터에 한정됨.
- 명령어, 반복문, 서브루틴, 데이터, 테이블, 배열 접근 시 인접 메모리를 접근
적중률
- 메모리의 접근 중 데이터가 빠른 메모리에 존재할 비율
- ex) T1(레벨 1 메모리 : 캐시 메모리) 접근 시간, 예시로 T1 = 0.1us
T2(레벨 2 메모리: 메인 메모리) 접근 시간, 예시로 T2 = 1.0us - 메모리 접근 중 90% 가 캐시에서 데이터를 찾는 경우 : Hit ratio = 90% = 0.9
- 평균 메모리 접근 시간은 T1 * H + (T1 + T2) * (1-H) = 0.1us* 0.9 + (1.1)0.1
- 만약 캐시에 없는 데이터를 찾는 경우, 처음에 캐시 메모리 조회 후 메모리로 가서 탐색하기 때문에, non hit 시 T1 + T2의 접근 시간이 예상됨
캐시 원칙
- 캐시의 크기 : 작은 크기의 캐시도 성능에 큰 영향을 미침
- 블록의 크기 : 캐시와 메인 메모리 사이에 교환되는 데이터 단위
- 블록의 크기가 커질수록 보다 많은 유용한 데이터 적재 가능 -> 높은 적중률 보임.
- 단, 과도하게 클 시 캐시 적중률이 낮아짐 -> 캐시로 불러온 데이터의 사용 확률이 방출된 데이터보다 재사용 확률이 낮아질 수 있기 때문
- 매핑 함수(사상 함수) : 블록이 캐시의 어느 위치에 저장될지를 결정
- 교체 알고리즘 : 교체될 블록을 선정 : 가장 오랬동안 참조되지 않은 블록을 교체 :(LRU : Least Recently Used) 알고리즘쓰기 정책 : 어느 시점에 메모리를 사용할 지 결정
- 블록이 갱신될 때마다 씀 -> 메모리 쓰기 연산 극대화
- 블록이 교체될 때마다 씀 : 메모리 쓰기 연산을 최소화, 단 메모리가 쓸데 없는 자료를 저장하고 있어야 -> 직접 메모리 접근 방해 가능성입출력 통신 기술CPU는 I/O 연산이 끝날 때까지 I/O 모듈의 상태를 주기적으로 체크
프로그램된 입출력 (Programmed I/O)
- 처리기가 아닌 입출력 모듈이 수행
- 입출력 상태 레지스터에 적절한 비트를 세트
- 인터럽트가 없음
- 처리기는 연산이 완료될 때까지 주기적으로 상태 검사
- I/O 연산 수행 전까지 CPU는 상태검사 외 어떤 처리도 행하지 않음
- I/O 모듈 송신 준비때까지 오랫동안 대기해야
- 성능 하락
- I/O 모듈이 데이터를 교활할 준비가 되면 처리기에 인터럽트 전송
인터럽트 구동 입출력(Interrupt - driven I/O)
- I/O 모듈이 데이터를 전달할 준비가 될 때 CPU를 인터럽트
- 처리기는 프로그램의 실행 문맥을 저장하고 인터럽트 처리 루틴을 실행
- CPU는 I/O 모듈을 대기할 필요 없이 다른 작업 수행
- 데이터가 CPU를 통해서 이동되기 때문에 CPU의 시간 낭비
직접 메모리 접근 (DMA: Direct Memory Access)
- 디바이스 제어기는 처리기의 간섭 없이 주기억장치와 I/O 모듈의 버퍼 사이에 데이터 블록을 직접 전송
- 메모리 사이클 훔침 기법을 이용 -> 메인 메모리와 IO 모듈 상에 데이터를 직접 전송
- DMA 모듈은 데이터 전송을 위해 IO 제어기 이용 -> 작업이 종료되면 CPU에게 인터럽트를 통해 알림
- 많은 양의 I/O연산을 수행하는 시스템의 I/O 성능을 높여줌
하드웨어 보호
- 이중 모드 연산
- 시스템 자원을 공유하기 위해서 운영체제는 부정확한 프로그램이 다른 프로그램의 수행을 부정확하게 만들지 않도록 보장해야함
- 연산의 모드를 구분해주는 하드웨어의 지원이 필요
- 최소한 2개 이상의 모드 :
사용자 모드 - 사용자의 권한으로 연산 수행
시스템 모드(System mode := kernel mode, monitor mode) - 운영체제의 권한으로 연산 수행- 모드비트(Mode bit)를 이용하여 현재의 모드가 시스템 모드(0)인지 사용자 모드(1)인지 알려주는 하드웨어 지원
- 인트럽트가 발생하거나 장애가 발생하면 하드웨어는 시스템 모드로 모드를 전환
- 특권 명령어는 시스템 모드에서만 수행I/O 보호
- 모든 I/O 명령은 특권 명령(Privileged instruction)이다
- 따라서 I/O 명령을 수행하기 위해 운영체제의 서비스를 받아야 하며, 운영체제는 시스템 모드에서 IO 작업을 수행메모리 보호
- 프로그램이 다른 프로그램 영역을 침법하지 않도록 보호해야 함.
- 특히 운영체제의 영역은 반드시 보호되야 함
- 메모리 접근이 적법한지를 판단하여 메모리 보호
- 메모리 보호를 하기 위해 2가지 레지스터를 사용
베이스 레지스터(Base register) - 물리 메모리의 시작주소 저장
경계 레지스터(Limit register) - 메모리에 올라가 있는 프로그램의 크기를저장 - 정의된 메모리 영역 이외에 있는 주소 공간도 보호되어야 함CPU 보호
- 타이머: 특정 시간이 지나면 운영체제가 수행될 수 있도록 인터럽터를 걸어줌
- 타이머는 시분할 시스템을 구현하기 위해서도 사용
- 타이머는 현재 시간을 계산하기 위해서도 사용
- 타이머의 값을 초기화 시키는 Load-timer 명령어는 특권 명령어임.
728x90
'운영체제' 카테고리의 다른 글
프로세스 기술과 제어 (0) | 2022.05.22 |
---|---|
운영체제 개요 (0) | 2022.05.20 |