메모리 보호가 없음
- 응용 프로그램이 잘못된 ㅔㅁ모리르 참조하는 경우, 커널에서 이 오류를 감지하여 SIGSEGV 시그널을 보냄으로써 그 프로세스를 종료시킨다. 그러나 커널이 잘못된 메모리를 참조하는 경우에는 이를 제어하기란 쉽지 않다.
- 또한, 커널 메모리는 페이징되지 않는다. 즉 1바이트를 사용하면 가용한 물리적 메모리에서 1바이트가 감소하는 것임(가상 메모리 아님)
부동소수점 연산의 어려움
작은 고정 크기의 스택
- 유저 공간에서는 커다란 구조체나 큰 배열 등을 포함한 많은 변수를 스택에 할당할 수 있는데, 그 이유는 유저 공간에서는 크기가 동적으로 늘어날 수 있는 큰 스택을 갖고 있기 때문이다.
- 커널 스택은 크지고, 동적이지도 않다. 즉 작고 고정적이다. 커널 스택의 정확안 크기는 아키텍처별로 다르다. x86계열에서는 컴파일시 스택크기를 4 또는 8KB로 정할 수 있다.
- 관습저긍로 커널 스택은 두 개의 페이지로 구성되는데 (32비트는 8KB 2개, 64비트는 16KB)
동기화와 동시성
- 커널은 경쟁 상태에 놓이기 쉽다. 유저 공간의 싱글 스레드 응용 프로그램과는 달리ㅡ 커널은 공유 자원에 대한 동시적인 접근을 허용해야 하므로, 경쟁을 방지하기 위한 동기화가 필요하다.
- 응용 프로그램이 잘못된 ㅔㅁ모리르 참조하는 경우, 커널에서 이 오류를 감지하여 SIGSEGV 시그널을 보냄으로써 그 프로세스를 종료시킨다. 그러나 커널이 잘못된 메모리를 참조하는 경우에는 이를 제어하기란 쉽지 않다.
- 또한, 커널 메모리는 페이징되지 않는다. 즉 1바이트를 사용하면 가용한 물리적 메모리에서 1바이트가 감소하는 것임(가상 메모리 아님)
부동소수점 연산의 어려움
작은 고정 크기의 스택
- 유저 공간에서는 커다란 구조체나 큰 배열 등을 포함한 많은 변수를 스택에 할당할 수 있는데, 그 이유는 유저 공간에서는 크기가 동적으로 늘어날 수 있는 큰 스택을 갖고 있기 때문이다.
- 커널 스택은 크지고, 동적이지도 않다. 즉 작고 고정적이다. 커널 스택의 정확안 크기는 아키텍처별로 다르다. x86계열에서는 컴파일시 스택크기를 4 또는 8KB로 정할 수 있다.
- 관습저긍로 커널 스택은 두 개의 페이지로 구성되는데 (32비트는 8KB 2개, 64비트는 16KB)
동기화와 동시성
- 커널은 경쟁 상태에 놓이기 쉽다. 유저 공간의 싱글 스레드 응용 프로그램과는 달리ㅡ 커널은 공유 자원에 대한 동시적인 접근을 허용해야 하므로, 경쟁을 방지하기 위한 동기화가 필요하다.
'OS이야기' 카테고리의 다른 글
프로세스 생성 (0) | 2011.10.11 |
---|---|
container_of 매크로 (1) | 2011.10.11 |
삽입정렬 (0) | 2011.10.11 |
커널 시작 과정 (0) | 2011.09.22 |
실시간 CPU 스케줄링 - Proportional Share 스케줄링 (0) | 2010.07.30 |