Unix의 역사
당시 AT&T 와 General Electric 사, Honeywell 사, MIT 공과대학에서 MULTICS 라는
프로젝트를 미 국방성(ARPA)으로부터 자금 지원을 받아서 수행함
목적은 멀틱스 프로젝트의 목적은 끊이지 않고 돌아갈 수 있는 다중 사용자, 다중 프로세서,
다중 프로세스 기반의 시스템을 만드는 것
1969년), 켄 톰슨(Ken Thompson) 이라는 사람이 당시 그는 AT&T 사의 연구원으로 있으면서, 멀틱스 프로젝트에 참가하고
있었는데, 사무실에 안쓰는 PDP-7 컴퓨터가 있는 것을 보고는, 이 컴퓨터에다가 멀틱스와 비슷한 개념을 가진 운영체제를 한번 구현해 보게되었다.
여기에 재미를 느끼게 된 동료들 중 함께 멀틱스 프로젝트에서 일했던 데니스 리치(Dennis Ritchie)와 피터 뉴만(Peter Neumann) 이라는 사람도 같이 켄의 프로젝트에 동참하게 되고,
장난삼아 그 운영체제의 이름을 유닉스(Unix) 라고 지었다
멀틱스 프로젝트에서는 너무 많은 것을 구현하려고 했던 반면, 켄의 유닉스 시스템에서는 단지, 프로그램을 실행시키는 데만 중점을 두었었다. 처음부터 강력한 보안 시스템등은 유닉스의 목표가 아니었던 것이다.
BSD
1970년대 말, 그때 당시의 많은 대학들에서 그랬던 것처럼 캘리포니아 주립대학( 현재:버클리대 )에서도 유닉스 소스코드가 담겨 있는 테이프를 400달러에 구입하게 된다
그런데, 빌 조이(Bill Joy) 라는 학생과 척 핼리(Chuck Haley)라는 학생이 그 소스 코드에 조금씩 수정을 가하기 시작했다. 1978년에 자기들이 수정한 코드로 만든 유닉스와 유틸리티들을 포함하는 배포판(?)을
만들어서 50$의 가격으로 30장(?)을 출판하게 된다. 이것이 최초의 BSD 버젼의 유닉스 시스템이라고 할 수 있다.
BSD 에서 만든 (BSD : Berkeley Software Distribution) 유닉스의 네트워킹 프로그램들로 인해 유닉스를 사용하여 근거리 통신망(LAN)을 구축하는 것이 매우 수월해 졌으며,
급기야는 요즘에 이르러서는 '컴퓨터는 네트워크다' 라는 말까지 나오게 되었으며, 네트워크에 연결되지 않은 컴퓨터는 상상도 못할 정도까지 이르게 되었다.
어쨌든, 이러한 이유로 인해서, 버클리에서 개발된 유닉스의 버젼은 각종 연구소라든지 대학들에서 매우 광범위하게 사용되게 되었다.
WEB
Server
소프트웨어적 의미 : 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램
하드웨어적 의미 : 위에 언급한 기능을 제공하는 컴퓨터 프로그램을 실행하는 컴퓨터
목적
웹 서버의 주된 기능은 웹 페이지를 클라이언트로 전달하는 것이다
그림, CSS, 자바스크립트를 포함한 HTML 문서가 클라이언트로 전달됨
Client
사용자 또는 고객등이 사용하는 컴퓨터로써 주로 서버에 연결되는 일반컴퓨터를 의미함
서버사이드 스크립트 언어
ASP : MS에서 만든 스크립트 언어
PHP : C언어기반으로 만들어진 서버에서 동작하는 스크립트 언어
JSP (Java Server Pages) : HTML내에 Java code를 삽입하여, 웹서버에서 동적으로 웹브라우저를 관리하는 언어
DB ( DataBase)
여러 가지 업무에 공동으로 필요한 데이터를 유기적으로 결합하여 저장한 집합체.
데이터를 효율적으로 처리하기 위하여 개발된 것으로, 같은 데이터가 중복되는 문제를 없앨 수 있으며 업무가 확대되어도 새로 파일을 준비할 필요가 없다는 장점이 있다.
ID나 Password및 각종 데이터가 저장됨
DB에 password등을 암호화해서 저장하는것은 서버단에서 프로그래밍으로 암호화해서 저장함
종류
Oracle,MS-SQL, My-SQL 등등
TCP/IP 프로토콜
정의
네트워크와 네트워크를 연결 하기 위한 포로토콜.
여러 개의 네트웍을 연결해서 데이터를 서로 주고 받기위해, 서로 상호연결하기위한 프로토콜이다.
컴퓨터 네트워크에서 사용되는 메시지 교환규칙 프로토콜.
다양한 형태의 물리적 네트워크에 연결된 컴퓨터를 통해 네트워크 상의 다른 컴퓨터와 통신을 하기 위한 절차 를 정의.
역사
ARPANET(Advanced Research Project Agency Network) 미국방성 프로젝트 수행 목적으로 구축.
NSFNET(the US National Science Foundation Network)
Internet = ARPANET + NSFNET : 1980 년대 중반
프로그래밍
Debug
프로그램에서 발생하는 오류를 부를 때 버그라고 함. 이때 발생하는 오류를 수정하는 것을 디버깅한다고 부름
반복문이나 기타 오류 발생시 모니터링 하기 좋음
비주얼 스튜디오
F9 :중단점 설정(브레이크 포인트)
F5 : 디버그 시작
Shift +F5 : 디버그 중지(탈출)
F10 : 프로시저 단위 실행 ( 다음줄 코드를 실행하지만 함수를 통한 실행은 제외됨
F11 : 코드를 한단계씩 실행
C언어 컴파일러 연산자 우선순위
순위
종류
연산자
연산 방향
1
괄호, 배열, 구조체 ( ) . [ ] -> :: 좌→우
2
단항 연산자 *(간접) &(주소) ! - ++ -- +(부호) -(부호) sizeof new delete ~(비트연산NOT)
우→좌
3
구조체 결합연산자 .* ->* 좌→우
4
승제 연산자 * / % 좌→우
5
가감 연산자 + - 좌→우
6
시프트(Shift) 연산자 << >> 좌→우
7
비교 연산자 < <= > >= 좌→우
8
등가 연산자 == != 좌→우
9
비트 연산자 AND & 좌→우
10
비트 연산자 XOR ^ 좌→우
11
비트 연산자 OR | 좌→우
12
논리 연산자 AND && 좌→우
13
논리 연산자 OR || 좌→우
14
조건 연산자 ?: 우→좌
15
대입 연산자 = *= /= += -= %= <<= >>= &= ^= |= 우→좌
16
나열 연산자 , 좌→우
cpu는 +연산을 가장 우선적으로 처리하므로 코드상에서 +같이 연산사 우선순위에 든것을 먼저 처리하는게
속도 향상에 좋음
C언어
제 4장
코드 열기 접기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/************************ Notation ***************/
#include < stdio.h>
int main(void )
{
int num1 = 0xA7 ;
int num2 = 0x43 ;
int num3 = 032 ;
int num4 = 024 ;
printf ("0xA7의 10진수 정수 값 : %d \n" , num1);
printf ("0x43의 10진수 정수 값 : %d \n" , num2);
printf (" 032의 10진수 정수 값 : %d \n" , num3);
printf (" 024의 10진수 정수 값 : %d \n" , num4);
printf ("%d-%d=%d \n" , num1, num2, num1 - num2);
printf ("%d+%d=%d \n" , num3, num4, num3 + num4);
return 0 ;
}
/************************************************/
/*****************************float***/
#include < stdio.h>
int main(void )
{
int i;
float num = 0. 0 ;
for (i = 0 ; i < 100 ; i+ + )
{
num = num + 0. 1 ; // 연산100회 진행
}
printf ("0.1을 100번 더한결과 :%f \n" , num);
return 0 ;
}
/*******************************************/
/******************* BitAndOperation *****/
#include < stdio.h>
int main(void )
{
int num1 = 15 ;
int num2 = 20 ;
int num3 = num1 & num2;
printf ("AND 연산의 결과 : %d \n" , num3);
return 0 ;
}
/***********************************************/
/********** Bit or Operation *****************/
#include < stdio.h>
int main(void )
{
int num1 = 15 ;
int num2 = 20 ;
int num3 = num1 | num2;
printf ("OR 연산의 결과 : %d \n" , num3);
return 0 ;
}
/**********************************************/
/*************** Bit XOR Operation ***********/
#include < stdio.h>
int main(void )
{
int num1 = 15 ;
int num2 = 20 ;
int num3 = num1 ^ num2;
printf ("XOR 연산의 결과 : %d \n" , num3);
return 0 ;
}
/*********************************************/
/*************** Bit Not Operation *********/
#include < stdio.h>
int main(void )
{
int num1 = 15 ;
int num2 = ~num1;
printf ("Not 연산의 결과 : %d \n" , num2);
return 0 ;
}
/*****************************************/
/*************** Bit Left Shift ******/
#include < stdio.h>
int main(void )
{
int num = 15 ;
int result1 = num < < 1 ;
int result2 = num < < 2 ;
int result3 = num < < 3 ;
printf ("1칸 이동 결과 : %d \n" , result1);
printf ("2칸 이동 결과 : %d \n" , result2);
printf ("3칸 이동 결과 : %d \n" , result3);
return 0 ;
}
/***********************************************/
/*************** Bit Right Shift ***********/
#include < stdio.h>
int main(void )
{
int num = - 16 ;
printf ("2칸 오른쪽 이동 결과 : %d \n" , num > > 2 );
printf ("3칸 오른쪽 이동 결과 : %d \n" , num > > 3 );
return 0 ;
}
/***********************************************/
cs
접기
5장
코드 열기 접기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*********** 상수와 기본 자료형 *************/
/********************SizeofOperator*******************/
#include < stdio.h>
int main(void )
{
char ch = 9 ;
int inum = 1052 ;
double dnum = 3. 1415 ;
printf ("변수 ch의 크기 : %d \n" , sizeof (ch));
printf ("변수 inum의 크기 : %d \n" , sizeof (inum));
printf ("변수 dnum의 크기 : %d \n" , sizeof (dnum));
printf (" char의 크기 : %d \n" , sizeof (char ));
printf (" int의 크기 : %d \n" , sizeof (int ));
printf (" long의 크기 : %d \n" , sizeof (long ));
printf ("long long의 크기 : %d \n" , sizeof (long long ));
printf (" float의 크기 : %d \n" , sizeof (float ));
printf (" double의 크기 : %d \n" , sizeof (double ));
return 0 ;
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/******************char short base add***********/
#include < stdio.h>
int main(void )
{
char num1 = 1 ;
char num2 = 2 ;
char result1 = 0 ;
short num3 = 300 ;
short num4 = 400 ;
short result2 = 0 ;
printf ("size of num1 & num2 : %d, %d \n" , sizeof (num1), sizeof (num2));
printf ("size of num3 & num4 : %d, %d \n" , sizeof (num3), sizeof (num4));
printf ("size of char add : %d \n" , sizeof (num1+ num2));
printf ("size of short add : %d \n" , sizeof (num3 + num4));
result1 = num1 + num2;
result2 = num3 + num4;
printf ("size of result1 & result2 : %d, %d \n" , sizeof (result1), sizeof (result2));
return 0 ;
}
/****************************************************/
/********* CircleArea **********/
#include < stdio.h>
int main(void )
{
double rad;
double area;
printf ("원 반지름 입력: " );
scanf ("%lf" , &rad);
area = rad* rad* 3. 1415 ;
printf ("원의 넓이 : %f \n" ,area);
return 0 ;
}
/***********************************************/
/******** How char **************************/
#include < stdio.h>
int main(void )
{
char ch1 = 'A' ;
char ch2 = 65 ;
int ch3 = 'Z' ;
int ch4 = 90 ;
printf ("%c %d \n" , ch1, ch1);
printf ("%c %d \n" , ch2, ch2);
printf ("%c %d \n" , ch3, ch3);
printf ("%c %d \n" , ch4, ch4);
return 0 ;
}
/**************************************/
/********* literalSize *************/
#include < stdio.h>
int main(void )
{
printf ("literal int Size : %d \n" , sizeof (7 ));
printf ("literal double Size : %d \n" , sizeof (7. 14 ));
printf ("literal char Size : %d \n" , sizeof ('A' ));
return 0 ;
}
/**********************/
/********* AutoConvOne *************/
#include < stdio.h>
int main(void )
{
double num1 = 245 ;
int num2 = 3. 1415 ;
int num3 = 129 ;
char ch = num3;
printf ("정수 245를 실수로: %f \n" , num1);
printf ("실수 3.1415를 정수로: %d \n" , num2);
printf ("큰 정수 129를 작은정수로: %d \n" , ch);
return 0 ;
}
/**********************/
/********* convDiv ************/
#include < stdio.h>
int main(void )
{
int num1 = 3 ;
int num2 = 4 ;
double divResult;
divResult = (double )num1 / num2;
printf ("나눗셈 결과: %f \n" , divResult);
return 0 ;
}
/**********************/
cs
접기
7~8장
코드열기 접기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/***********6장 ************/
/****using ps********/
#include < stdio.h>
int main(void )
{
printf ("%s, %s, %s \n" , "AAA" , "BBB" , "CCC" );
return 0 ;
}
/***********************/
/************* Chapter 7 ************************/
/****** Simple while *************/
#include < stdio.h>
int main(void )
{
int num = 0 ;
while (num < 5 )
{
printf ("Hello world! %d \n" , num);
num+ + ;
}
return 0 ;
}
/**********************************/
/******** Two to Nine **********************/
#include < stdio.h>
int main(void )
{
int cur = 2 ;
int is = 0 ;
while (cur < 10 )
{
is = 1 ;
while (is < 10 )
{
printf ("%d x %d = %d \n" , cur, is, cur* is);
+ + is;
}
printf ("\n" );
+ + cur;
}
return 0 ;
}
/*********************************/
/*********** usefulDoWhile ************************/
#include < stdio.h>
int main(void )
{
int total = 0 ;
int num = 0 ;
do
{
printf ("정수 입력(0 to quit):" );
scanf ("%d" , &num);
total + = num;
} while (num ! = 0 );
printf ("합계: %d \n" , total);
return 0 ;
}
/***********************************************/
/************* Chapter 8 ************************/
/*************** CalOne 에 else if 추가**********************/
#include < stdio.h>
int main(void )
{
int opt;
double num1;
double num2;
double result;
printf ("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈 \n" );
printf ("선택? " );
scanf ("%d" , &opt);
printf ("두 개의 실수 입력: " );
scanf ("%lf %lf" , &num1, &num2);
if (opt = = 1 )
{
result = num1 + num2;
}
else if (opt = = 2 )
{
result = num1 - num2;
}
else if (opt = = 3 )
{
result = num1 * num2;
}
else // if (opt == 4)
{
result = num1 / num2;
}
printf ("결과 : %f \n" , result);
return 0 ;
}
cs
접기