[정보처리기사 필기] 기출문제 - 951 ~ 1000. 오답노트

952. 데이터 모델의 종류

  • 개념적 데이터 모델
    • 현실 세계에 대한 인간의 이해를 돕기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정
    • 속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계 표현
    • 정보 모델 : 현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현
    • 대표적인 개념적 데이터 모델 : E-R  모델
  • 논리적 데이터 모델
    • 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는 컴퓨터 세계의 환경에 맞도록 변환하는 과정
    • 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계를 이용하여 현실 세계를 표현
    • 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용
    • 논리적 데이터 모델의 구분 : 관계 모델, 계층 모델, 네트워크 모델

953. 정규화 과정

비정규 릴레이션
↓ 도메인이 원자 값
1NF
  부분적 함수 종속 제거
2NF
  이행적 함수 종속 제거
3NF
  결정자이면서 후보키가 아닌 것 제거
BCNF
  다치 종속 제거
4NF
  조인 종속성 이용
5NF

956. 이상 현상

  • 삽입 이상 : 불필요한 데이터를 함께 삽입하지 않으면 데이터를 삽입하는 것이 불가능한 현상
  • 수정(갱신) 이상 : 중복된 데이터 가운데 일부만 수정되어 데이터의 불일치가 발생하는 현상
  • 삭제 이상 : 어떤 데이터를 삭제하면 유용한 데이터도 함께 삭제가 되는 현상

960. SQL의 Hint

  • 사용자가 수동으로 어떠한 경우에도 실행 계획을 고정하기 위해 사용
  • SQL의 힌트 사용 : SELECT /* + hint[{hint} .... ] */

961. IEEE 802의 주요 표준 규격

  • 802.1 : 전체의 구성, OSI 참조 모델과의 관계, 통신망 관리 등에 관한 규약
  • 802.2 : 논리 링크 제어 LLC 계층에 관한 규약
  • 802.3 : CSMA / CD 방식의 매체 접근 제어 계층에 관한 규약
  • 802.4 : 토큰 버스 방식의 매체 접근 제어 계층에 관한 규약
  • 802.5 : 토큰 링 방식의 매체 접근 제어 계층에 관한 규약
  • 802.6 : 도시형 통신망 MAN에 관한 규약
  • 802.9 : 종합 음성, 데이터 네트워크에 관한 규약
  • 802.11 : 무선 LAN에 고나한 규약

