본문 바로가기

전체 글

(235)
4장. 컴퓨터 구조에 대한 두 번째 이야기 Section 01. 컴퓨터 구조의 접근방법(책에서 말하는) 시스템 프로그래머 ? CPU에 종속적인 어셈블리 프로그래밍을 하는 개발자. CPU의 특성을 알 필요가 있다.CPU를 보는 관점 대부분은 레지스터에 집중된다. 레지스터를 디자인하는데 있어 중요한 3가지 요소가 있다.1. 레지스터를 몇 비트로 구성할 것인가?2. 몇 개 정도로 레지스터를 구성할 것인가?3. 레지스터 각각을 무슨 용도로 사용할 것인가? 레지스터 안에 메모리 주소가 오게끔 디자인할 수도 있다. 그러나 이렇게 디자인하면 명령어 구조가 복잡해지고 이에 따라 하드웨어 구성도 더불어 복잡해진다. 명령어 종류에 따라 명령어를 처리하는 데 걸리는 시간도 다양해져서 다루기 어렵게 된다. CISC ? "Complex Instruction Set Co..
3장. 64비트 기반 프로그래밍 Section 01. WIN32 vs WIN6432비트 컴퓨터는 한번에 32비트 데이터를, 64비트 컴퓨터는 한번에 64비트 데이터를 처리할 수 있다.즉, 한번에 송수신할 수 있는 데이터 크기와 한번에 처리할 수 있는 데이터 크기를 기준으로 32비트 컴퓨터와 64비트 컴퓨터를 구분짓는다. Section 02. 프로그램 구현 관점에서의 WIN32 vs WIN64마이크로소프트에서는 64비트 기반의 운영체제를 내놓으면서도 32비트 시스템과의 호환성을 중시하였다. 그로 인해 프로그래밍 스타일에 대한 가이드를 제시하고 있는데, 이것을 따르는 것이 바로 64비트 기반 프로그래밍의 기본이 된다.Windows 는 LLP64 모델을 따르고 UNIX는 LP64를 따르는데, 이 둘은 64비트에서 long의 자료형의 바이트가..
2장. 아스키코드 vs 유니코드 Section 01. Windows에서의유니코드(UNICODE)유니코드 ? 문자를 표현하는데 균일하게 2바이트 사용 (65,536개)SBCS ? Single Byte Character Set, 1바이트만을 사용해서 문자를 표현하는 방식. 아스키코드가 대표적.MBCS ? Multi Byte Character Set, 다양한 바이트 수를 사용해서 문자를 표현하는 방식.WBCS ? Wide Byte Character Set, 2바이트만을 사용해서 문자를 표현하는 방식. 유니코드가 대표적. WBCS는 NULL 도 2바이트로 처리한다. MBCS는 SBCS를 포함한다.MBCS 는 영어를 1 바이트, 한글을 2 바이트로 처리하기 때문에 `sizeof()`, `strlen()` 사용 시 혼동이 되는 문제점이 있다.그래..
1장. 컴퓨터 구조에 대한 첫 번째 이야기 컴공 학부 때와 현업에서 배운 내용들이지만 전체 구조를 살펴보고 중간 중간 이빨 빠진 지식들을 채워넣을 수 있는 챕터이다.강의> https://www.youtube.com/watch?v=GVX-m3RF-K0&list=PLVsNizTWUw7E2KrfnsyEjTqo-6uKiQoxc Section 01. 시스템 프로그래밍의 이해와 접근시스템 프로그램 ? 컴퓨터 시스템을 동작시키는 프로그램 (시스템 = 하드웨어 + 운영체제)시스템 프로그래머 ? 어셈블리어나 C언어 등을 이용해 하드웨어를 직접 컨트롤하거나 Windows 등의 운영체제에서 제공하는 라이브러리를 활용하여 개발하는 개발자Windows 시스템 프로그래밍 ? Windows 운영체제 기반의 컴퓨터에게 일을 시키기 위한 프로그램을 구현하는 것 컴퓨터 시스템..
Windows CPU Core 인식은 버전별로 제한이 있다 회사에서 Openstack으로 Windows Instance를 여러 개 만들어서 사용하는데,똑같이 플레이버를 4Core CPU + 8GB RAM 을 지정해도 어떤 그룹은 2Core만 인식하고 어떤 그룹은 4Core 모두 인식하는 상황이 발생했다. 이건 뭐지 싶어서 찾아보니 Windows 클라이언트 OS는 CPU 소켓 수가 제한이 있다고 한다.Windows Home -> 1개 소켓Windows Pro -> 2개 소켓Windows Enterprise~ -> 4개 소켓 다 인식Windows Server -> 더 넉넉하다고 함 그리고 OpenStack은 아무 설정 없이 Windows Instance를 생성하면 기본적으로 1 Socket - 1 Core 라고 한다.그래서 Windows Pro일 경우 2개 Sock..
Mac terminal에서 특정 이더넷 ip 추가/제거 1. 이더넷 `en0` 에 IP `192.168.123.12` 추가sudo ifconfig en0 alias 192.168.123.12 255.255.255.0 2. 이더넷 `en0` 에 IP `192.168.123.12` 제거sudo ifconfig en0 -alias 192.168.123.12
Python 에서 GIL, 멀티스레딩, 멀티프로세싱 GIL, 멀티스레딩, 멀티프로세싱GIL (Global Interpreter Lock)"한 번에 오직 하나의 스레드만 Python 코드를 실행할 수 있다"는 Python의 규칙. 멀티스레딩 (Multithreading)하나의 프로세스 안에서 여러 작업을 나누어 처리. 하나의 GIL을 공유하므로, 진짜 병렬 처리는 아님.멀티프로세싱 (Multiprocessing)여러 개의 독립적인 프로세스를 만들어 작업을 처리. 각자 독립된 GIL을 가지므로, 진짜 병렬 처리가 가능.핵심 비교표 그래서 언제 뭘 써야 하나?내 작업이 CPU를 많이 쓰는가? (복잡한 계산, 데이터 분석 등)Yes → 무조건 멀티프로세싱 사용 내 작업이 I/O 대기 시간이 긴가? (네트워크 요청, 파일 다운로드 등) Yes → 멀티스레딩 또는..
Run 레지스트리에 등록된 프로그램의 실행 HKLM(HKEY_LOCAL_MACHINE)과 HKCU(HKEY_CURRENT_USER)는 Windows Registry에서 매우 중요한 두 개의 루트 키(Hive)이다. HKLM - 관리자든 사용자든 관계없이 모든 계정에 적용 (시스템 전체에 적용)HKCU - 현재 로그인한 사용자 계정에 적용Run 레지스트리는 사용자가 로그인할 때 자동으로 실행될 프로그램을 등록할 수 있는 레지스트리이다.HKLM의 Run 레지스트리 경로HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKCU의 Run 레지스트리 경로HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 각 Root에 따라 Run..