만들면서 배우는 OS 커널의 구조와 원리 ch6. 보호

CPU의 체크 포인트 Limit 체크 Limit 체크를 하지 않으면 다른 세그먼트에 있는 코드나 데이터가 overwrite 될 염려가 있음 일반 보호 예외(#GP)를 발생시키는 경우 오프셋이 유효 Limit보다 큰 바이트 오프셋이 유호 Limit-1바이트보다 큰 워드 오프셋이 유효 Limit-3바이트보다 큰 더블워드 오프셋이 유효 Limit-7바이트보다 큰 쿼드워드 GDT, IDT : GDTR, IDTR의 6바이트 중... [Read More]
Tags: kernel os

만들면서 배우는 OS 커널의 구조와 원리 ch5. Task Switching

TSS(Task State Segment) 선점형 방식 : 프로그램이 어떤 상황이던 일단 정지시키고 다른 프로그램이 이전에 실행했던 곳부터 다시 실행되도록 하는 방식 CPU에서 수행되던 프로그램의 레지스터 값들을 모두 램에 저장 한 후, 다른 프로그램의 레지스터 값을 CPU에 불러와서 다시 실행되도록 해야 함 태스크 스위칭을 구현하기 위해서 RAM 상에 레지스터 값들을 보존해야 할... [Read More]
Tags: kernel os

만들면서 배우는 OS 커널의 구조와 원리 ch4. 인터럽트와 예외

인터럽트 : CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 장치 혹은 예외 상황이 발생하여 처리가 필요할 경우 CPU에 알려 처리할 수 있도록 하는 것 IDT 2번째 16비트 한 워드 : 핸들러가 위치한 코드 세그먼트의 셀렉터 값, 커널 모드 코드 세그먼트 셀렉터 값을 기입하면 됨 P 비트 : 커널 모드의 코드... [Read More]
Tags: kernel os

만들면서 배우는 OS 커널의 구조와 원리 ch3. Protected Mode로 변환

멀티 태스킹이 가능한 32비트 커널을 만들기 위해서는 CPU가 Protected Mode로 동작하도록 하는 것이 필수 Real Mode의 한계 PC가 부팅할 때 맨 처음 동작하는 CPU의 모드 16비트로 동작하기 때문에 모든 레지스터를 16비트의 형태로 사용 16비트 Real Mode에서는 offset을 16비트 레지스터를 사용 세그먼트 영역 안에서 0x0000~0xFFFF 밖으로 나갈 수 없음 모든 메모리... [Read More]
Tags: kernel os