공부한 이야기
V : 프로세스의 생성과 소멸
V : 프로세스의 생성과 소멸 뇌를 자극하는 윈도우즈 시스템 프로그래밍 을 읽고 정리한 문서입니다 ;) 프로세스의 이해 오늘날의 운영체제는 멀티프로세스 운영체제로서, 프로세스가 여러개 존재할 수 있는 운영체제이다. 프로세스란 실행 중 상태에 있는 프로그램을 의미하며, 프로그램을 실행하는 순간 메모리의 할당이 이루어지고, 이 메모리 공간으로 프로그램의 바이너리 코드가 올라가게 된다. 이 순간 이 메모리와 프로그램의 인스턴스에 대한 정보를 가지는 집합을 프로세스라고 한다. 메모리 공간은 여러 영역으로 나뉠 수 있다. Data 영역 : 전역변수나 static 변수의 할당을 위해 존재하는 영역 Stack 영역 : 지역변수 할당이나 함수 간 호출에 따른 계층 및 파라미터 저장 영역 Heap 영역 : 동적 할당을 ..
IV : 컴퓨터 구조에 대한 두번째 이야기
IV : 컴퓨터 구조에 대한 두번째 이야기 뇌를 자극하는 윈도우즈 시스템 프로그래밍 을 읽고 정리한 문서입니다 ;) 컴퓨터 구조의 접근방법 컴퓨터 구조에 대한 보다 근본적인 이해는 프로세스와 쓰레드를 공부하는 데 큰 도움이 된다. CPU의 특성을 알 필요가 있는 시스템 프로그래머 입장에서, CPU를 보는 관점 대부분은 레지스터에 집중된다. 레지스터를 디자인할 때 결정해야 할 중요 요소로는 다음과 같은 항목이 있다. 레지스터를 몇 비트로 구성할 것인가 레지스터를 몇 개 정도 준비할 것인가 레지스터 각각을 무슨 용도로 사용할 것인가 CPU 구성 형태에 따라서, 즉 레지스터 구성 형태에 따라서 명령어 구조가 달라진다. 만일 16비트짜리 레지스터가 있고, 명령어 길이를 만일 16비트로 일치시킨다고 하면, 명령어..
III : 64비트 기반 프로그래밍
III : 64비트 기반 프로그래밍 뇌를 자극하는 윈도우즈 시스템 프로그래밍 을 읽고 정리한 문서입니다 ;) WIN32 vs WIN64 시스템이 어떤 비트 환경에서 동작하는지 구분하는 것은 두 가지로 판별할 수 있는데, 하나는 한 번에 전송 및 수신할 수 있는 데이터의 크기이고, 이는 즉 IO 버스의 대역폭을 의미한다. 또한, CPU가 데이터를 처리함에 있어 한 번에 처리 가능한 데이터의 크기가 비트 판별의 기준이 된다. 32비트 환경에서는 주소값의 표현을 가장 효율적인 32비트로 하였기에 최대 4GB의 메모리를 가질 수 있는 시스템이 되었고, 64비트 환경에서는 64비트로 메모리를 표현하기에 최대 16EB의 메모리를 가질 수 있는 시스템이다. 프로그램 구현 관점에서의 WIN32 vs WIN64 마이크로..
II : 아스키코드 VS 유니코드
II : 아스키코드 VS 유니코드 뇌를 자극하는 윈도우즈 시스템 프로그래밍 을 읽고 정리한 문서입니다 ;) Windows에서의 유니코드 아스키코드는 미국에서 정의하고 있는 표준이다. 알파벳 26자에 몇몇 확장 문자를 포함해도 256개를 넘지 않기에, 1바이트로 표현이 되는 문자이다. 하지만 다른 국가의 문자는 그렇지 않기에, 유니코드를 사용하고, 이는 문자를 표현하는데 있어서 균일하게 2바이트를 사용한다. SBCS 는 Single Byte Character Set으로서, 문자를 표현하는데 1바이트만을 사용하는 방식이다. 아스키코드가 대표적으로 SBCS에 해당된다. MBCS는 Multi Byte Character Set으로서, 다양한 바이트 수를 사용하여 문자를 표현하는 방식이다. MBCS에서 영어는 1바..
I : 컴퓨터 구조에 대한 첫번째 이야기
I : 컴퓨터 구조에 대한 첫번째 이야기 뇌를 자극하는 윈도우즈 시스템 프로그래밍 을 읽고 정리한 문서입니다 ;) 시스템 프로그래밍의 이해와 접근 시스템 프로그래밍이란, 하드웨어를 직접 제어하는 OS 등을 개발하는 사람도 포함하지만, 이 OS가 제공하는 API를 사용하여 프로그래밍 하는 것을 포함한다. 컴퓨터 구조와 운영체제를 이해하게 되면, 문법적 요소만을 이해하고 바로 프로그래밍하는 프로그래머들보다 효율적인, Power Programming 이 가능해진다. 램이라는 저장장치로 구성되는 메인메모리는 컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역이다. 즉 프로그램 실행을 위해 존재하는 메모리이다. 입 출력 버스는 컴퓨터 구성요소 사이에 데이터를 주고 받기 위해 사용하는 경로이다. 이는 주고받는 ..
![리눅스 - 응용 분야](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAUkzc%2FbtrKvFXCz0c%2F8z6LFMY4gKWFCIj9RAc5Q0%2Fimg.png)
리눅스 - 응용 분야
기술 동향 리눅스 동향 1991년 초기 리눅스는 주로 서버로 이용되었다. 현재는 크게 서버, 데스크톱 및 개발, 임베디드 분야로 나눌 수 있다. 리눅스 기반의 모바일 운영체제 분야에서 점유율이 높다. 클러스터링으로 웹 서비스, 온라인 게임 서비스 등 고성능 컴퓨팅 환경도 리눅스가 솔루션으로 대두된다. 하둡과 분석 파일 시스템의 오픈 소스 소프트웨어를 이용해 빅데이터 분석에 활용하고 있다. 리눅스는 POSIX 표준, 인터넷 프로토콜 표준 등 국제 표준을 따르고 있고, 오픈소스라는 특성이 이를 가져다 주었다. 클러스터링 여러 개의 시스템이 하나의 거대한 시스템으로 보이게 만드는 기술이다. 클러스터 노드 클러스터의 실질적인 작업을 처리하는 것 클러스터 노드는 클러스터에 속하도록 구성해야 한다. 클러스터 관리자..
![리눅스 - 네트워킹](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLFlUZ%2FbtrKvcOVivf%2FZ7MoBrq9B2tb55D8K9TQkK%2Fimg.png)
리눅스 - 네트워킹
Network Types 통신망은 지역적 범위에 따라 LAN, MAN, WAN 으로 구분한다. LAN Local Area Network 로서, 근접한 거리로 제한된 지역에 설치된 정보 기기들 사이의 고속 통신을 제공하는 통신망이다. Ethernet / IEEE 802.3 LAN 1980년 DEC, Intel, Xerox 회사에 의해 DIX ethernet 표준 발표 IEEE에 표준 형식으로 정의됨 매체 접근 제어 기술 CSMA/CD 사용 Token Ring / IEEE 802.5 LAN IBM사에 의해 개발된 기술 데이터는 한 쪽 방향으로 순서대로 흐르도록 함 확장성이 용이하지 않음 매체 접근 제어 기술 Token passing 사용 FDDI LAN Fiber-Distributed Data Interfa..
![리눅스 - X-Windows](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoWwSv%2FbtrKuVGyGge%2F1Vwc7yjKBuCgglOswOtPUK%2Fimg.png)
리눅스 - X-Windows
X-Windows 리눅스 환경의 각종 어플리케이션과 유틸리티에 대해 GUI를 제공한다 출현배경 Athena 프로젝트 IBM, MIT, DEC Athena 프로젝트를 통해서 X-윈도우를 처음으로 개발 X11 발표 x컨소시엄 1988년 여러 컴퓨터 제조업체로 구성 x11r2에서 x11r6까지 발표 오픈 그룹 1996년 오픈소프트웨어 재단과 x/open 으로 형성된 그룹 x11r6.4 발표 X.org 1999년 오픈 그룹을 기반으로 x.org 재단이 만들어짐 x11r6.8 발표 특징 네트워크 기반의 그래픽 환경 지원 이기종 시스템 사이에서도 사용 가능 네트워크 프로토콜 기반의 클라이언트/서버 시스템 서버는 클라이언트들간의 자원 공유, 메시지 전달, 입출력 기기와의 중계 담당 구성요소 이름 설명 XProtoco..