962. 교착상태 발생의 필요 충분 조건

  • 상호 배제 (Mutual Exclusion) : 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함
  • 점유와 대기 (Hold and Wait) : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
  • 비선점 (Non-preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함
  • 환형 대기 (Circuler Wait) : 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함

964. TCP/IP 프로토콜

  • Network Access Layer
    • OSI 7 Layer : 물리 계층, 데이터 링크 계층
    • 하드웨어적인 요소와 관련된 모든 것들을 지원하는 계층
    • 송신 측 컴퓨터 : 상위 계층으로부터 전달 받은 패킷에 물리적인 주소는 MAC 주소 정보를 가지고 있는 헤더를 추가하여 프레임을 만들고, 프레임을 하위 계층인 물리 계층으로 전달
    • 수신 측 컴퓨터 : 데이터 링크 계층에서 추가된 헤더를 제거하여 상위 계층인 네트워크 계층으로 전달
  • Internet Layer
    • OSI 7 Layer : 네트워크 계층
    • 상위 트랜스포트 계층으로부터 받은 데이터에 IP 패킷 헤더를 붙여 IP 패킷을 만들고 전송
  • Transport Layer
    • OSI 7 Layer : 전송 계층
    • 네트워크 양단의 송수신 호스트 사이에서 신뢰성 있는 전송 기능 제공
    • 시스템의 논리주소와 포트를 가지고 있어서 각 상위 계층과 프로세스를 연결해서 통신 수행
    • 정확한 패킷의 전송을 보장하는 TCP와 정확한 전송을 보장하지 않는 UDP 프로토콜을 이용
    • 데이터의 정확한 전송보다 빠른 전송이 필요한 멀티미디어 통신에서 UDP를 사용
  • Application Layer
    • OSI 7 Layer : 세션 계층, 프레젠테이션 계층, 애플리케이션 계층
    • 응용 프로그램들이 네트워크 서비스, 메일 서비스, 웹 서비스 등을 할 수 있도록 표준적인 인터페이스 제공

966. C언어의 라이브러리 함수

  • stdio.h : 
    • printf : 문자 및 값을 형식화, stdout에 인쇄
    • scanf : stdin에서 arg-list로 지정된 위치로 데이터를 읽기
    • fprintf : 문자 및 값을 형식화하고 출력, stream에 인쇄
    • fscanf : stream에서 arg-list로 지정된 위치로 데이터를 읽기
    • fclose : 지정된 스트링 닫기
    • fopen : 지정된 파일 열기
  • math.h : 
    • sqrt : x의 제곱근 계산
    • pow : 값 x의 y 제곱 계산
    • abs : 정수 인수 n의 절대 값 계산
  • string.h : 
    • strlen : string 길이 계산
    • strcpy : string2를 string 1에 복사
    • strcmp : string1의 값을 string2와 비교
  • stdlib.h : 
    • atoi : string 정수 변환
    • atof : string을 long integer로 변환 (문자를 부동 소수점 값으로 변환)
    • srand : 의사 난수 생성기에 대한 seed 값 설정: 
시스템 포함 파일
함수
함수 프로토타입
설명
assert.h assert void assert(int expression); 진단 메세지를 인쇄하고, 표현식이 false인 경우 프로그램을 종료합니다.
ctype.h isprint int isprint(int c); c가 공백을 포함한 인쇄 가능한 문자인지 테스트합니다.
ctype.h ispunct int ispunct(int c); c가 구두점 문자인지 테스트합니다.
ctype.h isspace int isspace(int c); c가 공백 문자인지 테스트합니다.
ctype.h isupper int isupper(int c); c가 대문자인지 테스트합니다.
ctype.h iswalnum4 int iswalnum (wint_t wc); 영숫자 와이드 문자가 있는지 확인합니다.
ctype.h iswalpha4 int iswalpha (wint_t wc); 영문자 와이드 문자가 있는지 확인합니다.
ctype.h iswblank4 int iswblank (wint_t wc); 공백 또는 탭 와이드 문자가 있는지 확인합니다.
ctype.h iswcntrl4 int iswcntrl (wint_t wc); 제어 와이드 문자를 테스트합니다.
ctype.h iswctype4 int iswctype(wint_t wc, wctype_t wc_prop); 와이드 문자 wc에 특성 wc_prop가 있는지 여부를 판별합니다.
ctype.h iswdigit4 int iswdigit (wint_t wc); 10진수 와이드 문자가 있는지 확인합니다.
ctype.h iswgraph4 int iswgraph (wint_t wc); 와이드 문자 공백을 제외하고 인쇄 와이드 문자가 있는지 확인합니다.
ctype.h iswlower4 int iswlower (wint_t wc); 소문자 와이드 문자가 있는지 확인합니다.
ctype.h tolower int tolower(int c); c를 소문자로 변환합니다.
ctype.h toupper int toupper(int c); c를 대문자로 변환합니다.
ctype.h towctrans wint_t towctrans(wint_t wc, wctrans_t desc); desc에서 설명하는 맵핑에 기반하여 와이드 문자 wc를 변환합니다.
langinfo.h putc1 int putc(int c, FILE *stream); c를 출력 stream에 인쇄합니다.
locale.h malloc void *malloc(size_t size); 기억장치 블록을 예약합니다.
locale.h sinh double sinh(double x); x의 쌍곡 사인을 계산합니다.
locale.h wcscmp int wcscmp(const wchar_t *string1, const wchar_t *string2); 두 와이드 문자 스트링, *string1 및 *string2를 비교합니다.
math.h acos double acos(double x); x의 역코사인을 계산합니다.
math.h asin double asin(double x); x의 역사인을 계산합니다.
math.h atan double atan(double x); x의 역탄젠트를 계산합니다.
math.h atan2 double atan2(double y, double x); y/x의 역탄젠트를 계산합니다.
math.h clearerr void clearerr(FILE *stream); stream에 대한 오류 인디케이터 및 파일의 끝 인디케이터를 재설정합니다.
math.h cosh double cosh(double x); x의 쌍곡 코사인을 계산합니다.
math.h ctime char *ctime(const time_t *time); time을 문자 스트링으로 변환합니다.
math.h erfc double erfc(double x); x의 큰 값에 대한 오류 함수를 계산합니다.
math.h exit void exit(int status); 정상적으로 프로그램을 종료합니다.
math.h fabs double fabs(double x); 부동 소수점 인수 x의 절대값을 계산합니다.
math.h fclose int fclose(FILE *stream); 지정된 스트림을 닫습니다.
math.h fprintf int fprintf(FILE *stream, const char *format-string, arg-list); 문자 및 값을 형식화하고 출력 stream에 인쇄합니다.
math.h fputc1 int fputc(int c, FILE *stream); 문자를 출력 stream에 인쇄합니다.
math.h fwrite size_t fwrite(const void *buffer, size_t size,size_t count, FILE *stream); buffer에서 stream까지 size 길이의 항목을 최대 count회 기록합니다.
math.h gmtime_r struct tm *gmtime_r (const time_t *time, struct tm *result); time 값을 tm 유형의 구조로 변환합니다. (gmtime의 재시작 가능 버전.)
math.h islower int islower(int c); c가 소문자인지 테스트합니다.
math.h localtime_r struct tm *localtime_r (const time_t *timeval, struct tm *result); time 값을 유형 tm의 구조로 변환합니다. (localtime의 재시작 가능 버전.)
math.h localtime64 struct tm *localtime64(const time64_t *timeval); timeval을 유형 tm의 구조로 변환합니다.
math.h localtime64_r struct tm *localtime64_r (const time64_t *timeval, struct tm *result); time 값을 유형 tm의 구조로 변환합니다. (localtime64의 재시작 가능 버전.)
math.h log10 double log10(double x); x의 밑이 10인 로그를 계산합니다.
math.h mbsrtowcs4 size_t mbsrtowc (wchar_t *dst, const char **src, size_t len, mbstate_t *ps); 멀티바이트 스트링을 와이드 문자 스트링으로 변환합니다. (mbstowcs의 재시작 가능 버전.)
math.h mbstowcs size_t mbstowcs(wchar_t *pwc, const char *string, size_t n); string의 멀티바이트 문자를 대응하는 wchar_t 코드로 변환하고 pwc에 n개 이하의 코드를 지정합니다.
math.h nexttowardl long double nexttowardl(long double x, long double y); x 이후 y 방향으로 다음에 표시 가능한 값을 계산합니다.
math.h nl_langinfo4 char *nl_langinfo(nl_item item); item에서 지정하는 요청된 정보를 설명하는 스트링을 현재 로케일에서 검색합니다.
math.h perror void perror(const char *string); stderr에 오류 메세지를 인쇄합니다.
math.h pow double pow(double x, double y); 값 x의 y제곱을 계산합니다.
math.h printf int printf(const char *format-string, arg-list); 문자 및 값을 형식화하고 stdout에 인쇄합니다.
math.h putenv int *putenv(const char *varname); 기존 변수를 대체하거나 새로 작성하여 환경 변수 값을 설정합니다.
math.h quantized128 int quantexpd128(_Decimal128 x); 4배정밀도 십진 부동 소수값의 퀀텀 지수를 다른 4배정밀도 십진 부동 소수값의 퀀텀 지수로 설정합니다.
math.h quantized64 int quantexpd64(_Decimal64 x); 배정밀도 십진 부동 소수값의 퀀텀 지수를 다른 배정밀도 십진 부동 소수값의 퀀텀 지수로 설정합니다.
math.h raise int raise(int sig); 신호 sig를 실행 중인 프로그램에 전송합니다.
math.h rand int rand(void); 의사 난수 정수를 리턴합니다.
math.h rand_r int rand_r(void); 의사 난수 정수를 리턴합니다. (재시작 가능 버전)
math.h realloc void *realloc(void *ptr, size_t size); 이전에 예약된 기억장치 블록의 size를 변경합니다.
math.h samequantumd128 __bool__ samequantumd128(_Decimal128 x, _Decimal128 y); 두 4배정밀도 십진 부동 소수값의 퀀텀 지수가 동일한지 판별합니다.
math.h samequantumd32 __bool__ samequantumd32(_Decimal32 x, _Decimal32 y); 두 단정밀도 십진 부동 소수값의 퀀텀 지수가 동일한지 판별합니다.
math.h samequantumd64 __bool__ samequantumd64(_Decimal64 x, _Decimal64 y); 두 배정밀도 십진 부동 소수값의 퀀텀 지수가 동일한지 판별합니다.
math.h sqrt double sqrt(double x); x의 제곱근을 계산합니다.
math.h srand void srand(unsigned int seed); 의사 난수 생성기에 대한 seed를 설정합니다.
math.h strcat char *strcat(char *string1, const char *string2); string2를 string1에 연결합니다.
math.h tanh double tanh(double x); x의 쌍곡 탄젠트를 계산합니다.
math.h wcslen size_t wcslen(const wchar_t *string); string으로 가리키는 스트링에서 와이드 문자 수를 계산합니다.
math.h wcslocaleconv struct wcslconv *wcslocaleconv(void); 현재 로케일에 따라 struct wcslconv에서 숫자 수량을 형식화합니다.
math.h wcsncat wchar_t *wcsncat(wchar_t *string1, const wchar_t *string2, size_t count); string2의 최대 count개 와이드 문자를 string1의 끝에 추가하고 결과에 wchar_t 널 문자를 추가합니다.
math.h 시간 time_t time(time_t *timeptr); 현재 캘린더 시간을 리턴합니다.
nl_types.h catgets6 char *catgets(nl_catd catd, int set_id, int msg_id, const char *s); 열린 메세지 카탈로그에서 메세지를 검색합니다.
nl_types.h catopen6 nl_catd catopen (const char *name, int oflag); 메세지 카탈로그를 엽니다. 이 작업은 메세지를 검색하기 전에 수행해야 합니다.
nl_types.h ceil double ceil(double x); x 이상의 가장 작은 정수를 나타내는 double 값을 계산합니다.
regex.h remove int remove(const char *filename); filename으로 지정된 파일을 삭제합니다.
regex.h rename int rename(const char *oldname, const char *newname); 지정된 파일명을 변경합니다.
regex.h rewind1 void rewind(FILE *stream); stream과 연관된 파일 포인터를 파일 시작 위치로 재배치합니다.
regex.h scanf int scanf(const char *format-string, arg-list); stdin에서 arg-list로 지정된 위치로 데이터를 읽습니다.
setjmp.h mbtowc int mbtowc(wchar_t *pwc, const char *string, size_t n); 멀티바이트 문자 string의 처음 n바이트에 대응하는 wchar_t 코드를 wchar_t 문자 pwc에 저장합니다.
setjmp.h sin double sin(double x); x의 사인을 계산합니다.
signal.h regcomp int regcomp(regex_t *preg, const char *pattern, int cflags); pattern으로 가리키는 소스 정규식을 실행 가능 버전으로 컴파일하고 preg로 가리키는 위치에 저장합니다.
signal.h sprintf int sprintf(char *buffer, const char *format-string, arg-list); 문자 및 값을 형식화하고 buffer에 저장합니다.
stdarg.h va_end void va_end(va_list arg_ptr); 가변 인수 리스트 처리에서 정상 리턴을 사용합니다.
stdarg.h va_start void va_start(va_list arg_ptr, variable_name); va_arg 및 va_end에 의한 후속 사용 시 arg_ptr을 초기화합니다.
stdarg.h vfprintf int vfprintf(FILE *stream, const char *format, va_list arg_ptr); 문자를 형식화하고 가변 개수의 인수를 사용하여 출력 stream에 문자를 인쇄합니다.
stdarg.h vfscanf int vfscanf(FILE *stream, const char *format, va_list arg_ptr); 지정된 스트림에서 가변 개수의 인수로 지정된 위치로 데이터를 읽습니다.
stdarg.h vwscanf int vwscanf(const wchar_t *format, va_list arg_ptr); stdin에서 가변 개수의 인수로 지정된 위치로 와이드 데이터를 읽습니다.
stdarg.h wcscat wchar_t *wcscat(wchar_t *string1, const wchar_t *string2); string2로 가리키는 스트링의 사본을 string1로 가리키는 스트링의 끝에 추가합니다.
stdarg.h wcscpy wchar_t *wcscpy(wchar_t *string1, const wchar_t *string2); *string2의 컨텐츠(종료 wchar_t 널 문자 포함)를 *string1로 복사합니다.
stdarg.hstdio.h vscanf int vscanf(const char *format, va_list arg_ptr); stdin에서 가변 개수의 인수로 지정된 위치로 데이터를 읽습니다.
stdio.h calloc void *calloc(size_t num, size_t size); num 요소의 배열에 대한 기억장치 공간을 예약하고(각각 size바이트) 모든 요소 값을 0으로 초기화합니다.
stdio.h clock clock_t clock(void); 작업을 시작한 이후 경과한 프로세서 시간을 리턴합니다.
stdio.h fdopen5 FILE *fdopen(int handle, const char *type); 핸들로 식별된 파일과 입력 또는 출력 스트림을 연관합니다.
stdio.h feof int feof(FILE *stream); 파일의 끝 플래그가 지정된 stream에 대해 설정되었는지 테스트합니다.
stdio.h ferror int ferror(FILE *stream); stream에서 읽거나 해당 스트림에 기록하는 경우 오류 인디케이터를 테스트합니다.
stdio.h fflush1 int fflush(FILE *stream); 출력 stream과 연관된 버퍼의 컨텐츠를 기록합니다.
stdio.h fgetc1 int fgetc(FILE *stream); 입력 stream에서 부호없는 단일 문자를 읽습니다.
stdio.h fgetpos1 int fgetpos(FILE *stream, fpos_t *pos); stream과 연관된 파일 포인터의 현재 위치를 pos로 가리킨 오브젝트에 저장합니다.
stdio.h fgets1 char *fgets(char *string, int n, FILE *stream); 입력 stream에서 스트링을 읽습니다.
stdio.h fileno5 int fileno(FILE *stream); 현재 stream과 연관된 파일 핸들을 판별합니다.
stdio.h floor double floor(double x); x 이하의 가장 큰 정수를 나타내는 부동 소수점 값을 계산합니다.
stdio.h fmod double fmod(double x, double y); x/y의 부동 소수점 나머지를 계산합니다.
stdio.h fopen FILE *fopen(const char *filename, const char *mode); 지정된 파일을 엽니다.
stdio.h fputs1 int fputs(const char *string, FILE *stream); 스트링을 출력 stream에 복사합니다.
stdio.h fread size_t fread(void *buffer, size_t size, size_t count, FILE *stream); 입력 stream에서 size 길이의 항목을 최대 count회 읽고 buffer에 저장합니다.
stdio.h free void free(void *ptr); 기억장치 블록을 해제합니다.
stdio.h freopen FILE *freopen(const char *filename, const char *mode, FILE *stream); stream을 닫고 지정된 파일에 재지정합니다.
stdio.h frexp double frexp(double x, int *expptr); 부동 소수점 숫자를 가수와 지수로 분리합니다.
stdio.h fscanf int fscanf(FILE *stream, const char *format-string, arg-list); stream에서 arg-list로 지정된 위치로 데이터를 읽습니다.
stdio.h fseek1 int fseek(FILE *stream, long int offset, int origin); stream과 연관된 현재 파일 위치를 새 위치로 변경합니다.
stdio.h ftell1 long int ftell(FILE *stream); 파일 포인터의 현재 위치를 가져옵니다.
stdio.h gamma double gamma(double x); 감마 함수 계산
stdio.h getc1 int getc(FILE *stream); 입력 stream에서 단일 문자를 읽습니다.
stdio.h getchar1 int getchar(void); stdin에서 단일 문자를 읽습니다.
stdio.h getenv char *getenv(const char *varname); varname에 대한 환경 변수를 검색합니다.
stdio.h gets char *gets(char *buffer); stdin에서 스트링을 읽고, buffer에 저장합니다.
stdio.h getwchar6 wint_t getwchar(void); stdin에서 다음 멀티바이트 문자를 읽고 와이드 문자로 변환한 후 stdin에 대해 연관된 파일 위치 인디케이터를 진행합니다.
stdio.h gmtime struct tm *gmtime(const time_t *time); time 값을 tm 유형의 구조로 변환합니다.
stdio.h gmtime64 struct tm *gmtime64(const time64_t *time); time 값을 tm 유형의 구조로 변환합니다.
stdio.h gmtime64_r struct tm *gmtime64_r (const time64_t *time, struct tm *result); time 값을 tm 유형의 구조로 변환합니다. (gmtime64의 재시작 가능 버전.)
stdio.h hypot double hypot(double side1, double side2); 변 길이가 side1 및 side2인 직각 삼각형의 빗변을 계산합니다.
stdio.h isalpha int isalpha(int c); c가 영문자인지 테스트합니다.
stdio.h isascii4 int isascii(int c); c가 7비트 US-ASCII 범위에 포함되는지 테스트합니다.
stdio.h putchar1 int putchar(int c); c를 stdout에 인쇄합니다.
stdio.h puts int puts(const char *string); 스트링을 stdout에 인쇄합니다.
stdio.h putwchar6 wint_t putwchar(wchar_t wc); 와이드 문자 wc를 멀티바이트 문자로 변환하고 stdout에 기록합니다.
stdio.h qsort void qsort(void *base, size_t num, size_t width, int(*compare)(const void *element1, const void *element2)); num 요소의 배열을 빠르게 정렬합니다(각각 크기가 width바이트).
stdio.h quantexpd128 _Decimal128 quantized128(_Decimal128 x, _Decimal128 y); 4배정밀도 십진 부동 소수값의 퀀텀 지수를 계산합니다.
stdio.h quantexpd64 _Decimal64 quantized64(_Decimal64 x, _Decimal64 y); 배정밀도 십진 부동 소수값의 퀀텀 지수를 계산합니다.
stdio.h setbuf void setbuf(FILE *stream, char *buffer); stream에 대한 버퍼링을 제어합니다.
stdio.h setjmp int setjmp(jmp_buf env); 스택 환경을 저장합니다. 그러면 후속으로 longjmp에서 복원할 수 있습니다.
stdio.h setlocale char *setlocale(int category, const char *locale); locale에 정의된 변수를 변경 또는 쿼리합니다.
stdio.h setvbuf int setvbuf(FILE *stream, char *buf, int type, size_t size); stream에 대한 size 버퍼 및 버퍼링을 제어합니다.
stdio.h signal void(*signal (int sig, void(*func)(int))) (int); 신호 sig에 대한 신호 핸들러로 func를 등록합니다.
stdio.h snprintf int snprintf(char *outbuf, size_t n, const char*, ...) n자를 outbuf에 기록한 후에 함수가 중단된다는 점을 제외하고 sprintf와 동일합니다.
stdio.h sscanf int sscanf(const char *buffer, const char *format, arg-list); buffer에서 arg-list로 지정된 위치로 데이터를 읽습니다.
stdio.h strcasecmp int srtcasecmp(const char *string1, const char *string2); 대소문자를 구분하지 않고 스트링을 비교합니다.
stdio.h strcmp int strcmp(const char *string1, const char *string2); string1의 값을 string2와 비교합니다.
stdio.h tmpnam char *tmpnam(char *string); 임시 파일명을 생성합니다.
stdio.h toascii int toascii(int c); c를 7비트 US-ASCII 문자 세트의 문자로 변환합니다.
stdio.h va_arg var_type va_arg(va_list arg_ptr, var_type); 한 인수 값을 리턴하고 다음 인수를 가리키도록 arg_ptr을 수정합니다.
stdio.h va_copy void va_copy(va_list dest, va_list src); src의 사본으로 dest를 초기화합니다.
stdio.h vswscanf int vswscanf(const wchar_t *buffer, const wchar_t *format, va_list arg_ptr); 버퍼에서 가변 개수의 인수로 지정된 위치로 와이드 데이터를 읽습니다.
stdio.h  wcrtomb4 int wcrtomb (char *s, wchar_t wchar, mbstate_t *pss); 와이드 문자를 멀티바이트 문자로 변환합니다. (wctomb의 재시작 가능 버전.)
stdio.h  wcschr wchar_t *wcschr(const wchar_t *string, wchar_t character); string으로 가리키는 와이드 문자 스트링에서 character의 표시를 검색합니다.
stdio.h stdarg.h vfwscanf int vfwscanf(FILE *stream, const wchar_t *format, va_list arg_ptr); 지정된 스트림에서 가변 개수의 인수로 지정된 위치로 와이드 데이터를 읽습니다.
stdio.h stdarg.h vprintf int vprintf(const char *format, va_list arg_ptr); 가변 개수의 인수를 사용하여 문자를 형식화하고 stdout에 인쇄합니다.
stdio.h stdarg.h vsnprintf int vsnprintf(char *outbuf, size_t n, const char*, va_list); n자를 outbuf에 기록한 후에 함수가 중단된다는 점을 제외하고 vsprintf와 동일합니다.
stdio.h stdarg.h vsprintf int vsprintf(char *target-string, const char *format, va_list arg_ptr); 가변 개수의 인수를 사용하여 문자를 형식화하고 버퍼에 저장합니다.
stdio.h stdarg.h vsscanf int vsscanf(const char*buffer, const char *format, va_list arg_ptr); 버퍼에서 가변 개수의 인수로 지정된 위치로 데이터를 읽습니다.
stdio.h stdarg.h vswprintf int vswprintf(wchar_t *wcsbuffer, size_t n, const wchar_t *format, va_list arg); 와이드 문자 및 값의 시리즈를 형식화하고 버퍼 wcsbuffer에 저장합니다.
stdio.h stdarg.h vwprintf6 int vwprintf(const wchar_t *format, va_list arg); 가변 인수 리스트가 arg로 대체된다는 점을 제외하고 wprintf와 동일합니다.
stdlib.h abort void abort(void); 비정상적으로 프로그램을 중지합니다.
stdlib.h abs int abs(int n); 정수 인수 n의 절대값을 계산합니다.
stdlib.h atexit int atexit(void (*func)(void)); 정상 종료 시 호출할 함수를 등록합니다.
stdlib.h atof double atof(const char *string); string을 배정밀도 부동 소수점 값으로 변환합니다.
stdlib.h atoi int atoi(const char *string); string을 정수로 변환합니다.
stdlib.h atol long int atol(const char *string); string을 long integer로 변환합니다.
stdlib.h bsearch void *bsearch(const void *key, const void *base, size_t num, size_t size, int (*compare) (const void *element1, const void *element2)); num 요소의 배열에서 2진 검색을 수행합니다(각각 size바이트). 배열은 compare로 가리키는 함수에서 오름차순으로 저장되어야 합니다.
stdlib.h catclose6 int catclose (nl_catd catd); 이전에 열린 메세지 카탈로그를 닫습니다.
stdlib.h erf double erf(double x); x의 오류 함수를 계산합니다.
stdlib.h exp double exp(double x); 부동 소수점 인수 x의 지수 함수를 계산합니다.
stdlib.h fsetpos1 int fsetpos(FILE *stream, const fpos_t *pos); 현재 파일 위치를 pos로 판별된 새 위치로 이동합니다.
stdlib.h isalnum int isalnum(int c); c가 영숫자인지 테스트합니다.
stdlib.h log double log(double x); x의 자연 로그를 계산합니다.
stdlib.h longjmp void longjmp(jmp_buf env, int value); setjmp 함수에서 env에 전에 설정된 스택 환경을 복원합니다.
stdlib.h memchr void *memchr(const void *buf, int c, size_t count); 부호없는 문자로 변환된 c의 첫 번째 표시를 buf의 처음 count바이트에서 검색합니다.
stdlib.h memcmp int memcmp(const void *buf1, const void *buf2, size_t count); buf1 및 buf2의 최대 count바이트를 비교합니다.
stdlib.h memcpy void *memcpy(void *dest, const void *src, size_t count); src의 count바이트를 dest에 복사합니다.
stdlib.h memmove void *memmove(void *dest, const void *src, size_t count); src의 count바이트를 dest에 복사합니다. 겹치는 오브젝트 간 복사가 허용됩니다.
stdlib.h quantexpd32 _Decimal32 quantized32(_Decimal32 x, _Decimal32 y); 단정밀도 십진 부동 소수값의 퀀텀 지수를 계산합니다.
stdlib.h quantized32 int quantexpd32(_Decimal32 x); 단정밀도 십진 부동 소수값의 퀀텀 지수를 다른 단정밀도 십진 부동 소수값의 퀀텀 지수로 설정합니다.
stdlib.h regerror size_t regerror(int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size); 정규식 preg에 대한 오류 코드 errcode의 설명을 찾습니다.
stdlib.h regexec int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t *pmatch, int eflags); 널 종료 스트링 string을 컴파일된 정규식 preg와 비교하여 둘 사이의 일치를 찾습니다.
stdlib.h regfree void regfree(regex_t *preg); 정규식 preg를 구현하도록 regcomp에서 할당한 메모리를 해제합니다.
stdlib.h strchr char *strchr(const char *string, int c); string에서 c의 첫 번째 표시를 찾습니다.
stdlib.h strtod128 _Decimal128 strtod128(const char *nptr, char **endptr); nptr을 4배정밀도 십진 부동 소수값으로 변환합니다.
stdlib.h strtof float strtof(const char *nptr, char **endptr); nptr을 부동 값으로 변환합니다.
stdlib.h strtok char *strtok(char *string1, const char *string2); string2에서 다음 문자로 구분된 string1의 다음 토큰을 찾습니다.
stdlib.h strtok_r char *strtok_r(char *string, const char *seps, char **lasts); seps에서 다음 문자로 구분된 string의 다음 토큰을 찾습니다. (strtok의 재시작 가능 버전.)
stdlib.h strtol long int strtol(const char *nptr, char **endptr, int base); nptr을 부호있는 long integer로 변환합니다.
stdlib.h strxfrm size_t strxfrm(char *string1, const char *string2, size_t count); string2를 변환하고 string1에 결과를 배치합니다. 변환은 프로그램의 현재 로케일에 의해 판별됩니다.
stdlib.h swprintf int swprintf(wchar_t *wcsbuffer, size_t n, const wchar_t *format, arg-list); 와이드 문자 및 값의 시리즈를 형식화하고 와이드 문자 버퍼 wcsbuffer에 저장합니다.
stdlib.h swscanf int swscanf (const wchar_t *buffer, const wchar_t *format, arg-list) buffer에서 arg-list로 지정한 위치로 데이터를 읽습니다.
stdlib.h tan double tan(double x); x의 탄젠트를 계산합니다.
stdlib.h wcscoll4 int wcscoll (const wchar_t *wcs1, const wchar_t *wcs2); 현재 로케일에서 배열 순서를 사용하여 두 와이드 문자 스트링을 비교합니다.
stdlib.h wcscspn size_t wcscspn(const wchar_t *string1, const wchar_t *string2); *string1로 가리키는 스트링의 초기 세그먼트에서 *string2로 가리키는 스트링에 나타나지 않는 wchar_t 문자 수를 판별합니다.
string.h memset void *memset(void *dest, int c, size_t count); dest에서 count바이트를 값 c로 설정합니다.
string.h mktime time_t mktime(struct tm *time); 로컬 time을 캘린더 시간으로 변환합니다.
string.h mktime64 time64_t mktime64(struct tm *time); 로컬 time을 캘린더 시간으로 변환합니다.
string.h modf double modf(double x, double *intptr); 부동 소수점 값 x를 소수 및 정수 파트로 구분합니다.
string.h nextafter double nextafter(double x, double y); x 이후 y 방향으로 다음에 표시 가능한 값을 계산합니다.
string.h strcpy char *strcpy(char *string1, const char *string2); string2를 string1에 복사합니다.
string.h strcspn size_t strcspn(const char *string1, const char *string2); string2에 포함되지 않는 문자로 구성된 string1의 초기 서브스트링 길이를 리턴합니다.
string.h strerror char *strerror(int errnum); 오류 메세지 스트링에 errnum의 오류 번호를 맵핑합니다.
string.h strfmon4 int strfmon (char *s, size_t maxsize, const char *format, ...); 통화 값을 스트링으로 변환합니다.
string.h strftime size_t strftime (char *dest, size_t maxsize, const char *format, const struct tm *timeptr); format으로 판별된 스트링에 따라, dest로 가리키는 배열에 문자를 저장합니다.
string.h strlen size_t strlen(const char *string); string 길이를 계산합니다.
string.h strncasecmp int strncasecmp(const char *string1, const char *string2, size_t count); 대소문자를 구분하지 않고 스트링을 비교합니다.
string.h strncmp int strncmp(const char *string1, const char *string2, size_t count); string1 및 string2의 최대 count자를 비교합니다.
string.h strpbrk char *strpbrk(const char *string1, const char *string2); string2에 있는 임의 문자의 첫 번째 표시를 string1에서 찾습니다.
string.h strptime4 char *strptime(const char *buf, const char *format, struct tm *tm); 날짜 및 시간 변환
string.h strrchr char *strrchr(const char *string, int c); string에서 c의 마지막 표시를 찾습니다.
string.h strspn size_t strspn(const char *string1, const char *string2); string2에 포함된 문자로 구성된 string1의 초기 서브스트링 길이를 리턴합니다.
string.h strtod double strtod(const char *nptr, char **endptr); nptr을 배정밀도 값으로 변환합니다.
string.h strtod32 _Decimal32 strtod32(const char *nptr, char **endptr); nptr을 단정밀도 십진 부동 소수값으로 변환합니다.
string.h strtod64 _Decimal64 strtod64(const char *nptr, char **endptr); nptr을 배정밀도 십진 부동 소수값으로 변환합니다.
string.h strtold long double strtold(const char *nptr, char **endptr); nptr을 long double 값으로 변환합니다.
string.h strtoul unsigned long int strtoul(const char *string1, char **string2, int base); string1을 부호없는 long integer로 변환합니다.
string.h 시스템 int system(const char *string); string을 시스템 명령 분석기로 전달합니다.
strings.h strcoll int strcoll(const char *string1, const char *string2); 현재 로케일에서 배열 순서를 사용하여 두 스트링을 비교합니다.
strings.h strncpy char *strncpy(char *string1, const char *string2, size_t count); string2에서 최대 count자를 string1에 복사합니다.
time.h asctime char *asctime(const struct tm *time); 구조로 저장된 time을 문자 스트링으로 변환합니다.
time.h asctime_r char *asctime_r (const struct tm *tm, char *buf); 구조로 저장된 tm을 문자 스트링으로 변환합니다. (asctime의 재시작 가능 버전.)
time.h cos double cos(double x); x의 코사인을 계산합니다.
time.h ctime_r char *ctime_r(const time_t *time, char *buf); time을 문자 스트링으로 변환합니다. (ctime의 재시작 가능 버전.)
time.h ctime64 char *ctime64(const time64_t *time); time을 문자 스트링으로 변환합니다.
time.h ctime64_r char *ctime64_r(const time64_t *time, char *buf); time을 문자 스트링으로 변환합니다. (ctime64의 재시작 가능 버전.)
time.h difftime double difftime(time_t time2, time_t time1); time2 및 time1 사이의 차이를 계산합니다.
time.h difftime64 double difftime64(time64_t time2, time64_t time1); time2 및 time1 사이의 차이를 계산합니다.
time.h div div_t div(int numerator, int denominator); numerator를 denominator로 나눈 경우 몫과 나머지를 계산합니다.
time.h isblank int isblank(int c); c가 공백 또는 탭 문자인지 테스트합니다.
time.h iscntrl int iscntrl(int c); c가 제어 문자인지 테스트합니다.
time.h isdigit int isdigit(int c); c가 10진수인지 테스트합니다.
time.h isgraph int isgraph(int c); c가 공백을 제외한 인쇄 가능한 문자인지 테스트합니다.
time.h mblen int mblen(const char *string, size_t n); 멀티바이트 문자 string의 길이를 판별합니다.
time.h mbrlen4 int mbrlen (const char *s, size_t n, mbstate_t *ps); 멀티바이트 문자의 길이를 판별합니다. (mblen의 재시작 가능 버전.)
time.h mbrtowc4 int mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps); 멀티바이트 문자를 와이드 문자로 변환합니다(mbtowc의 재시작 가능 버전).
time.h mbsinit4 int mbsinit (const mbstate_t *ps); 상태 오브젝트 *ps에서 초기 상태를 테스트합니다.
time.h nextafterl long double nextafterl(long double x, long double y); x 이후 y 방향으로 다음에 표시 가능한 값을 계산합니다.
time.h nexttoward double nexttoward(double x, long double y); x 이후 y 방향으로 다음에 표시 가능한 값을 계산합니다.
time.h strncat char *strncat(char *string1, const char *string2, size_t count); string2에서 최대 count자를 string1에 연결합니다.
time.h strstr char *strstr(const char *string1, const char *string2); string1에서 string2의 첫 번째 표시에 대한 포인터를 리턴합니다.
time.h time64 time64_t time64(time64_t *timeptr); 현재 캘린더 시간을 리턴합니다.
time.h tmpfile FILE *tmpfile(void); 임시 2진 파일을 작성하고 엽니다.
wctype.h iswprint4 int iswprint (wint_t wc); 인쇄 와이드 문자가 있는지 확인합니다.
wctype.h iswpunct4 int iswpunct (wint_t wc); 영숫자, 공백 문자가 아닌 와이드 문자를 테스트합니다.
wctype.h iswspace4 int iswspace (wint_t wc); iswalnum이 false인 와이드 문자의 구현 정의 세트에 대응하는 와이드 문자가 있는지 확인합니다.
wctype.h iswupper4 int iswupper (wint_t wc); 대문자 와이드 문자가 있는지 확인합니다.
wctype.h iswxdigit4 int iswxdigit (wint_t wc); 16진수 문자가 있는지 확인합니다.
wctype.h isxdigit4 int isxdigit(int c); c가 16진수인지 테스트합니다.
wctype.h j0 double j0(double x); 순서 0의 첫 번째 종류에 대한 베셀 함수 값을 계산합니다.
wctype.h j1 double j1(double x); 순서 1의 첫 번째 종류에 대한 베셀 함수 값을 계산합니다.
wctype.h jn double jn(int n, double x); 순서 n의 첫 번째 종류에 대한 베셀 함수 값을 계산합니다.
wctype.h labs long int labs(long int n); n의 절대값을 계산합니다.
wctype.h ldexp double ldexp(double x, int exp); x에 (2의 exp제곱)을 곱한 값을 리턴합니다.
wctype.h ldiv ldiv_t ldiv(long int numerator, long int denominator); numerator/denominator 연산의 몫과 나머지를 계산합니다.
wctype.h localeconv struct lconv *localeconv(void); 현재 로케일에 따라 구조 Iconv에서 숫자 수량을 형식화합니다.
wctype.h localtime struct tm *localtime(const time_t *timeval); timeval을 유형 tm의 구조로 변환합니다.
wctype.h towlower4 wint_t towlower(wint_t wc); 대문자를 소문자로 변환합니다.
wctype.h towupper4 wint_t towupper(wint_t wc); 소문자를 대문자로 변환합니다.
wctype.h ungetc1 int ungetc(int c, FILE *stream); c를 입력 stream에 다시 푸시합니다.
wctype.h wcsftime size_t wcsftime(wchar_t *wdest, size_t maxsize, const wchar_t *format, const struct tm *timeptr); timeptr 구조의 시간 및 날짜 스펙을 와이드 문자 스트링으로 변환합니다.
  wcsncmp int wcsncmp(const wchar_t *string1, const wchar_t *string2, size_t count); string1의 최대 count개 와이드 문자를 string2와 비교합니다.
  wcsncpy wchar_t *wcsncpy(wchar_t *string1, const wchar_t *string2, size_t count); string2에서 최대 count개 와이드 문자를 string1에 복사합니다.
  wcspbrk wchar_t *wcspbrk(const wchar_t *string1, const wchar_t *string2); string2로 가리키는 스트링에서 string1로 가리키는 스트링에 있는 와이드 문자의 첫 번째 표시를 찾습니다.
  wcsptime wchar_t *wcsptime(const wchar_t *buf, const wchar_t *format, struct tm *tm); 날짜 및 시간 변환. 와이드 문자를 사용한다는 점을 제외하고 strptime()과 동일합니다.
  wcsrchr wchar_t *wcsrchr(const wchar_t *string, wchar_t character); string으로 가리키는 스트링에서 character의 마지막 표시를 찾습니다.
  wcsrtombs4 size_t wcsrtombs (char *dst, const wchar_t **src, size_t len, mbstate_t *ps); 와이드 문자 스트링을 멀티바이트 스트링으로 변환합니다. (wcstombs의 재시작 가능 버전.)
  wcsspn size_t wcsspn(const wchar_t *string1, const wchar_t *string2); string1로 가리키는 스트링의 초기 세그먼트에서 와이드 문자 개수를 계산합니다. 이 세그먼트는 string2로 가리키는 스트링에서 완전히 와이드 문자로 구성됩니다.
  wcsstr wchar_t *wcsstr(const wchar_t *wcs1, const wchar_t *wcs2); wcs1에서 wcs2의 첫 번째 표시를 찾습니다.
  wcstod double wcstod(const wchar_t *nptr, wchar_t **endptr); nptr로 가리키는 와이드 문자 스트링의 초기 부분을 double 값으로 변환합니다.
  wcstod128 _Decimal128 wcstod128(const wchar_t *nptr, wchar_t **endptr); nptr로 가리키는 와이드 문자 스트링의 초기 부분을 4배 정밀도 십진 부동 소수값으로 변환합니다.
  wcstod32 _Decimal32 wcstod32(const wchar_t *nptr, wchar_t **endptr); nptr로 가리키는 와이드 문자 스트링의 초기 부분을 단정밀도 십진 부동 소수값으로 변환합니다.
  wcstod64 _Decimal64 wcstod64(const wchar_t *nptr, wchar_t **endptr); nptr로 가리키는 와이드 문자 스트링의 초기 부분을 배정밀도 십진 부동 소수값으로 변환합니다.
  wcstof float wcstof(const wchar_t *nptr, wchar_t **endptr); nptr로 가리키는 와이드 문자 스트링의 초기 부분을 float 값으로 변환합니다.
  wcstok wchar_t *wcstok(wchar_t *wcs1, const wchar_t *wcs2, wchar_t **ptr) wcs1을 토큰 순서로 구분합니다. 각각 wcs2로 가리키는 와이드 스트링의 와이드 문자로 구분합니다.
  wcstol long int wcstol(const wchar_t *nptr, wchar_t **endptr, int base); nptr로 가리키는 와이드 문자 스트링의 초기 부분을 long integer 값으로 변환합니다.
  wcstold long double wcstold(const wchar_t *nptr, wchar_t **endptr); nptr로 가리키는 와이드 문자 스트링의 초기 부분을 long double 값으로 변환합니다.
  wcstombs size_t wcstombs(char *dest, const wchar_t *string, size_t count); wchar_t string를 멀티바이트 스트링 dest로 변환합니다.
  wcstoul unsigned long int wcstoul(const wchar_t *nptr, wchar_t **endptr, int base); nptr로 가리키는 와이드 문자 스트링의 초기 부분을 부호없는 long integer 값으로 변환합니다.
  wcsxfrm4 size_t wcsxfrm (wchar_t *wcs1, const wchar_t *wcs2, size_t n); 문자 배열 가중치를 나타내는 값으로 와이드 문자 스트링을 변환하고 결과 와이드 문자 스트링을 배열에 배치합니다.
  wctob int wctob(wint_t wc); 초기 시프트 상태인 경우 멀티바이트 문자 표시가 1바이트인 확장된 문자 세트의 멤버에 wc가 대응하는지 여부를 판별합니다.
  wctomb int wctomb(char *string, wchar_t character); character의 wchar_t 값을 멀티바이트 string으로 변환합니다.
  wctrans wctrans_t wctrans(const char *property); 스트링 인수 특성으로 식별된 와이드 문자 사이에서 맵핑을 설명하는 wctrans_t 유형의 값을 구성합니다.
  wctype4 wctype_t wctype (const char *property); 문자 특성 분류에 대한 핸들을 가져옵니다.
  wcwidth int wcswidth(const wchar_t *pwcs, size_t n); 와이드 문자 스트링의 표시 너비를 판별합니다.
  wmemchr wchar_t *wmemchr(const wchar_t *s, wchar_t c, size_t n); s에서 가리킨 오브젝트의 처음 n개 와이드 문자에서 c의 첫 번째 표시를 찾습니다.
  wmemcmp int wmemcmp(const wchar_t *s1, const wchar_t *s2, size_t n); s1에서 가리킨 오브젝트의 처음 n개 문자를 s2에서 가리킨 오브젝트의 처음 n개 와이드 문자와 비교합니다.
  wmemcpy wchar_t *wmemcpy(wchar_t *s1, const wchar_t *s2, size_t n); n개의 와이드 문자를 s2에서 가리킨 오브젝트에서 s1에서 가리킨 오브젝트로 복사합니다.
  wmemmove wchar_t *wmemmove(wchar_t *s1, const wchar_t *s2, size_t n); n개의 와이드 문자를 s2에서 가리킨 오브젝트에서 s1에서 가리킨 오브젝트로 복사합니다.
  wmemset wchar_t *wmemset(wchar_t *s, wchar_t c, size_t n); s에서 가리킨 오브젝트의 처음 n개 와이드 문자에 c의 값을 복사합니다.
  wprintf6 int wprintf(const wchar_t *format, arg-list); wprintf에 대한 인수 이전에 삽입된 인수 stdout를 포함하는 fwprintf와 동일합니다.
  wscanf6 int wscanf(const wchar_t *format, arg-list); wscanf의 인수 이전에 삽입된 인수 stdin을 포함하는 fwscanf와 동일합니다.
  y0 double y0(double x); 순서 0의 두 번째 종류에 대한 베셀 함수 값을 계산합니다.
  y1 double y1(double x); 순서 1의 두 번째 종류에 대한 베셀 함수 값을 계산합니다.
  yn double yn(int n, double x); 순서 n의 두 번째 종류에 대한 베셀 함수 값을 계산합니다.

