본문 바로가기

전체보기42

컴투스홀딩스 블록체인 캠퍼스 1기 회고 컴투스 홀딩스의 캠퍼스 중 하나인 블록체인 캠퍼스에 좋은 기회로 참여했다. (지난 모집공고)개인적으로 정말 뜻깊은 경험이었다! 수료한지 한 달 쯤 지나가서 늦은 감이 있지만..기억하고 싶기도 하고, 앞으로 블록체인 캠퍼스에 지원할 분들을 위해 회고를 쓴다. 선발과정 선발은 서류 - 화상 면접으로 굉장히 빠르게 진행됐다.  서류는 블록체인에 얼마나 관심이 있는지, 캠퍼스에 참여해서 어떤 모습을 보여줄 수 있는지에 대해 작성했고창업 경험이 있었기에 사업 전략 경험과 개발자로 일할 당시의 성향을 강조했다. 공고를 늦게 봤기에 후다닥 써서 제출했고, 목요일에 마감한 후 돌아오는 화요일에 바로 합격자 발표가 났다. 서류 합격 블록체인에 약간의 관심은 있었지만, 그렇다고 트렌드를 계속 주시하는 사람은 아니었기에 면.. 2024. 5. 18.
[rust] error: linker `link.exe` not found rust를 설치하고cargo run을 실행했는데 아래와 같은 문구가 뜬다. >cargo run Compiling hello-rust v0.1.0error: linker `link.exe` not found | = note: program not foundnote: the msvc targets depend on the msvc linker but `link.exe` was not foundnote: please ensure that Visual Studio 2017 or later, or Build Tools for Visual Studio were installed with the Visual C++ option.note: VS Code is a different product, and is n.. 2024. 5. 12.
[C 언어 기초] 타입 별 메모리 크기 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 아래 비트는 Windows 기준임을 알려드립니다. 64비트 운영체제 타입 크기 int 4 short 2 long 4 long long 8 char 1 float 4 double 8 int pointer 8 char pointer 8 void pointer 8 32비트 운영체제 타입 크기 int 4 short 2 long 4 long long 8 char 1 float 4 double 8 int pointer 4 char pointer 4 void pointer 4 struct의 메모리 크기 struct는 매우 독특한 동작을 한다. 구조체가 메모리 공간을 잡는 원리는 다음과 같다. (참고) 구조체는 구조체.. 2024. 1. 5.
[컴퓨터 구조] 파일 시스템 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 파일 파일은 보조기억장치에 저장된 관련 정보의 집합이며, 의미있고 관련있는 정보를 모은 논리적 단위이다. 파일을 이루는 정보 속성(메타데이터), 유형, 크기 등의 부가 정보 이름 실행하기 위한 정보 파일 생성, 삭제 등의 연산을 위해서는 운영체제에 요청(시스템 호출)해야한다. 디렉터리 파일을 일목요연하게 관리하기 위해 이용 현재는 경로의 필요성으로 트리구조 디렉토리를 이용한다. 절대 경로는 루트 디렉터리에서 자기 자신(파일)까지의 고유한 경로 상대 경로는 현재 디렉터리부터 시작하는 경로 디렉터리 연산 또.. 2024. 1. 5.
[컴퓨터 구조] 가상 메모리 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 연속 메모리 할당 프로세스에 연속적으로 메모리 공간을 할당하는 방식 스와핑 현재 실행되지 않는 프로세스를 임시로 보조기억장치로 이동시키고, 빈 공간에 다른 프로세스를 적재하는 것 스왑영역 : 보조기억장치의 일부 영역 스왑아웃 : 현재 실행되지 않는 프로세스가 스왑영역으로 옮겨지는 것 스왑인 : 스왑영역에 있던 프로세스가 다시 메모리로 옮겨지는 것 스와핑을 통해 프로세스들이 요구하는 메모리가 실제 메모리보다 큰 경우에도 프로세스를 동시에 실행 가능하다. 메모리 할당 비어있는 메모리 공간에 프로세스를 연속적.. 2024. 1. 5.
[컴퓨터 구조] 교착상태 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 교착상태란 프로세스를 실행하기 위해서 자원이 필요한데, 두 개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다리면 교착상태가 발생한다. 자원 할당 그래프 교착상태를 확인하기 위한 그래프 표현법 프로세스는 원, 자원은 사각형으로 표시 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현 프로세스가 사용중인 자원은 점에서부터 프로세스를 향해 화살표 표시 프로세스가 기다리는 자원은 프로세스로부터 사각형에 화살표 표시 위 그래프에서 교착상태가 발생하면 원의 형태를 띄게 된다. 교착상태 발생 조건 .. 2024. 1. 5.
[컴퓨터 구조] 프로세스 동기화 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 동기화 동시다발적으로 실행되는 많은 프로세스는 서로 데이터를 주고 받으며 협력한다. 따라서 아무렇게나 동시에 실행되어서는 안되며, 동기화가 필요하다. 프로세스 동기화란 프로세스들 사이의 수행 시기를 맞추는 것이다. 프로세스들 사이의 수행 시기를 맞추는 것은 아래 두 가지를 말한다. 실행 순서 제어 : 프로세스를 올바른 순서대로 실행하기 상호 배제 : 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기 동시에 접근해서는 안되는 자원을 공유 자원, 공유 자원에 접근하려는 코드 영역을 임계구역으로.. 2024. 1. 4.
[컴퓨터 구조] CPU 스케줄링 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. CPU 스케줄링 개요 CPU 스케줄링은 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 말한다. 컴퓨터의 성능과도 직결된다. CPU를 사용하고 싶은 프로세스들이 차례로 돌아가며 사용할 수도 있지만, 좋은 방법이 아니다. 프로세스마다 우선순위가 다르기 때문이다. 우선순위가 높은 프로세스에는 대표적으로 입출력 작업이 많은 프로세스가 있다. 입출력 작업이 많은 프로세스를 입출력 집중 프로세스, CPU 작업이 많은 프로세스를 CPU 집중 프로세스라고 한다. 입출력 집중 프로세스는 실행 .. 2024. 1. 4.
[컴퓨터 구조] 프로세스와 스레드 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 프로세스 개요 보조기억장치의 프로그램을 메모리에 적재하는 순간 프로세스가 된다. 이 과정을 프로세스가 생성된다 라고 표현한다. 포그라운드 프로세스 : 사용자가 보는 앞에서 실행 백그라운드 프로세스 : 사용자가 보지 못하는 뒤에서 실행. 유닉스에서는 데몬, 윈도우에서는 서비스라고 부른다. 모든 프로세스가 CPU를 동시에 사용할 수는 없다. 이용 시간이 끝나면(타이머 인터럽트가 발생하면) 차례를 양보해야 한다. 프로세스 제어 블럭 (PCB) 운영체제는 PCB를 이용해 프로세스 실행 순서와 자원을 관리한다. .. 2024. 1. 4.
[컴퓨터 구조] 운영체제 시작하기 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 운영체제란 프로그램 실행에 필요한 요소, CPU나 메모리 등을 시스템 자원이라고 부른다. 이러한 시스템 자원을 실행할 프로그램에 할당하고, 올바르게 실행되도록 돕는 프로그램이 운영체제다. 운영체제도 프로그램이기 때문에 메모리에 적재되어야하며, 특별한 프로그램이기 때문에 메모리 내 커널 영역에 적재된다. 커널 영역을 제외한 나머지 영역을 사용자 영역이라고 하며, 사용자의 응용 프로그램은 모두 사용자 영역에 적재된다. 사용자 영역에 프로그램이 겹치지 않게 적재하는 것도 운영체제의 역할이다. 또한, 메모리에서.. 2024. 1. 4.
[컴퓨터 구조] 입출력장치 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 장치 컨트롤러 입출력장치는 CPU, 메모리보다 다루기 어렵다. 종류가 너무 많고 데이터 전송률이 낮기 때문이다. 따라서 컴퓨터에 직접 연결되지 않고, 장치 컨트롤러라는 하드웨어에 연결된다. 장치 컨트롤러의 역할 CPU와 입출력장치간의 통신 중개 오류 검출 데이터 버퍼링 ※ 버퍼링이란 전송률이 높은 장치와 낮은 장치간 데이터를 버퍼라는 임시 공간에 저장해 전송률을 맞추는 방법 장치 컨트롤러는 세 가지 구성 요소를 가진다. 데이터 레지스터 : 위의 버퍼 역할을 한다. 상태 레지스터 : 입출력장치의 상태를 저.. 2024. 1. 4.
[컴퓨터 구조] 보조 기억 장치 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 하드 디스크 자기적인 방식으로 데이터를 저장한다. 플래터 : 동그란 원판. N극과 S극(0과 1)을 저장한다. 스핀들 : 플래터를 회전 시키는 구성 요소. 스핀들이 플래터를 돌리는 속도를 RPM으로 표현한다. 헤드 : 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소. 디스크 암 : 헤드를 원하는 위치로 이동시키는 구성 요소. 플래터는 트랙과 섹터 단위로 데이터를 저장한다. 여러 겹의 플래터를 사용하기도 하며, 여러 겹의 플래터에서 같은 트랙이 위치한 곳을 모아 연결한 단위를 실린더라고 부른다. 연속된 정.. 2024. 1. 4.
[컴퓨터 구조] 메모리와 캐시 메모리 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. RAM의 특징 RAM은 전원을 끄면 저장된 명령어와 데이터가 모두 날아간다. 이를 휘발성 저장 장치라고 한다. 비휘발성 저장 장치로는 하드 디스크나 SSD 등의 보조기억장치가 있다. CPU는 보조기억장치에 직접 접근하지 못하기에 일반적으로 비휘발성 저장 장치에는 보관할 대상을 저장하고, 휘발성 저장 장치인 RAM에는 실행할 대상을 저장한다. RAM의 용량과 성능 CPU가 실행하고자 하는 프로그램이 보조기억장치에 있다면 이를 RAM으로 가져와야 한다. 만약 RAM의 용량이 적다면 프로그램을 가져오는 일이 .. 2024. 1. 4.
[컴퓨터 구조] CPU 성능 향상 기법 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 빠른 CPU를 위한 설계 기법 클럭 컴퓨터 부품들은 클럭 신호에 맞춰 일사불란하게 움직인다. CPU는 명령어 사이클이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 위 두가지 명제는 클럭 속도가 높으면 빠르게 작동할 것으로 기대되지만 실제로는 그렇지 않다. 기본 클럭 속도와 최대 클럭 속도가 있으며, 클럭 속도만 높이면 발열 문제가 발생해 한계가 있다. ※ 클럭 속도는 Hz(헤르츠) 단위로 측정하며 1초에 클럭이 몇 번 반복되는지 나타낸다. 코어와 멀티 코어 현대에는 명령어를 실행하는 부품을 여러 개 장착.. 2024. 1. 3.
[컴퓨터 구조] CPU의 작동 원리 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. ALU ALU는 피연산자를 받아들이고, 제어 신호를 받아들여 산술 연산, 논리 연산 등 다양한 연산 수행 결과는 숫자나 문자, 주소가 될 수 있으며 레지스터에 저장한다. ALU는 결과뿐만 아니라 음, 양의 플래그나 오버플로우 정보도 내보낸다. 내보내는 플래그의 종류 부호 플래그 : 1일 경우 음수, 0일 경우 양수 제로 플래그 : 1일 경우 0, 0일 경우 0이 아님 캐리 플래그 : 1일 경우 올림이나 빌림 오버플로우 플래그 : 1일 경우 오버플로우 발생 인터럽트 플래그 : 1일 경우 인터럽트 가능 슈퍼.. 2024. 1. 3.
[컴퓨터 구조] 명령어 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 고급 언어와 저급 언어 고급 언어 : 사람을 위한 언어 저급 언어 : 컴퓨터가 직접 이해하고 실행 가능 기계어 : 0과 1로 이루어짐 어셈블리어 : 기계어를 읽기 쉽게 번역한 언어 컴파일 언어와 인터프리터 언어 컴파일 언어 : 컴파일러에 의해 소스코드 전체가 변환되며, 변환된 코드는 저급언어로 목적코드(object code)라고 한다. C언어 등이 있다. 인터프리터 언어 : 인터프리터에 의해 한 줄 씩 변환되어 실행되며 파이썬 등이 있다. ※ 목적 코드 파일과 실행 파일은 같지 않다. 외부 기능과 연결짓.. 2024. 1. 3.
[컴퓨터 구조] 데이터 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 0과 1로 숫자를 표현하는 방법 비트와 바이트 비트 : 0과 1을 나타내는 가장 작은 정보 단위. n비트는 2n개의 정보 표현 가능 바이트 : 8개의 비트를 묶은 단위. 1000 바이트는 1KB, 1000KB는 1MB, 1000MB는 1GB, 1000GB는 1TB ※ 1024가 아니다. 1024는 1KiB 등으로 표현한다. KiB는 키비바이트(Kibibyte), Kilo binary byte의 준말로 킬로 이진 바이트라는 뜻을 가진다. ※ 워드라는 단위도 있는데, 이는 CPU가 한번에 처리 가능한 크기이.. 2024. 1. 3.
[컴퓨터 구조] 컴퓨터 구조 시작하기 혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 컴퓨터구조를 알아야 하는 이유 컴퓨터 구조를 이해하면 문제 상황을 빠르게 진단 가능 문제 해결의 실마리를 다양하게 찾을 수 있음 최적의 컴퓨터 환경(용량, 성능, 비용 등) 고려 가능 컴퓨터 구조의 큰 그림 컴퓨터 구조는 컴퓨터가 이해하는 정보(데이터, 명령어)와 핵심 부품으로 이루어진다. 컴퓨터의 4가지 핵심 부품 CPU(중앙처리장치) 메모리(주기억장치) 보조기억장치 입출력장치 메모리 현재 실행되는 프로그램의 명령어와 데이터를 저장 프로그램이 실행되려면 반드시 메모리에 저장되어야 함 ※ 명령어와 데이터.. 2024. 1. 3.
[C 언어 기초] C 언어 문법 훑어보기 - 데이터 타입, 제어문, 함수, 포인터 K.N.King 의 C Programming - A Modern Approach 를 공부하며 내용을 정리한 글 입니다. GPT의 답변을 기준으로 C 언어 문법을 훑어보는 글입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 기본 문법 C 는 절차 지향적 프로그래밍 언어로, 코드는 함수로 구성됨. 세미콜론 (;)으로 문장이 끝남. 데이터 타입 정수형 데이터 타입 16비트에서의 정수형 타입 최솟값 최댓값 short int -32,768 32,767 unsigned short int 0 65,535 int -32,768 32,767 unsigned int 0 65,535 long int -2,147,483,648 2,147,483,647 unsigne.. 2023. 12. 15.
[C 언어 기초] 동적 메모리 할당 K.N.King 의 C Programming - A Modern Approach 를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 동적 메모리 할당 C의 데이터 구조는 기본적으로 크기가 고정되어 있다. 예를들어, 배열 원소의 개수는 프로그램이 컴파일될 때 고정된다. 고정된 크기의 데이터는 문제가 될 수 있다; 프로그램을 작성할 때 크기를 선택할 수 밖에 없기 때문이다. 프로그램을 수정하고 다시 컴파일하는것 외에는 크기를 변경할 수 없다. 다행히도, C는 동적 메모리 할당을 제공한다. 동적 메모리 할당이란 프로그램 실행중에 메모리를 할당하는 기능이다. 동적 메모리 할당을 사용하면 필요한 만큼 데이터 구조를 늘리거나,.. 2023. 12. 13.
[C 언어 기초] 문자열 문자마다 읽기 K.N.King 의 C Programming - A Modern Approach 를 공부하며 내용을 정리한 글 입니다. 현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다. 문자열 리터럴 문자열 리터럴(string literal)이란 큰 따옴표로 둘러쌓인 문자의 연속체를 의미한다 문자열 리터럴 저장 방법 C는 문자열 리터럴을 문자 배열 취급을 한다. C 컴파일러가 프로그램에 n 길이의 문자열 리터럴을 보게 되면 해당 문자열을 위해 n + 1 바이트를 할당해준다. 이 메모리는 해당 문자열의 문자들을 저장하고, 마지막에 한 가지 추가적인 문자인 널 문자(null character)를 넣어주어 문자열의 끝임을 알려준다. 널 문자는 비트가 전부 0인 바이트이므로 .. 2023. 12. 13.