Search
🧑‍💻

하드웨어 관계와 구조

입력구조

컴퓨터와 사용자간의 관계
사용자가 입력한 문자들을 자바같은 가상머신이 컴파일작업을 통해서 OS가 이해할 수 있는 언어를 변환해준다.
SHELL언어는 HW가 이해할수 있는 2진수 언어로 변환하여 하드웨어에게 명령을 내린다.
특히 C언어 같은경우에는 Windows라는 프로그램에 종속된 언어기 때문에, C언어로 프로그램을 개발한다면 IOS에서 구동이 되지 않는다. 따라서 MAC유저를 위해서 프로그램을 다시 짜야하는 상황이 발생한다.
이런 상황에서 자바같은 가상머신은 OS를 위해 변환해주는 작업을 대행해준다. 그래서 이런 언어로 개발을 하게 된다면은 일을 두번할 상황이 줄어든다.
플러터 언어도 마찬가지이다. 한번 프로그램을 짜놓으면 다른 OS와 호환이 가능해서 효율적이다.

기본 통신 체계

사용자의 언어가 기계가 이해할 수 있는 언어로 변환
OS는 HW가 이해할 수 있는 8비트언어로 변환 → 인코딩 작업
OS언어 SHELL이 아스키코드로 인코딩 되어서 2진수 언어로 전환
전달되는 8비트 정보의 모습, 이 8비트의 경우의 수로 아스키 코드와 연결된 문자의 값을 변환할 수 있다.
8비트로 표현가능한 경우의 수와 아스키코드 그리고 연결된 문자들 (출처 https://velog.io/@rkio)
8비트로 변환된 언어는 전류와 함께 이동 → 통신
통신전달된 8비트 언어는 상대방의 HW로 입력됨
입력된 8비트 언어를 SHELL언어로 변환 → 디코딩 작업
아스키코드가 OS언어 SHELL로 변환됨

하드웨어 구조와 관계

cpu에는 레지스터에 저장된 정보를 가지고 연산을 한다. (캐시메모리)
버스의 크기 - 한방에 퍼줄 수 있는 용량
레지스터의 처리용량에 따라 프로그램의 버스의 크기를 결정한다.
레지스터크기 32bit에 64bit프로그램을 사용한다면 에러가 난다.
레지스터크기 64bit에 32bit프로그램을 사용한다면 에러는 나지 않으나 속도가 엄청 느려진다.
캐시 메모리 - 상대적으로 더 빨리 엑세스할 수 있는 메모리
메모리에 비해서 레지스터를 캐시메모리라 부를수 있다.
하드디스크에 비해서 메모리를 캐시메모리라 부를수 있다.
책상위에 사용중인 책과 책장에 꽂힌 책을 비교한다면 책상위에 바로 사용할 수 있는 책들을 일컫는 경우이다.
메모리 (전류기반) - 하드디스크 (물리기반)
RAM이 휘발성인 이유는 전류로 데이터를 저장하기 때문
하지만 그 때문에 처리속도 검색속도가 ROM에 비서 100배 정도 차이가남
로딩 - 하드디스크에 기록된 물리기반의 정보를 전류기반인 메모리로 변환해주는 과정
IO (Input Output) → 컴퓨터의 속도에서 제일 오래걸리는 작업.
결국 속도를 줄이기 위해서는 핵심인 IO시간을 줄여야된다. IO 최적화없이 시간줄이는 건은 뛰어봤자 도찐개찐.
부팅 - 윈도우 실행시 필요한 정보들을 메모리에 올리는 과정

하이브리드 언어 (두가지의 기능을 갖춘 언어)

기능1 - 컴파일
사전에 받은 스크립트를 변환
속도가 빠르다
기능2 - 인터프리터
명령을 내림을 동시에 번역 - 실시간 번역
속도가 컴파일에 비해서 상대적으로 느리다.
컴파일이 없는 언어들을 말함
파이썬
두가지 기능을 갖춘언어를 하이브리드언어
자바