본문 바로가기

CS

(4)
Sync, Async vs Blocking, Non-Blocking 동기, 비동기 vs 블로킹, 논블로킹 흔하게 쓰이는 용어들 중에 명확하게 구분하고 이를 정의하기 쉽지 않은 것들이 있다. 그 중에서도 대표적인 게 동기/비동기의 차이와 블로킹/논블로킹의 차이가 있을 것이다. 우리는 동기적이다 라는 개념과 블로킹의 개념을 동일 시 하고 비동기와 논블로킹을 비슷한 개념으로 이해하고 사용하는 것 같다. 하지만 이를 구분할 줄 알아야 각각의 개념을 더 잘 이해할 수 있을 것 같다. 사전적인 의미 동기, 비동기는 어떻게 구분할 수 있을까? 이 둘을 구분하는 관심사는 특정 함수를 호출했을 때 그 결과를 신경쓰는 주체의 차이이다. 동기적이다 라는 의미는 함수 A가 함수 B를 호출했을 때 함수 B의 결과에 대해 A가 신경을 쓰는 경우를 의미한다. 비동기적이다 라는 의미는 함수 A가 함.. 더보기
리눅스 쉘과 명령어 기초 쉘이란 커널과 사용자 사이의 인터페이스 라고 보면 된다. Shell을 사용하는 경우 서버에서 접속해서 사용하는 경우 crontab 등 Linux의 내장 기능을 활용하는 경우 데이터 전처리를 하기 위해 shell command를 사용하는 경우 Docker를 사용하는 경우 수 백대의 서버를 관리할 경우 Jupyter Notebook의 cell 앞에 !를 붙여서 shell command를 사용하는 경우 터미널에서 python3, jupyter notebook을 실행하는 경우 배포 파이프라인(Github Action 등)을 실행하는 경우 쉘의 종류 Bourne Shell Bash(Bourne Again Shell) C-Shell KornShell Shell의 기본 Command man command(1), sy.. 더보기
Big-Endian, Little-Endian Big Endian, Little Endian Byte Ordering 이란 메모리의 Byte Ordering이라는 것은 메모리의 번지를 읽는 순서 Big -> Little, Little -> Big 두가지로 나눈다. Big Endian : n번지, n+1번지 n+2번지 n+3번지의 순서 Little Endian : n+3, n+2, n+1, n번지의 순서 big endian byte ordering으로 1은 0000...0001 이라면 little endian byte ordering의 1은 0001...0000 이 된다. 더보기
gdb GDB는 리눅스 환경(정확히는 GNU 환경)에서 효율적으로 디버깅 할 수 있게 해주는 툴이다. GNU 환경이란? GNU(한국어: 그누)는 GNU 프로젝트를 통하여 개발한 유닉스 계열 컴퓨터 운영 체제이며 궁극적으로는 "완전한 유닉스 호환 소프트웨어 시스템"이 되는 것이 목표이다.[1][2] 리처드 스톨만이 1983년에 GNU 개발을 처음 시작하였으며 원래는 자유 소프트웨어 재단(FSF)의 중심이었지만 2010년 11월까지 GNU 안정판이 나오지는 않았다.[3][4] GNU는 "GNU는 유닉스가 아니다."란 의미를 갖는 영어 문장 "GNU's Not UNIX"의 약자로, 원래의 문장 안에 자신이 이미 들어 있는 재귀 약자이다. 스톨만은 GNU를 그누로 읽자고 제안한다. 유닉스는 이미 널리 쓰이던 독점 소프.. 더보기