전체 글 144

Critical System

시스템의 고장은 비교적 일반적이다. 대부분의 경우 고장은 심각한 손해를 입히지 않지만 어떤 시스템 고장은 중요한 경제적 손실, 물질적 피해, 혹은 사람의 생명에 위험이 될수 있다. 이러한 시스템을 Critical system(중대한 시스템)이라 한다. 1. Safety-critical System : 시스템의 고장으로 인해 부상, 사망 등의 심각한 결과 초래 2. Mission-critical System : 시스템의 고장으로 임무 수행의 활동 실패 3. Business-critical System : 시스템의 고장으로 인해 시스템을 사용하는 사업에 대한 높은 비용지불 Critical systems의 가장 중요한 특징 : Dependability(신뢰성/ 확실성) -> 시스템의 신뢰성과 보안성이 떨어지면..

Backend/OS★ 2011.05.23

소프트웨어 절차(process)

소프트웨어 시스템을 개발하기 위해 요구된 활동들의 집합(요구사항 명세화, 설계, 확인, 진화) 소프트웨어 프로세스 모델은 프로세스의 추상적 표현이다. 1. 폭포수 모델 요구사항 정의-시스템/소프트웨어 설계-실행/테스트-통합/시스템 테스트-유지보수 의 절차를 거치는 모델로, 소프트웨어 개발 프로세스중 가장 첫번째로 발표된 모델이다. 시스템 공학 프로세스로부터 유도됨. 순차적 프로세스 모델로 위의 단계로 개발이 진행되며 각 개발이 끝날때마다 과정의 끝을 알리고 산출물이 출력된뒤 다음단계로 진행된다. 프로젝트의 수행 단계의 파악이 용이하지만 실제 프로젝트는 요구사항이 안정적이지 않고 명확한 단계를 구분하기 어려우며 변경을 수용하기도 어렵다. 2. 진화적 개발 실험적 개발 - 고객과 함께 요구사항을 찾아내며 최..

Backend/OS★ 2011.05.23

S/W engineering에서 사용하는 계층 구조

1. 품질(Quality) . S/W Engineering의 기본 목표는 품질과 생산성의 확보. . S/W 자체의 품질 뿐만 아니라 모든 프로세스의 품질까지 고려해야 한다 . 품질에 대해서 엄격하고 문서화된 형식을 갖추어야만 신뢰성 있는 제품이 생산되며 프로그램 개발시 제품을 쉽게 관리할 수 있다. 2. Process . 프로그램 개발시 사용되는 개발 방법 및 순서를 의미한다. . 프로그램 완성 단계까지 해야 하는 작업의 목록을 정의한다. . 프로그램에 투여되는 모든 자원(Resource) 및 기타 환경에 대해서 정의한다. 3. 방법(Method) . S/W 개발에 사용되는 기술적 방법을 제공한다. . 요구사항, 분석, 설계, 프로그램 구축, 테스팅, 유지 및 보수 등과 관련된다. . 다이어그램을 사용하..

Backend/OS★ 2011.05.23

memset()을 이용하여 메모리를 채워보자

1. 함수원형 void *memset(void *s, int c, size_t n); 2. 기능 s가 지정하는 번지에 c값을 n의 크기만큼 채움 c는 int형이지만 1바이트(char)로 인식된다. 3. 리턴값 s의 포인터 4. 예제 1 : #include 2 : #include 3 : #include 4 : #define SIZE 50 5 : int main(void){ 6 : 7 : int *s = (int*)malloc(sizeof(int)*SIZE); //메모리 할당 8 : int i; 9 : 10 : memset(s,'r',sizeof(int)*SIZE); // s가 가리키는곳을 'r'로 채운다 11 : 12 : for(i=0;i

Backend/C 2011.05.20

memcpy()를 이용한 메모리 카피!

1. 함수원형 void *memcpy(void *dest, const void *src, size_t n); 2. 기능 src 번지의 데이터를 dest로 size n 만큼 복사 3. 리턴값 dest의 포인터 4. 예제 1 : #include 2 : #include 3 : #include 4 : #define SIZE 500 5 : int main(void){ 6 : int *dest = (int*)malloc(sizeof(int)*SIZE); //메모리 할당 7 : int *src = (int*)malloc(sizeof(int)*SIZE); //메모리 할당 8 : int i; 9 : 10 : memset(src,69,sizeof(int)*SIZE); //src에 내용 채움 11 : memcpy(dest,..

Backend/C 2011.05.20

SNMP Trap

