IT_Study 90

Operating System (15) : Device Driver, Kernel Module 및 device file의 이해

Device Driver PC와 외부 하드웨어 장치가 서로 신호를 주고 받을 수 있도록 통신하는 것을 도와주는 소프트웨어 Firmware에서 임베디드 개발 - 중간 Layer가 없다 --> H/W memory map address에 직접 값 access가 가능 - 단점 : H/W 장비 교체 시, 모든 Firmware의 H/W 관련 코드를 수정해야 한다. Kernel - 공통적으로 쓰는 API 제공 --> 중간 layer 역할 - Kernel 소스코드만 새로운 H/W가 동작되도록 수정해서 다시 build하면, 다른 firmware를 수정할 필요 없음 - 단점 : 빌드 시간이 매우 길다 Kernel Module ( != Device Driver) - 커널에 들어가는 코드 덩어리 - 디바이스 드라이버를 "커널..

Raspberry Pi와 SenseHat을 활용한 자이로스코프 게임 만들기

Raspberry Pi 위에 SenseHat을 연결하여, 8x8 maze game을 생성 기능 0. 게임 시작 시, 디스플레이 초기화를 통해 초기 화면 구성을 보여줌 1. 자이로스코프 계산을 통해, 기울일 때마다 기울이는 방향으로 S가 이동 2. 조이스틱을 클릭할 때마다, S지점부터 E지점까지 도착하는 경로 출력 - 처음 최단경로를 노란색으로 표시, 연속해서 누를 시 다음 최단경로를 나타냄 - 모든 경로를 표시했을 때 클릭하면, 처음 최단경로를 나타냄 3. E 지점에 도착 시, 게임이 종료되며 "WINNER" 메세지 출력 후 디스플레이 OFF 라이브러리 및 변수 선언 from sense_hat import SenseHat from time import sleep from collections import..

Network (2) : TCP 기반 서버 소켓 구현, NetCat 설명

TCP 기반 서버 소켓 동작 순서 소켓은 인터페이스(프레임워크)이기 때문에, 아래 과정을 따른다.1. socket() : 소켓 생성2. bind() : 소켓에 주소 할당3. listen() : 클라이언트 연결 요청 대기4. accept() : 클라이언트 연결 승인5. read() : 통신6. close() : 소켓 닫기  메서드 및 구조체 설명socket : IP를 사용하는 소켓을 생성int socket(int domain, int type, int protocol);- domain : Socket의 프로토콜 패밀리를 나타냄     - PF_INET : IPv4 소켓 생성     - PF_INET6 : IPv6 소켓 생성 - type : 소켓의 Type을 나타냄     - SOCK_STREAM : 연결 ..

IT_Study/Network 2023.04.11

Network (1) : 용어 정리

네트워크 용어 정리 프로토콜 정의 - 통신을 위해 양 상호간에 지켜야 할 약속 - 두 노드가 같은 프로토콜을 사용해야 통신이 가능 예시 - HW : 장비 규칙, 신호 전달 속도 - Format : 신호의 형태 - Sequence : Handshake 방식, 신호 전달 순서 - SW 동작 : 오류 검출을 위한 행동 IP (Internet Protocol) 정의 - 송신 호스트와 수신 호스트가 정보를 주고받는 데 사용하는 규약 - 패킷 혹은 데이터그램이라고 하는 덩어리로 나뉘어 전송 특징 - 비연결성 : 패킷을 받을 대상이 없거나 해당 도착지의 주소가 불능 상태여도 패킷을 전송 - 비신뢰성 : 통신 도중 패킷이 사라질 수 있고, *패킷이 순서대로 도착하지 않을 수 있음 *패킷 : 송신자에서 수신자로 데이터를..

IT_Study/Network 2023.04.10

Operating System (14) : Decomposition, gettimeofday, watchdog timer, Ncurses 활용한 Game 구현

Data Decomposition 데이터를 작은 단위로 나누어서 각각의 구성 요소를 분석하고 이해하는 기술 처리 방법 - 데이터를 단위로 분해하여 Thread Programming을 통해 처리하면 된다. CPU Core 4개를 이용한 문자열 암호화 (Caesar cipher) #include #include #include // thread_create 시 argument를 1개밖에 보낼 수 없으므로, 구조체 만들기 typedef struct { int num; char (*vect)[21]; } thread_data_t; // void pointer function 선언 void *abc(void *arg){ thread_data_t *data = (thread_data_t *)arg; char tem..

