[C++] 시스템 소프트웨어 개발
시스템 소프트웨어 개발(Development Assistance Guidance for system software) DAG(Development Assistant Guide) Scalability Scalability 시스템에 들어오는 워크로드가 증가할때, 해당 시스템을 처리하는 능력 | Ex. 기존 시스템에서의 작업량이 1이었는데, 이가 2, 100, 1000과 같이 부하가 커졌을 때도 시스템 처리가 가능한가? But, 이상적으로 하드웨어적, 네트워크적 부하를 무한대로 감당할 수 있는 시스템은 존재 하지 않는다. 🌟 따라서 프로그래밍의 전과정에서 이를 해결하는 게 가장 중요! Scalability의 향상 방법 1. System Call Awareness 시스템 콜 시간 : 200 usec ~ 1000..
2022.05.20
no image
[C 이론] 17. 구조체
구조체(Structure) 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있다. 멤버 변수 (member vaiable) : 구조체를 구성하는 변수 배열 🆚 구조체 배열 : 같은 타입의 변수 집합 구조체 : 다양한 타입의 변수 집합 구조체 정의와 선언 struct student { int number; char name[10]; double grade; }; // 구조체 정의 int main(void){ struct student s1; // 구조체 변수 선언 ... } 이름 없는 구조체 선언 구조체를 정의할 때 태그 이름을 생략할 수 있다. 이 경우 구조체의 이름이 없으므로 구조체 변수를 구조체 정의와 함께 선..
2021.06.23
no image
[C 이론] 16. 파일 입출력
파일(file) 일련의 연속된 바이트(byte) 모든 파일 데이터들은 결국 바이트로 바뀌어서 파일에 저장된다. 바이트들을 어떻게 해석하느냐에 따라 파일의 내용이 달라진다. 이진 파일(binary file) 이진 파일은 사람이 읽을 수 없으나 컴퓨터는 읽을 수 있는 파일 이진 데이터가 직접 저장되어있는 파일 이진 파일은 텍스트 파일과 달리 라인들로 분리되지 않는다. 이진 파일은 특정 프로그램에 의해서만 판독가능하다.└ EX. 실행 파일, 사운드 파일, 이미지 파일 파일 처리 디스크 파일은 FILE 구조체를 이용하여 접근 FILE 구조체를 가리키는 포인터를 파일 포인터(file pointer) 라고 한다. 파일 열기 파일 모드 : 파일을 열어 수행할 작업 명시 파일 모드 💡 추가 모드(append mode)..
2021.06.22
no image
[C 이론] 15. 표준 입출력
표준 입출력 스트림 스트림(Stream) : 입력과 출력을 바이트(byte)들의 흐름으로 생각하는 것 입출력 함수의 분류 printf() 플래그 : 입/출력시 입력 형식을 지정하는 것 플래그 활용 💡+: 양수이면 "+"를 붙여서 출력한다.(음수는 기본적으로-붙여서 출력한다!) -: 왼쪽 정렬해서 출력한다. 필드폭(width)과 정밀도(precision) 💡기본적으로 소수는소수점 아래 6자리가 기본이고반올림하여 표시한다! 형식 지정자 scanf() 문자열을 제어문자의 형태에 맞춰 사용자에게 입력받는다. 💡_scanf()_사용시, 입력값을 저장할 변수의 주소를 전달한다!! scanf("%d", x);// ERROR ! 문자와 문자열 입력 💡문자 입력 : 형식 지정자에 공백이 있으면 입력내용에서 공백을 기준으..
2021.06.22
no image
[C 이론] 14. 문자와 문자열(2)
문자 입출력 라이브러리 함수 Ex1. getchar(), putchar() #include int main(void){ int ch; // 리턴 표준이 정수형임을 주의! int cnt = 0; // EOF 입력은 Ctrl + Z로 가능하다! while((ch = getchar()) != EOF) { putchar(ch); printf(" \n", cnt++); } return 0; } 💡 키보드 입력은 버퍼에 쌓이고 엔터 입력은 프로그램에 전달된다. (다음 단계 수행) Ex2. _getch(), _putch() #include #include // _getch(), _putch()가 포함된 헤더 int main(void){ int ch; // 리턴 표준이 정수형임을 주의! int cnt = 0; whil..
2021.06.05
no image
[C 이론] 13. 문자와 문자열(1)
아스키코드표(출처 : 코딩도장) 문자열(string) : 문자들이 여러 개 모인 것 문자는 ' (작은 따옴표)로 표현 문자열은 " (큰 따옴표)로 표현 문자열 변수 : 변경 가능한 문자열을 저장할 수 있는 변수 💡 NULL문자( '\0' ) : 문자열의 끝을 나타낸다. - 문자열은 어디서 종료되는지 알 수 없으므로 표시해준다. Ex1. 문자열 출력(1) #include int main(void) { int i = 0; char str[4]; str[0] = 'A'; str[1] = 'B'; str[2] = 'C'; str[3] = '\0'; while(str[i] != 0){ printf("%c %d %s\n", str[i], str[i], str); i++; } return 0; } 🌟 문자열을 생성할..
2021.06.05
no image
[C 이론] 12. 포인터(2)
인수 전달 방법 : 함수 호출 시 인수 전달 방법 값에 의한 호출(Call By Value) 기본적인 방법 함수로 값의 복사본이 전달된다. 실제 값 자체는 바뀌지 않는다. 참조에 의한 호출(Call By Reference = Call By Address) 함수로 원본(주소값)이 전달된다. 주소에 의한 전달이므로 실제 값 자체가 바뀐다. 값에 의한 호출 VS 참조에 의한 호출 값에 의한 호출(Call By Value) #include void swap(int x, int y); int main(void) { int a = 100, b = 200; printf("a=%d b=%d\n",a, b); swap(a, b); printf("a=%d b=%d\n",a, b); return 0; } // 함수에서의 값..
2021.06.01
no image
[C 이론] 11. 포인터(1)
포인터(Pointer) : 프로그래밍 언어에서 다른 변수의 메모리 주소를 가리키는 변수 다른 언어와는 차별화된 C만의 특징 포인터를 이용하면 직접 메모리 내용에 접근하여 조작할 수 있다. 포인터는 메모리의 주소를 의미한다. 포인터 변수는 메모리의 주소 값을 저장하는 변수이다.└ (데이터가 저장된 곳, 즉 메모리 주소를 가진다.) 메모리 매핑 하드웨어 : 외부 장치를 메모리처럼 접근할 수 있다. 참조에 의한 호출 : 함수 외부 변수의 수정과 여러 개의 값을 반환할 수 있다. 동적 메모리 할당 : 프로그램 실행 도중 메모리를 할당할 수 있다. 변수와 메모리 변수의 크기에 따라서 차지하는 메모리 공간이 달라진다. char 형 변수 : 1바이트 int 형 변수 : 4바이트 변수의 주소 & : 변수의 주소를 계산..
2021.06.01
no image
[C 이론] 10. 배열
데이터 유형에 따른 사용 상수(constants) : 고정된 값을 사용 변수(variable) : 모든 데이터를 각각 독립적으로 사용 배열(array) : 동일한 데이터 타입의 변수를 묶어서 사용 구조체(struct) : 서로 다른 데이터 타입의 변수를 묶어 사용 포인터(pointer) : 메모리에 직접 접근하여 사용 배열(Array) : 같은 타입의 변수들로 이루어진 유한 집합 선언 형식에 따라 n차원 배열 구성 가능 int score[5]; //1차원 배열 int score[3][5]; //2차원 배열 int score[2][3][5] //3차원 배열 요소(element) : 배열을 구성하는 각각의 값 (=원소) 인덱스(index) : 배열에서의 위치를 가리키는 값 💡 배열의 인덱스는 0부터 시작하며..
2021.05.26