970. JAVA의 변수와 자료형

  • String 문자열 타입 : CAR을 저장할 때 사용

972. 교착상태의 해결방법

  • 예방 (Prevention)
    • 교착 상태가 발생하지 않도록 사전에 시스템을 제어
    • 교착 상태 발생의 네가지 조건 중 어느 하나를 제거(부정)함으로써 수행
    • 자원의 낭비가 가장 심한 기법
  • 회피 (Avoidance)
    • 교착 상태가 발생할 가능성을 배제하지 않고 교착 상태가 발생하면 적절히 피하는 방법
    • 대표적인 기법 : 은행원 알고리즘 (Banker's Algorithm) - 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래한 기법
  • 발견 (Detection)
    • 시스템에 교착 상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 것
    • 교착 상태 발견 알고리즘과 자원 할당 그래프 사용 가능
  • 회복 (Recovery)
    • 교착 상태를 일으킨 프로세스를 종료하거나 교착 상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복

973. CIDR 표기를 서브넷 마스크로 전환하는 방법

  • XXX.XXX.XXX.XX/NN : / 기호 뒤의 NN을 확인해야 함
  • NN이 28이므로 /24에서 4개의 비트를 Net ID로 더 가져왔다는 의미 (Net ID 개수가 28개)
  • 28개일 때의 서브넷 마스크는 255.255.255.240
    • 240 : 마지막 8개 비트에서 Nedt ID로 할당한 4개를 1로 세팅한 후 10진수로 표현

975. 페이징 기법의 페이지 크기에 따른 특징

  • 페이지 크기가 작을 경우
    • 페이지 단편화 감소 : 한 개의 데이터를 주 기억장치로 이동하는 시간이 줄어듬
    • 불피룡한 내용이 주기억 장치에 적재될 확률이 적음 : 효율적인 워킹 셋 유지
    • Locality에 더 일치 : 기억장치 효율 향상
    • 페이지 정보를 갖는 페이지 앱 테이블의 크기가 커지고, 매핑 속도가 늦어짐
    • 디스크 접근 횟수가 많아져서 전체적인 입출력 시간은 늘어남
  • 페이지 크기가 클 경우
    • 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아지고 매핑 속도가 빨라짐
    • 디스크 접근 횟수가 줄어들어 전체적인 입출력의 효율성 증가
    • 페이지 단편화 증가 : 한 개의 페이지를 주 기억장치로 이동하는 시간이 늘어남
    • 프로세스 수행에 불필요한 내용도 주기억장치에 적재될 수 있음

976. 응집도

응집도 약함
우연적 응집도 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
논리적 응집도 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
시간적 응집도 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
절차적 응집도 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
교환적 응집도 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우 응집도
순차적 응집도 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
기능적 응집도 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
응집도 강함

977. C언어의 연산자 우선 순위

  • 괄호, 대괄호 → 부정, 증감 산술 연산자 → 곱셈, 나눗셈 산술 연산자 → 덧셈, 뺄셈 산술 연산자 → 시프트 연산자 → 관계 연산자 → 논리 연산자 → 삼항 연산자 → 대입 연산자
    • 괄호 대괄호 : (), []
    • 부정, 증감 산술 연산자 : !, ~, ++, --
    • 곱셈, 나눗셈 산술 연산자 : *, /, %
    • 덧셈, 뺄셈 산술 연산자 : +, -
    • 시프트 연산자 : ≫, ≪
    • 관계 연산자 : <, <=, >, >=
    • 논리 연산자 : &, ^, |, &&, ||
    • 삼항 연산자 : ?, :
    • 대입 연산자 : =, +=, -=, *=, /=

980. 페이지 교체 알고리즘

  • OPT
    • 추후 가장 오랫동안 사용하지 않을 페이지 교체
    • 호출 순서 및 참조상황 사전 예측 필요
  • FIFO
    • 적재시간 기억, 오래된 페이지 교체
    • 이해성, 프로그래밍 간단, Belady's 이상현상 발생
  • LRU
    • 최근 가장 오랫동안 미사용 페이지 교체
    • 계수기, 스택 사용
  • LFU
    • 사용 페이지 빈도수가 가장 적은 페이지 교체
    • 프로그램 실행 초기 많이 사용된 페이지 유리
  • NUR
    • 최근에 사용하지 않은 페이지 교체
    • 참조비트, 변형 비트 사용 

982. 접근통제 정책

  • 임의 접근 통제 (DAC)
    • 시스템 객체에 대한 접근을 사용자 개인 또는 그룹의 식별자를 기반으로 제한
    • 주체와 객체의 신분 및 임의적 접근 통제 규칙에 기초하여 객체에 대한 주체의 접근을 통제
    • 통제 권한 : 주체에 있음 - 주체가 임의적으로 접근 통제 권한 배분 가능
  • 강제 접근 통제 (MAC)
    • 정보 시스템 내에서 어떤 주체가 특정 객체에 접근하려 할 때 양쪽의 보안 레이블에 기초하여 높은 보안 수준을 요구하는 정보가 낮은 보안 수준의 주체에게 노출되지 않도록 접근 제한
    • 통제 권한 : 제 3자 - 주체는 접근 통제 권한과 무관
  • 역할 기반 접근 통제 (RBAC)
    • 사용자가 주어진 역할에 대한 접근 권한을 부여받는 방식
    • 사용자가 바뀌어도 역할 변화 없음
    • 통제 : DB 작업 권한 통제, 운영체제 작업 권한 통제

983. 스토리지 유형

  • DAS
    • 서버와 저장장치를 전용 케이블로 직접 연결하는 방식
    • 서버에서 저장 장치 관리
    • 속도가 빠르고 설치 및 운영이 용이
    • 초기 구축 비용 및 유지보수 비용 저렴
    • 직접 연결 방식 : 다른 서버에서 접근 불가, 파일 공유 불가
    • 확장성 및 유연성이 떨어짐
    • 저장 데이터가 적고 공유가 필요없는 환경에 적합 
  • NAS
    • 서버와 저장장치를 네트워크를 통해 연결하는 방식
    • 별도의 파일 관리 기능이 있는 NAS Storage가 내장된 저장장치를 직접 관리
    • Ethernet 스위치를 통해 다른 서버에서도 스토리지에 접근 가능 : 파일 공유 가능, 장소에 구애 맏지 않고 저장장치에 쉽게 접근 가능
    • 확장성, 유연성 우수
    • 접속 증가 시 성능 저하
  • SAN
    • DAS의 빠른 처리 + NAS의 파일 공유 장점 혼합
    • 서버와 저장 장치를 연결하는 전용 네트워크 별도 구성
    • 광 채널 FC 스위치를 이용하여 네트워크 구성
    • 서버나 저장장치를 광케이블로 연결하여 처리 속도가 빠름
    • 저장장치를 공유함으로써 여러 개의 저장장치나 백업 장비 단일화
    • 확장성, 유연성, 가용성이 뛰어남
    • 높은 트랜잭션 처리에 효과적
    • 기존 시스템의 경우 장비의 업그레이드가 필요, 초기 설치 비용 부담

986. CWE(Common Weakness Enumeration) 보안 약점

  • 입력 데이터 검증 및 표현 
  • 보안 기능
  • 시간 및 상태
  • 에러 처리
  • 코드 품질
  • 캡슐화
  • API 악용 

987. 보안 약점

  • SQL 삽입
    • 웹 응용 프로그램에서 SQL을 삽입하여 내부 데이터베이스 서버의 데이터를 유출 및 변조하고 관리자 인증을 우회
    • 동적 쿼리에서 사용되는 입력 데이터에 예약어 및 특수문자가 입력되지 않게 필터링 되도록 설정하여 방지
  • 경로 조작 및 자원 삽입
    • 데이터 입출력 경로를 조작하여 서버 자원을 수정, 삭제
    • 사용자 입력값을 식별자로 사용하는 경우 경로 순회 공격 방지 필터를 사용하여 방지 
  • 크로스사이트 스크립팅 
    • 웹페이지에 악의적인 스크립트를 삽입하여 방문자들의 정보를 탈취, 비정상적인 기능 수행 유발
    • HTML 태그 제한, 스크립트에 삽입되지 않도록 문자를 다른 문자로 치환하여 방지 
  • 운영체제 명령어 삽입
    • 외부 입력값을 통해 시스템 명령어의 실행을 유도하여 권한을 탈취, 시스템 장애 유발
    • 웹 인터페이스를 통해 시스템 명령어가 전달되지 않도록 하고, 외부 입력값을 검증 없이 내부 명령어로 사용하지 않음으로써 방지 
  • 위험한 형식 파일 업로드 
    • 악의적인 명령어가 포함된 스크립트 파일을 업로드함으로써 시스템 손상, 시스템을 제어
    • 업로드 되는 파일의 확장자 제한, 파일명 암호화, 웹사이트와 파일 서버의 경로 분리, 실행 속성을 제거하는 방법으로 방지
  • 신뢰되지 않는 URL 주소로 자동접속 연결 
    • 입력 값으로 사이트 주소를 받는 경우 이를 조작하여 방문자를 피싱 사이트로 유도
    • 연결되는 외부 사이트의 주소를 화이트 리스트로 관리함으로써 방지 
  • 메모리 버퍼 오버플로 
    • 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에서 자료를 읽거나 쓰려고 할 때 발생, 프로그램 오작동 유발 및 악의적인 코드 실행으로 공격자가 프로그램을 통제할 수 있는 권한 획득
    • 적절한 버퍼의 크기 설정, 설정된 범위의 메모리 내에서 올바르게 읽거나 쓸 수 있도록 함으로써 방

988. 공개키 암호화 (Public Key System)

  • 비대칭키 암호화
  • 공개키와 개인키라는 두 개의 암호화 키를 사용해서 암호화하고 복호화하는 방법
  • 송신자 : 공개키를 수신 받은 후 공개키로 암호화하여 메시지 전송
  • 수신자 : 개인키로 복호화
  • 장점 : 대칭키 암호화 기법의 키 공유 문제 해결
  • 단점 : 암호화 키의 길이가 길어서 암호화 및 복호화 성능이 대칭키 암호화 기법보다 떨어짐

990. DRDos (분산 반사 서비스 거부 공격)

  • DRDoS의 정의
    • 정상적인 서비스를 작동 중인 서버를 reflection으로 트래픽을 증폭시켜 공격하는 기법
    • DDoS 공격의 에이전트 설치 상의 어려움을 보완,  TCP 프로토콜 및 라우팅 테이블 운영상의 취약성 이용
    • 정상 서버를 에이전트화하여 공격하는 기법
  • DRDoS의 공격 원리 및 대응 방안
    • TCP 취약성 (3-Way Handshake), BGP 취약성, Reflection서버 (다수 라우터, 대용량 대역폭 서비스)
    • 서버 보호, 클라이언트 보호, ISP 업체를 통한 통제
  • DRDoS의 대표적 공격 루틴
    • 악의를 가진 해커가 타겟을 찾은 후 해당 타겟으로 자신 위조
    • 위조된 신분으로 인터넷 서비스를 정상적으로 사용중인 서버나 웹 서비스 요청
    • 웹 서비스를 요청 받은 서버, 라우터 등이 위조된 목적지로 응답
    • 실제 타겟은 아무것도 모른 채 엄청난 양의 응답을 받고 서비스 거부

992. 네트워크 보안 솔루션

  • 방화벽
    • 내부 네트워크와 인터넷 간에 전송되는 정보를 선별하여 수용, 거부, 수정하는 기능을 수행하는 보안 시스템
  • UTM
    • 다중 위협에 대해 보호 기능을 제공할 수 있는 포괄적 보안 시스템
    • 방화벽, 안티바이러스, 콘텐츠 필터링 등 하나의 패키지로 통합되어 있는 형태
  • Ant-DDos
    • 서비스에 대한 정당한 접근을 방해하거나 차단하고자 네트워크에 분산되어 있는 많은 에이전트를 이용하여 공격 대상 서버에 동시에 과도한 서비스 요청을 발생시키는 공격을 차단하기 위한 보안 솔루션
  • VPN
    • 인터넷 망에 사설망을 구축하여 이용자가 전용망 없이 사용할 수 있게 하는 보안 솔루션
  • NAC (네트워크 접근 제어)
    • 사용자 PC가 내부 네트워크에 접근하기 전에 보안 정책을 준수 했는지 검사하여 네트워크 접속을 통제하는 기술
  • IDS
    • 네트워크에서 송 / 수신 되는 데이터의 비정상적인 사용, 오남용을 실시간으로 탐지하는 보안 솔루션
  • IPS
    • 네트워크에서 공격 서명을 찾아내어 자동으로 조치를 취함으로서 비정상적인 트래픽을 중단시키는 보안 솔루션
    • 수동적인 방어 개념의 침입 차단 시스템, 침입 탐지 시스템과 달리 침입 경고 이전에 공격을 중단시키는데 중점을 둔 침입 유도 기능과 자동 대응 기능이 합쳐진 솔루션

994. 웹 프로토콜 방화벽 솔루션 (WAF)

  • WAF의 개념
    • 일반적인 네트워크 방화벽과는 달리 웹 애플리케이션 보안에 특화되어 개발된 솔루션
    • SQL Injection, Cross-Site Scripting (XSS) 등과 같은 웹 공격을 탐지하고 차단하는 기능 수행
  • WAF의 주요 기능
    • Request Validation : 사용자 요청 검증
      • 어플리케이션 접근 제어, 과다 요청 제어 (Web DoS)
      • 버퍼 오버 플로우 차단, SQL / 스크립트 차단
      • 업로드 파일 / 요청 형식 검사
    • Content Protection : 컨텐츠 보호
      • 신용 카드 정보 유출 차단, 주민 등록번호 유출 차단
      • 웹 변조 방지, 응답 형식 검사, 코드 노출 차단
    • Cloacking : 위장
      • 서버존 가상화 URL 변환, 부하 분산
      • 사용자에게 제공되는 정보 중 일부 위장
  • WAF의 유형
    • 설계 방식에 따른 유형
      • N/W 기반 : 네트워크 구간에 인라인 트랜스 패런트 및 프락시 방식으로 구성되며 전송되는 웹 트래픽에 대한 분석 및 차단 기능 수행
      • Host 기반 : 각 웹 서버에 설치된 보안 에이전트와 마스터 서버, 관리용 콘솔 환경으로 구성
    • 처리 방식에 따른 유형 
      • Proxy 방식 : 웹 서버 앞단에서 웹 방화벽이 클라이언트 요청을 받아 필터링 처리 후 다시 웹 서버와 재접속을 맺는 방식
      • Filtering 방식 : 웹 방화벽이 웹 서버의 플러그인 모듈처럼 동작하는 방식

996. 개발 방법 프로세스 - CBD 방법론

  • 재사용이 가능한 컴포넌트의 개발 또는 상용 컴포넌트들을 조합하여 애플리케이션 개발 생산성과 품질 향상
  • 시스템 유지 보수 비용 최소화

998. 해쉬 기법

  • 하나의 문자열을 이를 상징하는 더 짧은 길이의 값이나 키로 변환하는 단방향 암호화 방식
  • 정보의 위변조 (정보 무결성) 를 확인하기 위한 방법
  • 전자서명, 부인방지, 전자봉투 등에 활용

999. 암호화 알고리즘

  • 암호화 키와 복호화 키가 동일한 암호화 기법
  • 암호문을 송신하거나 수신하는 사용자는 사전에 암호화 키를 교환해야 함
  • 암호화 키와 복호화 키 둘 다 비밀키
  • 부인 방지 여부가 불가능하고 키의 관리가 복잡함
  • 안전한 인증이 어려움
  • 구현이 용이하며 암호화 속도가 빠르고 경제성이 높음, 변형이 가능함
  • 암호화 알고리즘의 구현 방식 : 블록, 스트림 암호화
  • 적용 알고리즘 : DES, 3DES, SEED, AES, IDEA

1000. 오버플로우 해결 방법

  • 선형 개방 주소법
    • 충돌이 발생한 다음 위치에서 차례로 검색하여 첫번째 빈공간에 저장
    • 레코드 전체 개수를 미리 예측 가능할 경우 적용 가능한 방법
  • 체인법
    • 오버플로가 발생한 레코드를 별도의 버킷으로 연결하여 저장
    • 링크를 위한 오버 헤드 발생, 레코드 개수 예측이 어려울 경우 적용
  • 다중 해싱법 (확장 해싱)
    • 키의 처음 비트를 이용하여 디렉토리를 통해 버킷에 접근 가능
    • 버킷에 오버플로가 발생할 경우 새로운 버킷을 생성하고 디렉토리의 포인터를 변경하거나 디렉토리를 확장
  • 스택 가드 (Stackguard)
    • 카나리 (carnary, 무결성 체크용 값) 사용