Operating System (13) : Memory Leakage, Process Control Block, Process State, Virtual Memory

메모리 누수 (Memory Leakage) - 정의 : 컴퓨터 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상 - 원인 : 일반적으로 프로그램이 메모리 할당 후 해제하지 않거나, 필요가 없어지더라도 계속해서 메모리를 차지할 경우 등 - 결과 : 시스템의 성능이 느려지거나, 시스템 충돌 등의 문제가 발생해서 동작하지 않을 수 있음 - 해결책     1) 코드 작성 잘 하기         - 할당했으면 해제 ( close(), free(), del ~ )         - 열었으면 닫기         - 항상 세트로 코드를 작성하는 습관을 가진다     2) RAII패턴 사용 - C++         - Resource Acquisition IsIntialization 디자인 패턴     3) 스..

Operating System (12) : System Architecture, Memory, Void pointer, Thread / Process Synchronization

System Architecture 소프트웨어 및 하드웨어 구성 요소를 조합하여 시스템을 설계하는 방법론 폰 노이만 아키텍처 (Pon von Neumann architecture) 디지털 컴퓨터의 구조 중 하나로, 중앙 처리 장치, 메모리, 입력 및 출력 장치로 구성 1. CPU (CPU를 만드는 회사는 왜 대표적으로 Intel / AMD) - 0과 1로 구성된 명령어를 하나씩 수행하는 장치 - 명령어를 저장할 공간이 부족하므로, Disk에 저장해둔다 --> disk의 병목으로 메모리 등장 (폰 노이만의 아이디어) : CPU는 매우 빠른데, Disk 느리다. 2. Memory - 빠른 성능, 저장장치처럼 저장하는 기능을 가짐, 전원을 끄면 모두 소멸 - 명령어들을 대신 전달해주는 역할 - Loading ..

Operating System (11) : System Programming, SystemCall, File Descriptor

시스템 프로그래밍 시스템 (System) 구성 요소들이 상호작용하는 집합체를 의미 컴퓨팅 시스템 (Computing System) CPU, 기억장치 , 입출력장치 등이 상호작용하는 집합체 구성 1. Hardware - CPU (중앙 처리 장치) : 명령어를 해석하고 실행하여 데이터를 처리 - Memory (기억 장치) : 실행 중인 프로그램이나 데이터를 일시적으로 저장 - Peripheral (주변 장치) : CPU와 Memory 외 모든 입/출력 장치 - 저장장치 : 데이터를 영구적으로 저장할 수 있는 공간 - Graphic - 입/출력 장치 - LAN Card : 컴퓨터를 네트워크에 연결하여 데이터를 주고받게 해줌 - USB Interface 등 2. Software - Application Leve..

Operating System (10) : C에서의 컴파일 과정, Header & Source 정의, Static & Extern, 구조체 정의

C 언어에서의 Preprocessing 과정 관련 단어 등 이론적 설명은 여기 글 참고 https://lg960214.tistory.com/35 [C++] 프로그램 컴파일 과정 - 선행처리기(preprocessor), 컴파일러(compiler), 링커(linker) C++ 프로그램 컴파일 과정 1. 소스 파일 작성 2. 선행처리기(preprocessor)에 의한 선행처리 3. 컴파일러(compiler)에 의한 컴파일 4. 링커(linker)에 의한 링크 1. 소스 파일 작성 소스 파일(.cpp) : C++ 문법에 lg960214.tistory.com 컴파일 과정 중 나오는 파일 살펴보기 Visual Studio로 진행 먼저 3개의 파일을 작성 // main.c #define _CRT_SECURE_NO_W..

Operating System (9) : Typedef, Union, designated initializer(선택적 초기화)

Typedef 기존 타입을, 원하는 이름으로 정의하는 방법 #include #include typedef long long ll; int main(){ ll t = 1923912912312213912; // 1923912912312213912 printf("%lld", t); return 0; } C에서 Struct 사용법 #include #include struct ABC{ int a; int b; }; int main(){ struct ABC t; // C++과 다르게, struct를 붙여줘야 한다. // 이 방법은 C에서는 불가능 // t = {10, 20}; t.a = 10; t.b = 20; return 0; } Typedef를 활용해서 struct 사용 #include #include // m..