2. 컴퓨터의 요소
본 게시글은 책 : 면접을 위한 CS 전공지식 노트 (출판사 : 길벗, 주홍철 지음) 을 참조하여 작성하였습니다. + 구글링
+ 컴퓨터 구조와 운영체제 50분만에 핵심 개념 정복하기 (ft. 강민철 저자님) from 조코딩 (페이지 끝 링크 참조)
◆ 컴퓨터의 요소
- 왜 알아야할까 ?
: 문제 해결 능력 상승
ex) 옆사람(혹은 제3자)과 코드가 똑같은데 왜 안돼지 ? ( == 맞왜틀?)
=> 컴퓨터의 밑단부터 어떤 형태로 실행이 되는 건지 확인 하여 해결 가능
=> 컴퓨터를 미지의 대상에서 분석의 대상으로 바라 볼 수 있는 힘 생성
: 성능, 용량, 비용 설계 능력 상승
ex) 서버 컴퓨터를 사야한다? 어떤 것을 중점적으로 골라야하는가
=> CPU, 메모리지, 스토리지 선택 필요
- 컴퓨터의 구조
: 컴퓨터가 이해하는 정보는 결국 데이터와 명령어
: 데이터는 숫자, 문자, 이미지 등 과 같은 정적인 정보
: 명령어는 0과 1로 구성되며, 컴퓨터를 실직적으로 움직이는 정보
ex) 명령어 : 1과 2를 더해라
데이터 : 1, 2
: 소스 코드는 명령어로 변환 되어 입력 (컴파일)
- 컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 구성 (by 책)
- 컴퓨터는 4가지의 핵심 부품 CPU, 메모리, 보조기억장치, 입출력장치로 구성 (by 조코딩님 유튜브)
◆ CPU (Central Processing Unit)
- CPU는 산술논리연산장치(ALU), 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치
- 메모리에 저장된 값을 읽고, 해석하고 실행하는 장치
- 관리자 역할을 하는 운영체제의 커널이 프로그램을 메모리에 올려 프로세스로 만들면 CPU가 이를 처리
- 제어 장치
: 프로세스 조작을 지시하는 CPU의 한 부품
: 입출력장치간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정
: 즉, 제어신호 (메모리 읽기, 쓰기 등)를 내보내고, 명령어를 해석하는 장치
- 레지스터
: CPU안에 있는 매우 빠른 임시기억장치 (본인은 메모리와 동일한 성질이라 암기)
: CPU와 직접 연결되어 있으므로 메모리보다 수십 배에서 수백 배까지 빠름
: CPU는 자체적으로 데이터를 저장할 방법이 없기 떄문에 레지스터를 거쳐 데이터를 전달
- 산술논리연산장치 (ALU, Arithmetic Logic Unit)
: 덧셈, 뺄셈 같은 산술연산이나 논리합, 논리곱 같은 논리 연산을 계산하는 디지털 회로
- CPU의 연산처리
1. 제어장치가 메모리에 계산할 값을 로드 요청
2. 레지스터에 메모리에 있던 값 로드 (메모리 읽기)
3. 제어장치가 산술논리연산장치(ALU) 에 레지스터에 저장된 값 계산 명령
4. 제어장치에서 계산된 값을 레지스터에 저장요청
5. 제어장치에서 레지스터에 저장된 값을 다시 메모리에 저장 요청 (메모리 쓰기)
- 인터럽트
: 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것
: 키보드, 마우스 등 I/O 디바이스로 인한 인터럽트, 0으로 숫자를 나누는 산술 연산에서의 인터럽트, 프로세스 오류 등
: 인터럽트 발생 시, 인터럽트 핸들러 함수가 모여 있는 인터럽트 벡터로 가서 함수를 실행
: 인터럽트 사이에 우선순위에 따라 실행 되며 하드웨어 인터럽트, 소프트웨어 인터럽트 두 가지로 분류
- 인터럽트 핸들러 함수
: 인터럽트가 발생했을 때 이를 핸들링하기 위한 함수
: 커널 내부의 IRQ를 통해 호출되며 request_irq()를 통해 인터럽트 핸들러 함수에 등록 가능
- 하드웨어 인터럽트
: 키보드를 연결 or 마우스 연결 등의 IO 디바이스로 인한 인터럽트
1. 이 때 인터럽트 라인이 설계된 이후 순차적인 인터럽트 실행을 중지
2. 운영체제에 시스템콜을 요청하여 원하는 디바이스로 향해 디바이스 내부 작은 로컬버퍼에 접근하여 작업 수행
- 소프트웨어 인터럽트
: 트랩(trap)이라고도 정의
: 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발동
◆ 그 외 기타 요소
- DMA 컨트롤러
: I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치
: CPU에만 너무 많은 인터럽트 요청이 들어오기 때문에 CPU 부하를 방지
: 하나의 작업을 CPU와 DMA 컨트롤러가 동시에 하는 것을 방지
- 메모리
: 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치
: RAM(Random Access Memory)를 일컬어 메모리라고도 부름(?)
: CPU는 계산을 담당, 메모리는 기억을 담당
ex) 책에서는 CPU는 일꾼, 메모리는 작업장에 비교
작업장의 크기 == 메모리의 크기
- 타이머
: 몇 초안에는 작업이 끝나야 한다는 것을 정하고 특정 프로그램에 시간 제한을 설정하는 역할
: 시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기 위해 존재
- 디바이스 컨트롤러
: 컴퓨터와 연결되어 있는 IO 디바이스들의 작은 CPU
: 옆에 붙어있는 로컬 버퍼는 각 디바이스에서 데이터를 임시로 저장하기 위한 작은 메모리
조코딩 유튜브 참조 링크 : https://www.youtube.com/watch?v=LBqJwmFMQHI&t=2735s
위의 글과 관련하여 추가적인 내용이나 피드백은 언제나 환영입니다 :)