Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 커널
- 폰노이만
- API
- 마이크로 커널
- 스레드
- Swift
- closure
- 프로세스
- 운영체제
- 계층형 구조 커널
- kernel
- 단일형 구조 커널
- 코딩
- 멀티프로세스
- Components
- 폴링
- IODevice
- bus
- 앱개발
- 스풀
- 폰노이만구조
- 부트캠프
- sdk
- 야곰아카데미
- 컴퓨터구조
- 멀티스레드
- 버퍼
- 캐시
- 인터럽트
- 하버드구조
Archives
- Today
- Total
생각, 고민, 문제해결의 기록
컴퓨터 성능 향상 기술 본문
컴퓨터 성능 저하 원인
구조적으로 컴퓨터 성능저하를 유발하는 이유는 메모리와 CPU의 작업속도 차이이다. CPU는 매우 빠른 속도로 작업을 처리하지만 이에 비해 메모리는 CPU보다 작업속도가 현저히 느리기 때문에 컴퓨터의 성능 저하를 유발한다.
이러한 성능저하문제를 해결하기위해 여러 기술등이 등장하게 되었다.
컴퓨터 성능 향상 기술
- 버퍼 (buffer)
- 버퍼는 CPU와 보조기억장치에서 입출력 작업 속도 차이를 극복하기 위해 사용되는 임시 저장소이다.
- 보조기억장치에서 데이터가 처리될 때마다 CPU에 하나씩 보내게 되면 CPU는 빠른 연산 속도를 가졌음에도 불구하고 전송 받는 데이터가 적어 비효율적이게된다. 이런 문제점을 해결하기 위해 버퍼는 일정량의 데이터를 모아서 CPU에 보냄으로써 성능의 낭비를 최소화한다.
- 하드웨어 뿐 아니라 소프트웨어적인 부분에서도 사용되며 흔히 우리가 동영상을 스트리밍해서 볼 때 일정량의 데이터를 버퍼에 모아 한 번에 출력시키는 버퍼링이 이에 해당한다.
- 버퍼는 여러 응용프로그램이 공유하여 사용한다. - 스풀 (Spool, Simultaneous Peripheral Operation On-Line)
- 스풀은 CPU와 입출력 장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼이다.
- 대표적으로 프린터에 사용되는 스풀러(Spooler)가 있다. 스풀러는 인쇄할 내용을 순차적으로 출력하는 소프트웨어이다.
- 다른 프로그램과의 공유를 허용하지 않기 때문에 하나의 작업이 완료되기 전까지는 다른 출력작업을 할 수 없다. - 캐시 (Cache)
- 캐시 메모리는 속도가 빠른 장치와 느린 장치에서 발생하는 병목 현상을 줄이기 위한 메모리이다.
- CPU 안에 있어 CPU 내부 버스 속도로 메모리보다 빠르게 동작함으로써 병목현상을 완화시킨다.
- 필요한 데이터를 쌓아놓는다는 점에서 버퍼와 유사하다. 캐시메모리는 CPU 간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시장소로 이후에 CPU에서 사용할 데이터를 미리 예측하여 저장해놓음으로써 CPU가 원하는 데이터가 캐시에 있을 시에 메모리로 접근하지 않고 바로 캐시에 있는 데이터를 반환한다.
- 캐시 적중률(Cache hit ratio): CPU에서 원하는 데이터를 캐시에서 찾은 경우를 캐시히트라고한다.
만약 원하는 데이터가 캐시에 없다면 메모리에 접근하여 가져오고 이를 캐시미스라고한다.
캐시의 지역성
- 시간적 지역성: 최근 액세스된 기억 장소가 가까운 미래에 다시 액세스될 가능성이 높음
- 공간적 지역성: 액세스된 기억장소와 인접한 기억장소가 액세스 될 가능성이 높음
- 순차적 지역성: 분기가 발생하지 않는 한 명령어들은 기억장치에 저장된 순서대로 인출되어 실행
폴링과 인터럽트
폴링과 인터럽트는 프로세서(CPU)와 입출력 장치 사이의 통신을 말한다.
폴링 (Polling)
폴링은 특정 주기마다 스레드를 돌며 시그널이 들어왔는지 확인하는 방식이다.
소프트웨어적인 시그널 확인이다.
장점
1. 구현이 쉽다.
2. 우선순위 변경이 용이하다.
단점
1. 특정 주기마다 계속 확인하기 때문에 리소스를 많이 먹는다.
2. 특정 주기마다 확인하기 때문에 정확한 타이밍에 시그널이 들어왔는지 확인하는 것은 불가능하고, 주기에 따른 오차도 존재한다.
인터럽트 (Interrupt)
인터럽트는 외부의 인터럽트 핀에 신호가 들어오면 즉시 인터럽트 소스를 실행하고 다시 원래의 코드로 돌아오는 방식이다.
하드웨어적인 시그널 확인이다.
커널의 Interrupt Handler가 인터럽트를 확인하고 인터럽트가 발생했다면 Interrupt Thread로 발생을 알려준다.
장점
1. 시그널이 들어온 정확한 타이밍을 알 수 있다.
2. 반응 시간이 빠르다.
3. 인터럽트 발생시에만 처리하기 때문에 시스템 부하가 적다.
단점
1. 폴링에 비해 구현이 복잡하다.
'CS > 운영체제' 카테고리의 다른 글
PCB와 컨텍스트 스위칭(Context Switching) (0) | 2022.08.10 |
---|---|
프로세스와 스레드 (0) | 2022.08.10 |
커널의 구성 (0) | 2022.08.03 |
운영체제의 역할과 구조 (0) | 2022.08.02 |