힘이들어요오

힘이들어요오

래서판다는 귀엽다

·

5 min read

CPU는 무엇인가(나도 무엇인가)

1. 제어 장치 (CU, Control Unit)

  • 컴퓨터 시스템의 작동을 통제하고 지시하는 장치

  • 기억 장치로부터 프로그랭 명령을 순차적으로 꺼내 해독하고, 해석에 따라서 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력 장치 등으로 보내는 장치

  • 프로그램 카운터(PC), 명령 해독기, 부호기, 명령 레지스터 등으로 구성된다

2. 연산 장치 (ALU, Arithmetic and Logical Unit)

  • 명령어를 실행하기 위한 마이크로 연산을 수행하는 장치

  • 연산에 필요한 자료를 입력 받아 산술, 논리, 관계, 이동(Shift) 등 다양한 연산을 수행하는 장치

  • 가산기, 보수기, 누산기, 데이터 레지스터 등으로 구성된다.

3. 레지스터 (Register)

  • CPU(중앙 처리 장치)내에 있는 소규모의 고속 기억 장치

  • 명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장한다.

  • 레지스터는 메모리 계층의 최상위에 위치하며 가장 빠른 속도로 접근 가능한 메모리이다.

  • 용도에 따라 범용 레지스터와 특수 목적 레지스터로 구분됨

아니 내가 아는건 cpu는 컴퓨터의 뇌다 컴퓨터의 심장이다 이런 느낌인데 뭐가 이렇게 많아

일단 기본적 CPU구성 3가지가 이것이다

레지스터는 무엇인가(나도 모른다)

레지스터는 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 다목적 공간이다.

PC(Program Counter)

- PC는 실행 할 명령어의 주소를 가리키는 레지스터다.

- 코드를 실행시키면 코드가 한 줄 씩 내려가며 실행되는데, 프로세스는 한 줄을 처리 후 다음 실행할 코드가 어딘지 알려줘야 코드를 찾아서 실행할 수 있다

레지스터의 역할

  1. CPU 내부에 존재하며 연산 제어 및 디버깅 목적으로 사용된다.

  2. 일시적 메모리 역할을 한다.

    1. CPU가 메모리에 데이터를 가져오게 되면 시간이 오래 소요 되지만, CPU 내부에 있는 레지스터에서 데이터를 가져오면 매우 빠른 시간 내에 동작이 가능하다.

    2. 연산을 위한 데이터도 저장하지만, 연산 결과도 저장한다.

프로그램이란?

프로그램(Program)은 흔히 소프트웨어라고 칭하는 애플리케이션들을 말합니다. 너무 당연한 예시긴 하지만 당장 컴퓨터에 있는 오피스 프로그램들, 카카오톡, 계산기 등이 모두 프로그램

프로세스란?-(침범 하면 안됨 그래서 통신이 어려움) -독립

예시) 내 집과 다른 집 이라 생각하면 다른 집에 침범하면 안됨 그리고 통신(이사)하기가

어렵다

반면 프로세스(Process)는 프로그램의 실행을 의미하는 동적인 엔터티 입니다. 프로세스는 프로그램이 실행될 때 운영 체제에 의해 생성

쉽게 말하면 작업 관리자에 지금 실행 중인 프로그램들이다!

프로그램(Program)이 작업하고 있는 걸 프로세싱(Processing)

프로세싱(Processing) 되고 있는 프로그램을 프로세스(Process)

뭐가 이렇게 많은가 흐어ㅓㅓㅓㅓㅓㅓㅓㅓ넘무 많다

  • 프로그램을 실행해주는 주체 = 프로세스

    • ex. 카카오톡 💬을 실행하는 프로세스
  • 작업을 처리해주는 주체 = 쓰레드

    • ex. 메세지 발송 📤을 처리하는 쓰레드

이건 돈이다 그냥 돈이다 나는 어ㅜ 식곤증 캐시! 휴대폰이나 컴퓨터에서 파일을 조금 다루어 본다면 볼 수 있는 단어이다 (캐시 삭제 ,등) 그래서 캐시는 무엇이냐

우리가 보는 화면에 출력 되는 데이터는 결국 메인 메모리에

저장된 데이터 입니다.(이게 핵심이지)

  1. 프로그램이 실행되면 디스크를 읽어서 메인 메모리에 복사해두고

  2. CPU(MMU)가 메인 메모리에서 데이터를 읽어오며 작업을 처리

  3. 이때 캐시가 중간에서 한번더 메인 메모리의 데이터를 복사해두는 것

    캐시는

  • 캐시는 계층과 계층 사이에서 속도차이를 해결하기 위한 임시 저장소.

    • ex1) 레지스터 : 메모리와 CPU 사이의 속도 차이를 해결하기 위한 캐시

    • ex2) 주기억장치 : 캐시 메모리와 보조기억장치 사이의 속도 차이를 해결하기 위한 캐시

뭐가 이리 많은데 다 외우면 좋긴하는데 그냥 한번 보고 이게 이거 라는 정도만 보자(아직은)

쓰레드... 나중에..해야 ㅡㅡㅈ ㅣ

스레드(Thread)-(예시:집에서 물건을 공유 가능)

예시)내 집 가족이랑 가구를 공유를 가능하다 그 대신 똑같은 것은 공유를 못함!

스레드는 프로세스 내부에서 실행되는 작은 작업 단위

하나의 프로세스는 내부에 여러개의 스레드가 포함

  1. 스레드는 프로세스 내부에 존재하기에 프로세스의 데이터 영역에 접근이 가능

  2. 스레드들끼리 서로의 데이터에 접근 가능

  3. 스레드도 프로세스처럼 작업을 병렬로 처리해서 속도를 높일 수 있다

