TanzDev
TIL 41 (CS) 본문
CPU의 구성 - 사람으로 치면 머리로 이해하면 됨
1. 제어장치 : 명령어를 해석하고 실행하는 부분, 주어진 명령에 따라 다음에 실행할 동작을 결정함
2. 연산장치 : 산술 및 논리 연산을 수행하는 부분으로 주어진 명령에 따라 데이터를 계산하고 비교함
3. 레지스터 : 매우 빠른 속도로 데이터를 저장하는 작은 메모리로, 연산에 필요한 데이터나 명령어를 저장하고 전송함
작동 - 일상생활에서 명령을 받아 수행하는 것이랑 유사함
- CPU는 명령어 주기를 통해 작동, 명령어 주기는 명령어를 가져오고(Fetch) 해석하고 (Decode), 실행 (Execute) 그 결과를 저장하는 (Write Back) 과정으로 이루어짐, 이러한 과정은 CPU 클럭 신호에 의해 정확한 타이밍에 수행됨
성능 - 인간이 하는 일의 효율성과 비슷함
1. 클럭속도 : CPU의 클럭 속도가 높을수록 명령어를 처리하는 속도가 빨라지며 성능이 향상됨 ( 단적으로 오버클럭 )
2. 코어 수 : 다중코어 CPU는 여러 작업을 동시에 처리할 수 있음, 다중 작업 환경에서 성능이 향상됨
3. 캐시 크기 : 레지스터와 메인 메모리 사이에 위치한 캐시 메모리의 크기가 클수록 데이터 접근 속도가 향상되어 성능이 향상됨
4. 아키텍쳐 및 최적화 : CPU의 아키텍처와 최적화 수준은 성능에 큰 영향을 미침, 최신 기술을 적용하고 최적화된 설계를 사용하는 CPU는 더 뛰어난 성능을 제공할 수있음
메모리
- 레지스터 = CPU
- 캐시메모리(SRAM), 메인 메모리(DRAM) = 주 기억장치
- 하드디스크(HDD) = 보조 기억장치
3-1. 캐시 메모리 (L2,L3)
컴퓨터 시스템 향상을 위해서 CPU와 주기억장치 사이에 있는 아주 작은 비싼 메모리
L2, L3 캐시메모리는 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 놓고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하여 시스템 성능을 향상시켜 (레지스터와 비슷하지만 다름)
주 기억장치
- 주 기억장치는 컴퓨터가 전원이 꺼지면 지워지지만 조금더 빠르게 조회할 수 있는 저장공간
- 컴퓨터의 CPU가 현재 처리중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리
보조 기억장치
- 사용자가 사용하고자 하는 데이터와 프로그램을 반영구적으로 저장
- 전원을 끄더라도 저장된 데이터나 정보가 날아가지 않는 비휘발성 메모리
- 그렇기 때문에 우리가 설치하는 모든 프로그램이나 파일들은 이곳에 반영구적으로 저장
1. CPU 심화
스케쥴링
일반적으로 프로세스는 CPU를 한차례 사용(CPU burst)하고 I/O를 한차례 사용(I/O burst)하는 주기를 반복한다. I/O를 사용하는 주기에서는 CPU를 사용하지 않는다. 그렇다면 여러 프로세스를 처리할 때, 한 프로세스가 모든 작업이 끝날때까지 기다렸다가 다음 프로세스를 실행하는 방법보다 한 프로세스를 실행 가능한 시점까지 실행하고, I/O 등 CPU를 사용하지 않는 작업을 할 때는 다른 프로세스를 실행한다면 CPU 사용 효율을 높일 수 있다.
- 프로그램을 실행해주는 주체 = 프로세스
- ex. 카카오톡을 실행하는 프로세스
- 작업을 처리해주는 주체 = 쓰레드
- ex. 메세지 발송을 처리하는 쓰레드
<< 프로세스와 스레드의 차이점에 대해 설명하시오에 대한 부분>>
- CPU는 한정된 자원으로 최대한 성능을 이끌어내기 위해서는 CPU를 적절하고 효율적으로 사용해야함.
- 이해하기 쉽게 표현하다면, OS는 실행 대기중인 프로그램(프로세스)들에게 CPU 자원 배정을 적절히 하여 시스템의 성능을 끌어올릴 수 있습니다. (결국 처리는 CPU 가 하니까)
- 공통 배정조건 : 오버헤드 ↓ / 사용률 ↑ / 기아 현상 ↓
- 오버헤드 : 프로세스가 필요한 자원보다 더 많이 사치부리며 사용하지 않도록
- 사용률 : 프로세스가 최대한 자원을 많이받고 빨리 처리하도록
- 기아 현상 : 프로세스가 자원할당을 못받아서 배고픈상태로 대기하지 않도록
- 목표에 따른 배정조건 :
- 배치 시스템 : 가능하면 많은 일을 수행. 시간(time) 보단 처리량(throughout)이 중요
- 대화형 시스템 : 빠른 응답 시간. 적은 대기 시간이 중요
- 실시간 시스템 : 실시간(time) 즉, 최소 응답시간(dead line) 이 중요
CPU(I/O) 버스트는 각각 CPU 명령 수행과 I/O(입출력 요청) 처리까지 걸리는 시간
- 프로세스 실행은 “CPU실행 ↔ 입/출력 대기” 의 반복을 의미
- CPU Burst
- 프로세스의 사용중에 연속적으로 CPU를 사용하는 구간을 의미
- 즉, 실제 CPU 를 사용하는 스케쥴링의 단위
- I/O Burst
- 프로세스의 실행 중에 I/O작업이 끝날때까지 Block되는 구간을 의미
스케쥴링 알고리즘 평가기준
- CPU이용률 : 전체 시스템 시간 중, CPU가 작업을 처리하는 시간의 비율
- 처리량 : CPU가 단위 시간당 처리하는 프로세스의 개수
- 총 처리 시간 : 프로세스가 시작해서 끝날때 까지 걸린 시간
- 대기시간 : 프로세스가 준비완료 큐에서 대기하는 시간의 총 합
- 응답시간 : 대화식 시스템에서 요청 후 첫 응답이 오기까지 걸린 시간
선점 스케쥴링(Preemptive Scheduling)
OS가 CPU의 사용권을 선점할 수 있는 경우, 강제 회수하는 경우 (처리 시간 예측 어려움)
OS가 나서서 CPU사용권을 '선점'하고, 특정 요건에 따라 각 프로세스의 요청이 있을 때
프로세스에게 분배하는 방식
- 가장 자원이 필요한 프로세스에게 CPU를 분배하며 상황에 따라 강제로 회수할 수도 있습니다.
- 따라서 빠른 응답시간을 요하는 대화식 시분할 시스템에 적합하며 긴급한 프로세스를 제어할 수 있다.
선행 스케줄링은 컴퓨터 과학에서 사용되는 중요한 개념 중 하나
작업은 시작 시간과 종료 시간이 정해져있다.
하나의 작업이 다른 작업에 의해 막히는 것을 방지하기 위해, 선행 스케줄링은 작업이 언제 시작해야 하는지를 결정
A, B, C라는 세 가지 일을 해야 한다고 가정했을때,
A가 먼저 완료되어야 B를 시작할 수 있고,
B가 끝나야 C를 시작할 수 있다고 하자.
이것은 선행 스케줄링의 개념이다.
A를 끝내고 나서 B를 시작하고, B를 끝내고 나서 C를 시작하는 것
이러한 방법은 여러 작업을 효율적으로 처리하고, 작업이 서로 방해되지않도록 한다.
이렇게 하면 시간을 절약하고, 작업을 빠르게 완료할 수 있다.
금일 고등학교랑 학부초기에 배웠던 CS에 대해 공부하고있다. 알고리즘이 중간중간 엮여나오고 수업이 엄청나게 재미가 없는탓에 다른 자료를 찾아보고 다시 공부해서 리마인드 하며 괴롭게 공부중이다...
'기록보드 > TIL' 카테고리의 다른 글
TIL 43 (CS 프로세스 생성주기) (0) | 2024.03.20 |
---|---|
TIL 42 (CS 스케쥴링) (0) | 2024.03.20 |
TIL 40 (알고리즘 문제 마무리) (3) | 2024.03.16 |
TIL 39 (알고리즘 문제) (1) | 2024.03.14 |
TIL 38 (알고리즘 문제) (0) | 2024.03.13 |