Micro Kernel- 꼭 필요한 핵심적인 기능만 남겨둔 최소한의 커널- 커널에서 제공하는 기능 : IPC, 동기화, 프로세스/메모리 관리 등- 사용자 프로세스 형태로 제공 : 파일시스템, 네트워크, 입출력 장치 관리- 입출력장치에 대한 서비스도 인터럽트가 들어오면 커널이 인터럽트를 처리하는 프로세스에게 메시지를 보내어 처리해야함- 이식성이 뛰어나 커널 수행 중에도 서비스를 동적으로 추가할 수 있다.> 모든 기능을 다 하지 않고 유저레벨로 올려서 처리하므로 이식성이 뛰어나고 안전하지만 느리다는 단점이 있다. Monolithic Kernel- 모든 커널의 기능을 커널의 내부에 시스템호출과 인터럽트 처리 부분으로 포함하여 제공- 모든 서비스는 시스템 호출을 통해 제공하는 거대한 객체에 비유될 수 있다.- ..
DeadLock- 한정된 자원을 여러 곳에서 사용하려고 할 때 발생한다. 발생 조건- 상호배제(Mutual Exclusion) : 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구- 점유대기(Hold and wait) : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.- 비선점(No preemption) : 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.- 순환대기(Circular wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다. Deadlock 처리교착상태 회피 - 은행원 알고리즘- 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정상태로 남아있게 되는지를 사전에 검사하여 교착 상태를 회피하는 기법- 안정 상..
프로세스- 실행 중인 프로그램을 의미한다.- 리소스와 스레드로 구성된다.- 코드, 스택, 데이터, 힙 영역으로 이루어져있다. 스레드- 프로세스 내에서 생성,실행되는 하나의 실행주체이며 여러 개가 동시에 생성이 가능하다.- 자원소모가 줄어들고 응답시간이 단축된다. - 코드, 데이터, 힙 영역을 공유하고 스택과 레지스터를 스레드마다 각각 할당받는다.- context switch할 때, stack영역만 switch하면 되므로 프로세스 스위칭보다 빠르다. Multiprogramming / Multiprocessing / MultithreadingMultiprogramming- Memory 관점에서 여러 개의 프로세스 수행하는 것- 프로세서의 자원낭비를 최소화하기 위해 낭비되는 시간을 다른 프로그램(프로세스) 수..
struct (구조체) int main() { struct Point { int x; int y; }; Point p1 = {30, 50}; Point p2; p2 = p1; return 0; }위의 예제를 보면 Point라는 구조체를 정의한것을 볼 수 있다. 특징- 구조체의 초기화는 배열을 초기화하던 방법과 비슷한 방법을 사용해서 할 수 있다.- 점(dot)을 사용해서 멤버에 접근한다.- 구조체를 정의하고 나서 마지막에 꼭 세미콜론(;)을 붙여야한다. class class Point { public : int x, y;// 멤버 변수 Point();// 생성자 }; Point::Point() { x = 0; y = 0; } int main() { Point pt;// 객체 생성 return 0; }위의..
friend #include class CComplex{ float a, b; public : CComplex(float ta = 0.0, float tb = 0.0) { a = ta; b = tb; } void Add(CComplex c) { a += c.a; b += c.b; } }; int IsEqual(CComplex a, CComplex b) { return a.a==b.a && a.b==b.b ; } void main() { CComplex a(1.0, 2.0), b(1.0, 2.0); printf("%d \n",IsEqual(a, b)); } 위 프로그램은 컴파일이 되지 않는다. 이유는 IsEqual()이 CComplex의 private 멤버 a와 b를 접근하기 때문이다. 이에 대한 해결 방..
안전한 문자열 함수- StringCbCopy : 버퍼의 크기 ( 버퍼가 몇 바이트의 크기인가 ) HRESULT StringCbCopy ( OUT LPTSTR pszDest,// 복사 결과를 저장할 버퍼 IN size_t cbDest, (sizeof(TCHAR))// 복사 결과를 저장할 버퍼의 크기 => pszDest의 크기 IN LPCTSTR pszSrc// 복사 원본 (NULL 포함된 문자열) ) - StringCchCopy : 버퍼의 길이 ( 버퍼가 문자열 몇 개를 담는가 ) HRESULT StringCchCopy ( OUT LPTSTR pszDest,// 복사 결과를 저장할 버퍼 IN size_t cchDest, (STRSAFE_MAX_CCH)// 복사 결과를 저장할 버퍼의 크기 => 저장할 글자 ..
malloc / free- malloc 은 "stdlib.h" 헤더파일에 포함되어 있다.- malloc 함수는 입력받은 바이트 크기만큼 메모리 공간을 Heap Memory에 할당해준다. 그리고 void *를 리턴하므로 sizeof 연산자와 캐스트 연산자가 필요하다. - malloc 은 할당만 해주고 초기화는 해주지않는다.- realloc으로 크기를 바꿔 재할당 할 수 있다.- malloc으로 할당 받은 메모리는 free를 통해 해제한다.예제) int *p; p = (int *)malloc(sizeof(int)); free(p); new / delete- new/delete는 c++ 언어에서 키워드로 제공한다. 따라서 헤더파일이 필요없다. - new 키워드 역시 Heap 에 할당하고, 할당할 타입을 지정하..
MBCS ( MultiByteCharacterSet )- 다양한 Byte 수를 사용(1Byte + 2Byte)- 아스키코드 WBCS ( WideByteCharacterSet )- 2Byte만 사용- 유니코드일반 유니코드 : 모든 글자를 2byte로 표현utf-8 유니코드 : 영문/숫자/기호는 1byte, 한글/한자는 3byte로 표현 1. 유니코드 → 멀티바이트/UTF-8WideCharToMultiByte) int WideCharToMultiByte( UINT uCodePage, // code page DWORD dwFlags, // 플래그 PCWSTR pWideCharStr, // 변환원의 문자열 주소 int cchWideChar, // 문자열의 길이 PSTR pMultiByteStr, // 버퍼 주소..
- Total
- Today
- Yesterday
- layout
- OS
- 안드로이드
- Android
- 스프링부트
- 윈도우
- 정렬 알고리즘
- adapter
- handshake
- 알고리즘
- C++
- BOJ
- 백준알고리즘
- debug
- HTTP
- C
- listview
- 퀵정렬
- 운영체제
- LinearLayout
- 백준
- 네트워크
- 이진탐색트리
- RelativeLayout
- DATABASE
- windows
- WinDbg
- frameLayout
- ConstraintLayout
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |