목록2024/03/02 (5)
hmk run dev
우리가 작성한 프로그램은 대부분 운영체제에 의해 관리되고 실행된다. 운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나 (참고로, 리눅스 운영체제 소스코드 라인수만 해도 2700만줄 이라고 한다) 운영체제가 제공하는 기능은 다양하다. 그러나, 가장 많이 사용되는 가장 핵심적인 서비스는 존재한다. 컴퓨터 자원에 접근하고 조작하는, 프로그램이 올바르고 안전하게 실행하는 기능등등.. 커널 운영체제의 핵심 서비스를 담당하는 부분 운영체제가 방대한 크기의 프로그램일 지라도 커널은 대동소이하다. 대부분의 전공서는 운영체제에 대해 설명할때 커널에 대해 설명한다. 고로 이 글에서 커널 = 운영체제라고 봐도 무방하다. (UI는 운영체젠에는 속하지만 커널에는 속하지 않음) 시스템 콜과 이중 모드 사용자가 실..
클럭(clock) 1. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다. 2. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 일반적으로 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들은 그만큼 빠른 박자에 맞춰 움직이겠네요? 꼭 그런건 아니지만 일반적으로는 맞다. 클럭 속도 - 헤르츠(Hz) 단위로 측정 (초당 횟수) - 클럭이 '똑-딱-' 하고 1초에 한 번 반복되면 1Hz 클럭 신호를 무지성으로 높이면 CPU가 무지막지하게 빨라진다? 필요 이상으로 클럭을 높이면 발열이 심해짐 코어와 멀티 코어 - 클럭 속도를 늘리는 것 이외에 성능을 높이는 방법은? - 코어 수를 늘리는 방법 ex) 듀얼 코어, 멀티 코어... - 스레드 수를 늘리는 방법 ex) 멀티 ..
내가 작성한 소스코드가 어떻게 컴퓨터가 이해할 수 있는 명령어로 바꿔서 동작하게 할까? 고급 언어(js, java, python 등등)와 저급 언어 고급 언어 - 개발자가 이해하기 쉽게 만든 언어 - 컴파일 언어 작성된 소스코드가 컴파일러에 의해 저급 언어로 변환되고, 컴파일 결과로 저급 언어인 목적 코드가 생성된다, - 인터프리트 언어 인터프리터에 의해 한 줄씩 실행 소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요 없음 컴파일과 인터프리트 과정 살펴보기 https://godbolt.org/ 저급 언어 - 컴퓨터가 이해하고 실행하는 언어 기계어 이진수 혹은 16진수로 표현된 기계어 어셈블리어 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급언어 Reference https://www.ye..
알다시피 컴퓨터는 0과 1밖에 이해하지 못한다. 그런데 어떻게 우리가 작성한 문자를 해석해서 명령을 실행시킬 수 있을까? 문자집합(character set) 컴퓨터가 이해할 수 있는 문자 모음 인코딩(encoding) 코드화하는 과정 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정 문자 => 0 or 1 디코딩(decoding) 코드를 해석하는 과정 0과 1로 표현된 문자 코드를 문자로 변환하는 과정 0 or 1 => 문자 문자집합 아스키코드(ASCI) - 초창기 문자집합 중 하나 - 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어문자 - 7비트로 하나의 문자 표현(실제로는 8비트) 8비트 중 1비트는 오휴 검출을 위해 사용되는 패리티 비트(parity bit) EUC-KR - 2300여개의 한글..
컴퓨터는 0과 1밖에 이해하지 못한다. 그런데 1보다 큰수를 어떻게 이해할 수 있을까? 컴퓨터가 이해하는 가장작은 정보단위는 bit이다 비트(bit) : 0과 1을 표현하는 가장 작은 정보 단위 아래와 같이 0과 1을 표현할 수 있는 여러개의 비트로 1보다 큰 수를 표현할 수 있다. - n 비트로는 2n가지의 정보를 표현가능 - 프로그램은 수많은 비트로 이루어져 있음(브라우저, 포토샵, 게임 등등) - 다만, 평소 "이 파일은 8,920,120 비트야" 라고 표현하진 않음 - 비트보다 큰 단위를 사용함 (byte, kb, mb, gb, TB) 정보단위 워드(word) - cpu가 하번에 처리할 수 있는 정보의 크기단위 - 하드워드 : 워드의 절반 크기 - 풀워드 : 워드 크기 - 더블 워드 : 워드의 두..