CPU가 예측해서 발생한 심각한 문제(CPU 게이트)CPU = 교수, Cache Memory = 조교, RAM = 도서관조교는 교수가 다음에 사용할 책을 예상하여 도서관에서 가져온다.반대의 관점 → 조교가 시키지도 않은 일을 하여 교수의 행동이 예측됨. CPU 정보 처리 방식CPU 안에는 레지스터가 있다. CPU는 일을 할 때 임시로 숫자를 레지스터에 적어둔다.각종 프로그램들은 RAM에 자신이 필요한 정보를 적어둔다.캐시는 RAM에 비해서 매우 빠르게 정보를 넣었다 뺐다 할 수 있다. 멜트다운 간단 설명유저 프로그램이 운영체제 권한 영역을 훔쳐보는 취약점100번 방에서 숫자를 꺼낸다.100번 방에서 꺼낸 숫자를 레지스터 al에 임시로 저장한다.al에 저장된 숫자와 1000을 더한다. (여기에서는 109..
기억장치 종류와 역할CPU = 연산 장치, Core(코어)가 연산을 한다.CPU 연산 속도 ↑ = 처리량 ↑ = 성능 ↑클럭 속도 ↑ = Scale Up, 코어의 개수 ↑ = Scale Out, RAM = 연산을 하는 데이터 저장RAM은 CPU에 비해 속도가 느리므로 속도 차이를 극복하기 위해 중간에 Cache memory를 사용한다.CPU가 연산을 하면서 Cache memory에 RAM에서 가져올 다음 정보를 예측하여 복사해온다.CPU: 교수, Cache memory: 조교, RAM: 도서관 → 조교는 교수가 다음에 사용할 책을 예상하여 도서관에서 가져온다. CPU도 당신처럼 예측하고 미리 움직인다코어가 명령 + 데이터를 L1 캐시에서 가져온다.예측은 캐시 메모리에서 발생한다.0에서 99까지 숫자를 ..
DMA 정보 전달 방식기존 정보 전달 방식 = CPU → RAM 영역 1 → RAM 영역 2 → Device 영역 DMA(Direct Memory Access) = 약속된 곳에 Direct로 데이터를 Write → NIC에서 사용DMA 사용한 정보 전달 방식 = CPU → Device 영역 네트워크 상에서 정보 통신 어떤 파일이 있고 그 파일은 커널의 구성요소를 추상화 한다. → 인터페이스그 파일에는 I/O Buffer가 있다. 각 영역에는 I/O Buffer가 존재, I/O Buffer는 일종의 데이터 저장소다. → RAM 메모리 일부TCP/IP 네트워크 통신에서 파일은 Socket이 된다.파일에 대해 Write 한다. = 소켓은 Send 한다.NIC은 DMA를 지원한다.DMA 사용 시 그림1과 같..
인터럽트란?사전적 의미로는 '끼어들다', '중단시키다' 정도의 의미를 가진 말로 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 것을 말한다. 인터럽트의 종류인터럽트의 종류는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나뉠 수 있다. 외부 인터럽트전원 이상 인터럽트(Power fall interrupt): 말 그대로 정전, 파워 이상 등기계 착오 인터럽트(Machine check Interrupt): CPU의 기능적인 오류외부 신호 인터럽트(External Interrupt)- 타이머에 의한 인터럽트: Preemptive 개념을 생각하면 된다. 자원이 할당된 시간이 다 끝난 경우- 키보드로 인터럽..
컴퓨터는 3층집으로 되어 있다.컴퓨터는 3개 계층으로 구성되어 있다. → H/W, S/W(Kernel, User)H/W = PhysicalS/W = Logical ≒ VirtualCPU 64bit, OS 64bit = 64bit Platform운영체제(OS)는 소프트웨어다. → MS Word와 같다.OS는 위로는 Application을 서포트한다. (잘 작동하도록 도와줌)OS는 밑으로는 하드웨어를 제어/관리 한다.Interrupt = 방해(알람), 컴퓨터와 주변기기가 통신(I/O)을 할 때 마다 Interrupt가 발생한다.I/O(입출력) = Read(읽기), Write(쓰기) C언어 printf 함수 사용하여 Hello World 출력 시 순서 (OS 제어의 순서)printf 함수를 이용해서 API를 ..
2진 트리(Heap)자료당 두 개의 위치정보(링크)를 이용해 셋을 하나로 묶는다.맨 꼭대기를 기준으로 왼쪽에는 작은 숫자, 오른쪽에는 큰 숫자 카드가 있다고 가정한다.생각해볼 문제: 여기에 5번이 있는지 알고 싶다 몇 번 비교하면 찾을 수 있을까? → 3회2진 트리 = Heap(힙) → 정보를 빠르게 나열하기가 굉장히 좋다. 파이썬 코드로 Heap 구현하기Heap(힙)은 최대/최소값을 찾는데 최적화된 자료구조힙은 기본적으로 완전 이진 트리 = 무조건 왼쪽 자식 노드부터 데이터 삽입힙은 데이터의 중복을 허용push → heappush (값 넣기)pop → heappop (값 빼기)최대 힙(Max Heap)최대 힙은 루트 노드가 가장 큰 값을 가지고, 부모 노드가 항상 자식 노드보다 값이 크거나 같다.최소..