본문 바로가기

분류 전체보기

리눅스 기반 소스를 윈도우 기반으로 바꾸는 4가지 방법 1. WSAStartup, WSACleanup 함수호출을 통한 소켓 라이브러리의 초기화와 해제 2. 자료형과 변수의 이름을 윈도우 스타일로 변경하기 3. 데이터 송수신을 위해서 read, write 함수 대신 recv, send 함수 호출하기 4. 소켓의 종료를 위해서 close 대신 closesocket 함수 호출하기 더보기
21장 Asynchronous Notification IO 모델 동기와 비동기에 대한 이해 위 : 동기 아래 : 비동기 *동기화된 입출력의 단점과 비동기의 해결책 동기화된 입출력의 단점 입출력이 진행되는 동안 호출된 함수가 반환을 하지 않으니, 다른 일을 할 수가 없다 비동기의 해결책 데이터의 송수신 완료에 상관없이, 호출된 함수가 반환을 하기 때문에 다른 일을 진행 할 수 있음 *Notification(알림) IO(입출력) 입력버퍼에 데이터가 수신되어서 데이터의 수신이 필요하거나, 출력버퍼가 비어서 데이터의 전송이 가능한 상황의 알림 *동기화된 Notification IO모델 가장 대표적인 동기화된 Notification IO모델은 select방식 IO가 필요한 또는 가능한 상황이 되는 시점이(간단히 말해서 IO관련 이벤트의 발생 시점이) select함수가 반환하는.. 더보기
20장 windows에서의 쓰레드 동기화 모드 종류 설명 유저모드 응용 프로그램이 실행되는 기본모드로, 물리적인 영역으로의 접근이 허용 되지 않으며, 접근할 수 있는 메모리의 영역에도 제한이 따른다 커널모드 운영체제가 실행될 때의 모드로, 메모리뿐만 아니라, 하드웨어의 접근에도 제한이 따르지 않음(리소스, 커널오브젝트에 관련된 모든 일) 유저모드 및 커널모드에서 오브젝트 생성 및 리소스와의 연결 동기화와 쓰레드에 관한 함수 사용 순서 WaitForSignalObject함수 리소스에 따른 상태 동기화 모드 종류 설명 유저모드 속도가 빠름(커널모드로의 전환이 없음), 기능이 제한적, 하나의 프로세스 안의 쓰레드 간의 동기화 가능 기법 : CRITICAL_SECTION 커널모드 속도가 느림, 제공되는 기능이 많음, 서로 다른 프로세서간의 동기화 가능.. 더보기
필기시험 코딩 오버라이딩 개념 다형성 polymorphism unicode, utf-8 HEX 디버깅하는 C언어 코딩 strcat함수 코딩 c언어 코드의 속도를 향상시키기(txt파일에서 문장을 char[]배열에 저장한 후 그 배열 뒤에 strcat함수를 이용하여 추가적으로 문장을 넣은 뒤에 txt파일에 저장) \r\n으로 저장된 파일의 내용을 \n으로 바꾸기 string, stringbuffer의 차이 sql에서 leftjoin sql에서 join 자바코드 a,,b,c가 있을 때 ,로 구분하는 함수의 사용법 자바코드 링크드리스트 설명 c언어에서 if문조건 더보기
19장 windows에서의 쓰레드 사용 윈도우는 가장 기본이 되는 프로그램의 main함수가 반환되면 그 안에 담겨있는 모든 쓰레드들도 종료 리눅스는 가장 기본이 되는 프로그램의 main함수가 반환되어도 그 안에 담겨있는 모든 쓰레드들은 남아있음(리눅스는 쓰레드를 삭제해주는 함수를 꼭 사용해야 함) 핸들, 커널오브젝트, 리소스의 관계 커널오브젝트를 만드는 이유 : 리소스를 효과적으로 관리하기 위해서 리소스를 쓰레드라고 가정 1. 프로그램에서 쓰레드를 만들어 달라고 요청 2. OS는 쓰레드(리소스)를 생성하고 그에 관한 명세서로 커널오브젝트를 만듬 3. OS는 프로그램에게 커널오브젝트를 가리키는 handle을 전달 1. 프로그램이 핸들에 어떠한 행위를 요청 2. OS는 리소스에 요청을 반영 3. OS는 커널오브젝트에 리소스의 변화를 반영 Crea.. 더보기
정적 라이브러리와 동적라이브러리 차이 정적 라이브러리(*.lib)란 말 그대로 동적이 아닌 정적으로 프로세스에 붙는 라이브러리입니다. 여기서 라이브러리란 printf와 같은 자주 쓰는 함수들의 정의들이 들어가 있는 파일입니다. DLL은 동적 라이브러리, 동적 연결 라이브러리라고도 합니다. (Dynamic Link Library) 정적 라이브러리와 DLL의 차이는 라이브러리라는 측면에서는 동일하지만 정적 라이브러리는 정적이고, DLL은 동적이라고 할 수 있습니다. 즉 정적 라이브러리는 컴파일 할 때 실행파일에 존속되지만, DLL은 필요할 때 가져다 쓸 수 있어 메모리적인 측면에서 효율적이라고 볼 수 있습니다. 런타임 라이브러리는 동적 라이브러리, 공유 라이브러리 등으로 불려지는것 같습니다. 런타임 라이브러이의 가장 대표적인 것이 바로 stan.. 더보기
cpu 오버 클럭방법 cpu 오버 클럭방법 3가지 1. cpu의 배수를 높임 2. 메인보드의 베이스클럭을 높임 3. 바이오스의 CPU Core Voltage 항목을 높여줌 더보기
18장 멀티쓰레드 기반의 서버구현 하나의 cpu에서 함수를 동시에 실행한다는 것은 context switch이 자주 빠르게 일어난다는 의미 예) 쓰레드1 처리 도중-> 쓰레드1의 내용 저장 -> 쓰레드2를 처리 -> 쓰레드2를 처리를 완료하고 쓰레드1의 내용을 복원 -> 쓰레드1 처리완료 쓰레드 구조 쓰레드는 데이터 영역, 힙 영역, 코드 영역은 공유 하지만 스택영역은 각자 독립적으로 사용 코드영역: 프로그램의 실제 코드가 저장되어 있는 영역 스택영역 : 로컬변수, 함수에 호출에 관련된 정보, 임시데이터가 저장되는 영역 힙영역 : 동적 메모리 할당에 사용되는 영역 데이터영역 : 전역변수등의 데이터가 저장되는 영역 -D_REENTRANT(= 헤더파일 선언 이전에 매크로 _REENTRANT를 정의) 임계영역에서 동시호출시 문제가 발생할 수 .. 더보기