SNMP TRAP SNMP (Simple Network Management Protocol) 는 네트워크 장비의 상태 및 프로세스 상태 등을 관리자에게 전달해 줄 수 있는 프로토콜이다. SNMP 데몬은 관리자의 요청이 오면 해당 정보를 관리자에게 일정한 형식에 맞추어 전송해 주는데, GET, SET 등의 명령어를 이용해서 시스템의 정보를 받거나, 시스템에 일정 값을 셋팅해 줄 수도 있다. 그리고 한가지 옵션이 더 있는데, 바로 TRAP이다. TRAP은 관리자가 요청을 해서 정보를 주는 것이 아니라, 시스템 자체에서 비동기적으로 일어나는 이벤트에 대한 정보를 알아서 관리자에게 보내주는 역할을 한다. GET, SET 과 같은 명령어는 snmpd가 수행하고, 이러한 비동기적 TRAP 요청은 snmptrapd ..

Backend/Network 2011.05.20

SNMP - MIB 정보 보기

NET-SNMP 패키지를 깔고 다음 경로에 들어가면, 아래처럼 MIB 정보들을 볼 수 있다. >cd /usr/share/snmp/mibs >ls AGENTX-MIB.txt NETWORK-SERVICES-MIB.txt DISMAN-EVENT-MIB.txt NOTIFICATION-LOG-MIB.txt DISMAN-SCHEDULE-MIB.txt RFC1155-SMI.txt DISMAN-SCRIPT-MIB.txt RFC1213-MIB.txt EtherLike-MIB.txt RFC-1215.txt HCNUM-TC.txt RMON-MIB.txt HOST-RESOURCES-MIB.txt SMUX-MIB.txt HOST-RESOURCES-TYPES.txt SNMP-COMMUNITY-MIB.txt IANA-ADDRESS..

Backend/Network 2011.05.20

Firewall

FIREWALL 내가 4년, 이제 곧 5년차 만지고 있는게 바로 이 firewall이다. 처음에 방화벽을 만드는 회사- 라고 했을때는 도대체 머지?그리고 어떻게 개발자가 c언어로 방화벽을 만들까??? 라는 궁금증이 제일 컸었다. 1년이 지나고 2년, 3년.. 시간이 지나면서, firewall은 정말 고마운 아이구나, 난 참 좋은 일을 하고있구나 ㅋㅋㅋ 라는 자부심을 나름 갖게 되었다. 그렇다면 날 4년간 먹여살리고 자부심을 키워준 firewall이란 무엇일까~~? 한국말로 번역하면 "방화벽" 인데, 이 "방화벽"은 악성 공격들로부터 나의 소중한 정보를 (웹서버, DB등등등) 지켜주는 방패라고 할 수 있겠다. 사전적 의미를 보자면, Firewall (construction) : a barrier insid..

Blacklist & Whitelist

Positive Security Model (whitelist) VS Negative Security Model(blacklist) 웹 방화벽 을 다루어 보았거나 보안 정책을 수립해 본 사람들이라면 누구나 positive rule과 negative rule에 대해서 들어 보았을 것이다. 보안 탐지 정책의 속성으로 이렇게 두 가지의 룰을 들 수 있는데, 오늘은 이 positive와 negative에 대해 간단히 설명해 보려 한다. "positive" 보안 모델(화이트리스트라고도 명명)은 허용될 룰들을 정의하고 다른 이외의 것들은 모두 차단하며 이는 "negative"(또는 블랙리스트) 보안 모델과 대조되는 성격을 가진 룰이라 할 수 있다. 블랙리스트는 차단할 룰을 정의하고, 나머지는 허용하는 성격의 룰이다..

Valgrind로 메모리 누수 체크하기!!

복잡한 프로그램을 개발하다보면,, 메모리 관리가 제대로 안될 때가 많다. 원래 malloc()해주고 free() 꼭 넣어주는게 정석이것만.. 진짜진짜 이게 잘 안된다..ㅋㅋ 그래서 프로그램이 죽기도 하고, 메모리 사용량이 계속 늘어나기도 하고, 프로그램을 죽였는데도 메모리 사용량이 줄어들지 않을 때도 있다. 입사하고서 그런 버그를 잡을 수 있는 획기적인 툴을 발견했다. 바로바로 Valgrind!! 지금까지 꾸준히 사용하고 있는 완소 툴이다 ♡ 리눅스에서 valgrind -h 또는 valgrind --help 쳐보면, 다음과 같은 설명이 나온다. 사용법은 간단함. >valgrind -h usage: valgrind [options] prog-and-args common user options for all..

Backend/C 2011.05.13