쓰레드 요약

쓰레드는 운영체제의 스케줄러에 의해 독립적으로 관리될 수 있는 프로그래밍된 명령어의 가장 작은 흐름 입니다. 하나의 프로세스는 하나 이상의 쓰레드를 갖고 있습니다.

  • 멀티 프로세스 : 여러 개의 독립적인 프로세스가 동시에 실행

  • 멀티 프로세스*(예시):*크롬, 카카오톡, vscode 이런거 동시에 켜진것

  • 멀티 프로세싱*(예시):*카카오톡 메시지를 받으면서, vscode를 작성하면 그게 멀티프로세싱

  • 멀티 쓰레드 : 하나의 프로세스가 여러 작업을 여러 쓰레드를 사용해 동시(시분할)에 처리하는 것

  • 멀티 쓰레드*(예시):*크롬안에서 유튜브영상을 보고, 쇼핑을하면서 노래까지 같이든는것

프로세스(prosess)스레드 차이

치킨집에서 각자 일하는 공간이 있지만, 같이 보는 업무 가이드(Code)가 있고, 주문도 같이 받고(Data), 손님이 오고가는 홀 공간도 같이 쓴다(Heap)는 점과 비슷하나?

프로세스는 다른 프로세스의 변수나 자료에 접근할 수 없음

스레드는 메모리를 서로 공유 가능하고 각각의 스레드는 별도의 스택을 가지고 있지만 힙 메모리는 서로 공유가 가능하다

프로세스 메모리

메모리영역(Code, Stack, Heap, Data)

  • 프로세스는 운영체제로부터 별도의 메모리 영역을 할당 받고 스레드는 Stack 을 제외한 Code/Data/Heap 부분은 공유해 서로 읽고 쓰게됨

  • 코드영역(실행할 프로그램의 코드)

  • 데이터영역(전역변수와 정적변수가 저장)

  • 스택 영역(잠시 사용되었다가 사라지는 데이터를 저장하는 영역)

  • 힙 영역(동적 데이터 영역)(Que는 힙 영역이다)

쓰레드 풀 이란?

쓰레드 풀은 작업 처리에 사용되는 쓰레드를 제한된 개수만큼 정해 놓고 작업 큐(Queue)에 들어오는 작업들을 하나씩 쓰레드가 맡아 처리하는 것

쓰레드 풀 요약

작업 처리에 사용되는 쓰레드를 제한된 개수만큼 정해 놓고, 작업 큐에 들어오는 작업들을 하나씩 쓰레드가 맡아 처리하는 기법

메인 스레드가 프로그램이 작업을 동시(시분할)에 실행할 수 있도록 여러 스레드를 미리 생성해두고 유지 관리

그렇다고 많이 늘리면 안됨 (많이 늘리면 메모리 낭비가 심하잖아...)하드웨어의 제한적인 사항(CPU, Memory 등)이 있기 때문에 관리할 필요가 있음

사용이유!

프로그램 성능 저하를 방지하기 위해

매번 발생하는 작업을 병렬처리하기 위해 쓰레드를 생성/수거하는 데 따른 부담은 프로그램 전체적인 퍼포먼스를 저하

다수의 사용자 요청을 처리하기 위해

대규모 프로젝트에서 특히 중요함 (아마도)

-스쿼드 방

네트워크 언급(이론x 실무적o)

실무적 얘기? 회사 및 프로젝트에서 어떻게 네트워크를 처리하는 방법

DMZ(비무장 지대)

네트워크에도 DMZ(비무장 지대)가 있다

Zone 과 Zone 사이에는 보안 장비가 있어야 한다(나라마다 지침함!)

  • 난 보안 담당자가 아닌데 배워야 해?(나중에 배포까지 다 할려 했는데 방화벽 때문에 막혀서 배포를 못할 수 있음)

Web 서버를 보통 1개로 안 만들고 1, 2 정도로 나눔 (web1에 넣을 수있 는데 web2에 못 넣으면.. 안되겠지?)

라운드 로빈 (시분할 시스템을 위해 설계된 선점형 스케줄링의 하나)

Packet Internet Groper [ping] : PING 프로그램은 ICMP 프로토콜을 사용한다

네트워크통해 상대에게 접근할 수 있는 가를 확인하기 위한 프로그램(서버 확인 용)

Cloud(구글 드라이브, AWS, 등) : 데이터 센터(물리적,또 비쌈)을 안 쓴다 / 논리 적으로 가능

놀러 갔다 배운거(fit.민준튜터님)

인터럽트는 블루 스크린이다

인터럽트는 프로그램 실행 중에 예기치 않은 상황이 발생하면 현재 실행 중인 작업을 일시 중단하고, 발생된 상황을 처리한 후 실행 중이던 작업으로 복귀

캐시 메모리는 무엇이냐?(면접 질문형)

L1 캐시 메모리는 CPU 내부에도 있고, L2 L3 캐시 메모리는 CPU와 별개로 존재도 한다

역할은 CPU의 연산을 도와줍니다.

예를 들어 RAM에서 데이터를 가져오는 것은 비용이 크기 떄문에 조회할 떄

Cache에 저장해두었다가 다시 조회하면 이 저장 장치에서 사용하게 되는데 이를

캐시 히트라고 합니다.

내일 까지 AWS가입 보류

아직 할게 많은데 언제 다 외울까 흐어ㅓㅓㅓㅓㅓㅓ