※ CS 스터디/운영체제

2. 컴퓨터의 요소

J 크 2023. 9. 10. 22:20
728x90
반응형

본 게시글은  : 면접을 위한 CS 전공지식 노트 (출판사 : 길벗, 주홍철 지음) 을 참조하여 작성하였습니다. + 구글링

+ 컴퓨터 구조와 운영체제 50분만에 핵심 개념 정복하기 (ft. 강민철 저자님) from 조코딩 (페이지 끝 링크 참조)


◆  컴퓨터의 요소

- 왜 알아야할까 ?

    : 문제 해결 능력 상승

     ex) 옆사람(혹은 제3자)과 코드가 똑같은데 왜 안돼지 ? ( == 맞왜틀?)

            => 컴퓨터의 밑단부터 어떤 형태로 실행이 되는 건지 확인 하여 해결 가능

            => 컴퓨터를 미지의 대상에서 분석의 대상으로 바라 볼 수 있는 힘 생성

   : 성능, 용량, 비용 설계 능력 상승

     ex) 서버 컴퓨터를 사야한다? 어떤 것을 중점적으로 골라야하는가 

           => CPU, 메모리지, 스토리지 선택 필요

- 컴퓨터의 구조

    : 컴퓨터가 이해하는 정보는 결국 데이터와 명령어

    : 데이터는 숫자, 문자, 이미지 등 과 같은 정적인 정보 

    : 명령어는 0과 1로 구성되며, 컴퓨터를 실직적으로 움직이는 정보

     ex) 명령어 : 1과 2를 더해라

           데이터 : 1, 2

    : 소스 코드는 명령어로 변환 되어 입력 (컴파일)

- 컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 구성 (by 책)

면접을 위한 CS 전공노트 - 컴퓨터의 구성 예시

- 컴퓨터는 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

위의 글과 관련하여 추가적인 내용이나 피드백은 언제나 환영입니다 :)